vaclient was updated to use the new "instance only" REST api calls (see "What's Changed" section of release notes). These calls are not supported by older versions of the service so vaclient will fail as follows:
./vaclient/vaclient.sh run object_detection/person_vehicle_bike https://github.com/intel-iot-devkit/sample-videos/blob/master/person-bicycle-car-detection.mp4?raw=true
<snip>
Starting pipeline object_detection/person_vehicle_bike, instance = 1
Got unsuccessful status code: 400
"Invalid Pipeline or Version"
Error in pipeline, please check pipeline-server log messages
Sever log from v0.7.0 or earlier will show the following
vaclient has started the pipeline successfully and it will run to completion, it's the status call that has failed.
The simplest workaround is ensure vaclient and the service are using the same container version.
Any client, such as vaclient, that has been updated to use the new "instance only" call (GET /pipelines/status/{instance_id}) will fail in a similar way. As a workaround update client to use legacy status call (GET /pipelines/{name}/{version}/{instance_id}/status) if "instance only" call fails.
For vaclient, this can be done by updating get_pipleline_status as follows. More elegant solutions are possible.
legacy_status_url = None
def get_pipeline_status(server_address, instance_id, show_request=False):
global legacy_status_url
status = None
if not legacy_status_url:
status_url = urljoin(server_address,
"/".join(["pipelines",
"status",
str(instance_id)]))
status = get(status_url, show_request)
if status:
return status
pipelines_url = urljoin(server_address, "pipelines")
response = get(pipelines_url, show_request)
if not response:
return None
pipeline = response[0]
legacy_status_url = urljoin(server_address,
"/".join(["pipelines",
pipeline["name"],
pipeline["version"],
str(instance_id),
"status"]))
response = get(legacy_status_url, show_request)
return response
vaclient was updated to use the new "instance only" REST api calls (see "What's Changed" section of release notes). These calls are not supported by older versions of the service so vaclient will fail as follows:
Sever log from v0.7.0 or earlier will show the following
vaclient has started the pipeline successfully and it will run to completion, it's the status call that has failed.
The simplest workaround is ensure vaclient and the service are using the same container version.
Any client, such as vaclient, that has been updated to use the new "instance only" call (
GET /pipelines/status/{instance_id}
) will fail in a similar way. As a workaround update client to use legacy status call (GET /pipelines/{name}/{version}/{instance_id}/status
) if "instance only" call fails.For vaclient, this can be done by updating get_pipleline_status as follows. More elegant solutions are possible.