.. This work is licensed under a Creative Commons Attribution 4.0 International .. License. .. http://creativecommons.org/licenses/by/4.0 .. (c) OPNFV, Huawei Technologies Co.,Ltd and others. ===================== Yardstick Restful API ===================== Abstract ======== Yardstick support restful API since Danube. Available API ============= /yardstick/env/action --------------------- Description: This API is used to prepare Yardstick test environment. For Euphrates, it supports: 1. Prepare yardstick test environment, including setting the ``EXTERNAL_NETWORK`` environment variable, load Yardstick VM images and create flavors; 2. Start an InfluxDB Docker container and config Yardstick output to InfluxDB; 3. Start a Grafana Docker container and config it with the InfluxDB. Which API to call will depend on the parameters. Method: POST Prepare Yardstick test environment Example:: { 'action': 'prepare_env' } This is an asynchronous API. You need to call ``/yardstick/asynctask`` API to get the task result. Start and config an InfluxDB docker container Example:: { 'action': 'create_influxdb' } This is an asynchronous API. You need to call ``/yardstick/asynctask`` API to get the task result. Start and config a Grafana docker container Example:: { 'action': 'create_grafana' } This is an asynchronous API. You need to call ``/yardstick/asynctask`` API to get the task result. /yardstick/asynctask -------------------- Description: This API is used to get the status of asynchronous tasks Method: GET Get the status of asynchronous tasks Example:: http://<SERVER IP>:<PORT>/yardstick/asynctask?task_id=3f3f5e03-972a-4847-a5f8-154f1b31db8c The returned status will be 0(running), 1(finished) and 2(failed). NOTE:: <SERVER IP>: The ip of the host where you start your yardstick container <PORT>: The outside port of port mapping which set when you start start yardstick container /yardstick/testcases -------------------- Description: This API is used to list all released Yardstick test cases. Method: GET Get a list of released test cases Example:: http://<SERVER IP>:<PORT>/yardstick/testcases /yardstick/testcases/release/action ----------------------------------- Description: This API is used to run a Yardstick released test case. Method: POST Run a released test case Example:: { 'action': 'run_test_case', 'args': { 'opts': {}, 'testcase': 'opnfv_yardstick_tc002' } } This is an asynchronous API. You need to call ``/yardstick/results`` to get the result. /yardstick/testcases/samples/action ----------------------------------- Description: This API is used to run a Yardstick sample test case. Method: POST Run a sample test case Example:: { 'action': 'run_test_case', 'args': { 'opts': {}, 'testcase': 'ping' } } This is an asynchronous API. You need to call ``/yardstick/results`` to get the result. /yardstick/testcases/<testcase_name>/docs ----------------------------------------- Description: This API is used to the documentation of a certain released test case. Method: GET Get the documentation of a certain test case Example:: http://<SERVER IP>:<PORT>/yardstick/taskcases/opnfv_yardstick_tc002/docs /yardstick/testsuites/action ---------------------------- Description: This API is used to run a Yardstick test suite. Method: POST Run a test suite Example:: { 'action': 'run_test_suite', 'args': { 'opts': {}, 'testsuite': 'opnfv_smoke' } } This is an asynchronous API. You need to call /yardstick/results to get the result. /yardstick/tasks/<task_id>/log ------------------------------ Description: This API is used to get the real time log of test case execution. Method: GET Get real time of test case execution Example:: http://<SERVER IP>:<PORT>/yardstick/tasks/14795be8-f144-4f54-81ce-43f4e3eab33f/log?index=0 /yardstick/results ------------------ Description: This API is used to get the test results of tasks. If you call /yardstick/testcases/samples/action API, it will return a task id. You can use the returned task id to get the results by using this API. Method: GET Get test results of one task Example:: http://<SERVER IP>:<PORT>/yardstick/results?task_id=3f3f5e03-972a-4847-a5f8-154f1b31db8c This API will return a list of test case result /api/v2/yardstick/openrcs ------------------------- Description: This API provides functionality of handling OpenStack credential file (openrc). For Euphrates, it supports: 1. Upload an openrc file for an OpenStack environment; 2. Update an openrc; 3. Get openrc file information; 4. Delete an openrc file. Which API to call will depend on the parameters. METHOD: POST Upload an openrc file for an OpenStack environment Example:: { 'action': 'upload_openrc', 'args': { 'file': file, 'environment_id': environment_id } } METHOD: POST Update an openrc file Example:: { 'action': 'update_openrc', 'args': { 'openrc': { "EXTERNAL_NETWORK": "ext-net", "OS_AUTH_URL": "http://192.168.23.51:5000/v3", "OS_IDENTITY_API_VERSION": "3", "OS_IMAGE_API_VERSION": "2", "OS_PASSWORD": "console", "OS_PROJECT_DOMAIN_NAME": "default", "OS_PROJECT_NAME": "admin", "OS_USERNAME": "admin", "OS_USER_DOMAIN_NAME": "default" }, 'environment_id': environment_id } } /api/v2/yardstick/openrcs/<openrc_id> ------------------------------------- Description: This API provides functionality of handling OpenStack credential file (openrc). For Euphrates, it supports: 1. Get openrc file information; 2. Delete an openrc file. METHOD: GET Get openrc file information Example:: http://<SERVER IP>:<PORT>/api/v2/yardstick/openrcs/5g6g3e02-155a-4847-a5f8-154f1b31db8c METHOD: DELETE Delete openrc file Example:: http://<SERVER IP>:<PORT>/api/v2/yardstick/openrcs/5g6g3e02-155a-4847-a5f8-154f1b31db8c /api/v2/yardstick/pods ---------------------- Description: This API provides functionality of handling Yardstick pod file (pod.yaml). For Euphrates, it supports: 1. Upload a pod file; Which API to call will depend on the parameters. METHOD: POST Upload a pod.yaml file Example:: { 'action': 'upload_pod_file', 'args': { 'file': file, 'environment_id': environment_id } } /api/v2/yardstick/pods/<pod_id> ------------------------------- Description: This API provides functionality of handling Yardstick pod file (pod.yaml). For Euphrates, it supports: 1. Get pod file information; 2. Delete an openrc file. METHOD: GET Get pod file information Example:: http://<SERVER IP>:<PORT>/api/v2/yardstick/pods/5g6g3e02-155a-4847-a5f8-154f1b31db8c METHOD: DELETE Delete openrc file Example:: http://<SERVER IP>:<PORT>/api/v2/yardstick/pods/5g6g3e02-155a-4847-a5f8-154f1b31db8c /api/v2/yardstick/images ------------------------ Description: This API is used to do some work related to Yardstick VM images. For Euphrates, it supports: 1. Load Yardstick VM images; Which API to call will depend on the parameters. METHOD: POST Load VM images Example:: { 'action': 'load_image', 'args': { 'name': 'yardstick-image' } } /api/v2/yardstick/images/<image_id> ----------------------------------- Description: This API is used to do some work related to Yardstick VM images. For Euphrates, it supports: 1. Get image's information; 2. Delete images METHOD: GET Get image information Example:: http://<SERVER IP>:<PORT>/api/v2/yardstick/images/5g6g3e02-155a-4847-a5f8-154f1b31db8c METHOD: DELETE Delete images Example:: http://<SERVER IP>:<PORT>/api/v2/yardstick/images/5g6g3e02-155a-4847-a5f8-154f1b31db8c /api/v2/yardstick/tasks ----------------------- Description: This API is used to do some work related to yardstick tasks. For Euphrates, it supports: 1. Create a Yardstick task; Which API to call will depend on the parameters. METHOD: POST Create a Yardstick task Example:: { 'action': 'create_task', 'args': { 'name': 'task1', 'project_id': project_id } } /api/v2/yardstick/tasks/<task_id> -------------------------------- Description: This API is used to do some work related to yardstick tasks. For Euphrates, it supports: 1. Add a environment to a task 2. Add a test case to a task; 3. Add a test suite to a task; 4. run a Yardstick task; 5. Get a tasks' information; 6. Delete a task. METHOD: PUT Add a environment to a task Example:: { 'action': 'add_environment', 'args': { 'environment_id': 'e3cadbbb-0419-4fed-96f1-a232daa0422a' } } METHOD: PUT Add a test case to a task Example:: { 'action': 'add_case', 'args': { 'case_name': 'opnfv_yardstick_tc002', 'case_content': case_content } } METHOD: PUT Add a test suite to a task Example:: { 'action': 'add_suite', 'args': { 'suite_name': 'opnfv_smoke', 'suite_content': suite_content } } METHOD: PUT Run a task Example:: { 'action': 'run' } METHOD: GET Get a task's information Example:: http://<SERVER IP>:<PORT>/api/v2/yardstick/tasks/5g6g3e02-155a-4847-a5f8-154f1b31db8c METHOD: DELETE Delete a task Example:: http://<SERVER IP>:<PORT>/api/v2/yardstick/tasks/5g6g3e02-155a-4847-a5f8-154f1b31db8c /api/v2/yardstick/testcases --------------------------- Description: This API is used to do some work related to Yardstick testcases. For Euphrates, it supports: 1. Upload a test case; 2. Get all released test cases' information; Which API to call will depend on the parameters. METHOD: POST Upload a test case Example:: { 'action': 'upload_case', 'args': { 'file': file } } METHOD: GET Get all released test cases' information Example:: http://<SERVER IP>:<PORT>/api/v2/yardstick/testcases /api/v2/yardstick/testcases/<case_name> --------------------------------------- Description: This API is used to do some work related to yardstick testcases. For Euphrates, it supports: 1. Get certain released test case's information; 2. Delete a test case. METHOD: GET Get certain released test case's information Example:: http://<SERVER IP>:<PORT>/api/v2/yardstick/testcases/opnfv_yardstick_tc002 METHOD: DELETE Delete a certain test case Example:: http://<SERVER IP>:<PORT>/api/v2/yardstick/testcases/opnfv_yardstick_tc002 /api/v2/yardstick/testsuites ---------------------------- Description: This API is used to do some work related to yardstick test suites. For Euphrates, it supports: 1. Create a test suite; 2. Get all test suites; Which API to call will depend on the parameters. METHOD: POST Create a test suite Example:: { 'action': 'create_suite', 'args': { 'name': <suite_name>, 'testcases': [ 'opnfv_yardstick_tc002' ] } } METHOD: GET Get all test suite Example:: http://<SERVER IP>:<PORT>/api/v2/yardstick/testsuites /api/v2/yardstick/testsuites ---------------------------- Description: This API is used to do some work related to yardstick test suites. For Euphrates, it supports: 1. Get certain test suite's information; 2. Delete a test case. METHOD: GET Get certain test suite's information Example:: http://<SERVER IP>:<PORT>/api/v2/yardstick/testsuites/<suite_name> METHOD: DELETE Delete a certain test suite Example:: http://<SERVER IP>:<PORT>/api/v2/yardstick/testsuites/<suite_name> /api/v2/yardstick/projects -------------------------- Description: This API is used to do some work related to Yardstick test projects. For Euphrates, it supports: 1. Create a Yardstick project; 2. Get all projects; Which API to call will depend on the parameters. METHOD: POST Create a Yardstick project Example:: { 'action': 'create_project', 'args': { 'name': 'project1' } } METHOD: GET Get all projects' information Example:: http://<SERVER IP>:<PORT>/api/v2/yardstick/projects /api/v2/yardstick/projects -------------------------- Description: This API is used to do some work related to yardstick test projects. For Euphrates, it supports: 1. Get certain project's information; 2. Delete a project. METHOD: GET Get certain project's information Example:: http://<SERVER IP>:<PORT>/api/v2/yardstick/projects/<project_id> METHOD: DELETE Delete a certain project Example:: http://<SERVER IP>:<PORT>/api/v2/yardstick/projects/<project_id> /api/v2/yardstick/containers ---------------------------- Description: This API is used to do some work related to Docker containers. For Euphrates, it supports: 1. Create a Grafana Docker container; 2. Create an InfluxDB Docker container; Which API to call will depend on the parameters. METHOD: POST Create a Grafana Docker container Example:: { 'action': 'create_grafana', 'args': { 'environment_id': <environment_id> } } METHOD: POST Create an InfluxDB Docker container Example:: { 'action': 'create_influxdb', 'args': { 'environment_id': <environment_id> } } /api/v2/yardstick/containers/<container_id> ------------------------------------------- Description: This API is used to do some work related to Docker containers. For Euphrates, it supports: 1. Get certain container's information; 2. Delete a container. METHOD: GET Get certain container's information Example:: http://<SERVER IP>:<PORT>/api/v2/yardstick/containers/<container_id> METHOD: DELETE Delete a certain container Example:: http://<SERVER IP>:<PORT>/api/v2/yardstick/containers/<container_id>