diff options
20 files changed, 257 insertions, 57 deletions
diff --git a/jjb/doctor/doctor.yml b/jjb/doctor/doctor.yml index 2e26071d7..335eb7133 100644 --- a/jjb/doctor/doctor.yml +++ b/jjb/doctor/doctor.yml @@ -27,6 +27,7 @@ jobs: - 'doctor-verify-{stream}' - 'doctor-verify-{installer}-{inspector}-{stream}' + - 'doctor-profiling-{stream}' - job-template: name: 'doctor-verify-{stream}' @@ -170,3 +171,60 @@ publishers: - archive: artifacts: 'tests/*.log' + +- job-template: + name: 'doctor-profiling-{stream}' + + disabled: '{obj:disabled}' + + parameters: + - 'doctor-default' + - string: + name: PROFILER + default: poc + description: "Profiler to be used" + + scm: + - git-scm-gerrit + + triggers: + - 'doctor-experimental' + +##################################### +# parameter macros +##################################### +# TODO(yujunz) replace common parameter in doctor-verify-{stream} with macro +- parameter: + name: 'doctor-default' + parameters: + - project-parameter: + project: '{project}' + - gerrit-parameter: + branch: '{branch}' + - 'opnfv-build-ubuntu-defaults' + +##################################### +# trigger macros +##################################### +- trigger: + name: 'doctor-experimental' + triggers: + - gerrit: + server-name: 'gerrit.opnfv.org' + trigger-on: + - comment-added-contains-event: + comment-contains-value: 'check experimental' + projects: + - project-compare-type: 'ANT' + project-pattern: '{project}' + branches: + - branch-compare-type: 'ANT' + branch-pattern: '**/{branch}' + file-paths: + - compare-type: 'ANT' + pattern: 'tests/**' + skip-vote: + successful: true + failed: true + unstable: true + notbuilt: true diff --git a/jjb/dovetail/dovetail-cleanup.sh b/jjb/dovetail/dovetail-cleanup.sh index f215278db..22b2ba2ce 100755 --- a/jjb/dovetail/dovetail-cleanup.sh +++ b/jjb/dovetail/dovetail-cleanup.sh @@ -2,14 +2,35 @@ [[ $CI_DEBUG == true ]] && redirect="/dev/stdout" || redirect="/dev/null" -echo "Cleaning up docker containers/images..." -# Remove previous running containers if exist +#clean up dependent project docker images, which has no containers and image tag None +clean_images=(opnfv/functest opnfv/yardstick) +for clean_image in "${clean_images[@]}"; do + echo "Removing image $image_id, which has no containers and image tag is None" + dangling_images=($(docker images -f "dangling=true" | grep ${clean_image} | awk '{print $3}')) + if [[ -n ${dangling_images} ]]; then + for image_id in "${dangling_images[@]}"; do + docker rmi $image_id >${redirect} + done + fi +done + +echo "Remove containers with image dovetail:<None>..." +dangling_images=($(docker images -f "dangling=true" | grep opnfv/dovetail | awk '{print $3}')) +if [[ -n ${dangling_images} ]]; then + for image_id in "${dangling_images[@]}"; do + echo "Removing image $image_id with tag None and its related containers" + docker ps -a | grep $image_id | awk '{print $1}'| xargs docker rm -f >${redirect} + docker rmi $image_id >${redirect} + done +fi + +echo "Cleaning up dovetail docker containers/images..." if [[ ! -z $(docker ps -a | grep opnfv/dovetail) ]]; then echo "Removing existing opnfv/dovetail containers..." docker ps -a | grep opnfv/dovetail | awk '{print $1}' | xargs docker rm -f >${redirect} fi -# Remove existing images if exist +echo "Remove dovetail existing images if exist..." if [[ ! -z $(docker images | grep opnfv/dovetail) ]]; then echo "Docker images to remove:" docker images | head -1 && docker images | grep opnfv/dovetail >${redirect} diff --git a/jjb/fuel/fuel-verify-jobs.yml b/jjb/fuel/fuel-verify-jobs.yml index fe8985392..4a76d9da7 100644 --- a/jjb/fuel/fuel-verify-jobs.yml +++ b/jjb/fuel/fuel-verify-jobs.yml @@ -21,13 +21,13 @@ ##################################### phase: - 'basic': - slave-label: 'opnfv-build' + slave-label: 'opnfv-build-ubuntu' - 'build': slave-label: 'opnfv-build-ubuntu' - 'deploy-virtual': - slave-label: 'opnfv-build' + slave-label: 'opnfv-build-ubuntu' - 'smoke-test': - slave-label: 'opnfv-build' + slave-label: 'opnfv-build-ubuntu' ##################################### # jobs ##################################### @@ -97,7 +97,7 @@ project: '{project}' - gerrit-parameter: branch: '{branch}' - - 'opnfv-build-defaults' + - 'opnfv-build-ubuntu-defaults' - 'fuel-verify-defaults': gs-pathname: '{gs-pathname}' diff --git a/jjb/global/releng-macros.yml b/jjb/global/releng-macros.yml index cd92480d4..5b7ef5065 100644 --- a/jjb/global/releng-macros.yml +++ b/jjb/global/releng-macros.yml @@ -355,3 +355,37 @@ name: check-bash-syntax builders: - shell: "find . -name '*.sh' | xargs bash -n" + +- builder: + name: lint-yaml-code + builders: + - shell: | + #!/bin/bash + set -o errexit + set -o pipefail + set -o xtrace + export PATH=$PATH:/usr/local/bin/ + + # install python packages + pip install "yamllint==1.6.0" + + # generate and upload lint log + echo "Running yaml code on $PROJECT ..." + + # Ensure we start with a clean environment + rm -f yaml-violation.log lint.log + + # Get number of yaml violations. If none, this will be an + # empty string: "" + find . \ + -type f -name "*.yml" -print \ + -o -name "*.yaml" -print | \ + xargs yamllint > yaml-violation.log || true + + if [ -s "yaml-violation.log" ]; then + SHOWN=$(cat yaml-violation.log| grep -v "^$" |wc -l) + echo -e "First $SHOWN shown\n---" > lint.log + cat yaml-violation.log >> lint.log + sed -r -i '4,$s/^/ /g' lint.log + fi + diff --git a/jjb/kvmfornfv/kvmfornfv.yml b/jjb/kvmfornfv/kvmfornfv.yml index 33c73f9a7..8ab821c9b 100644 --- a/jjb/kvmfornfv/kvmfornfv.yml +++ b/jjb/kvmfornfv/kvmfornfv.yml @@ -96,19 +96,19 @@ node-parameters: false kill-phase-on: FAILURE abort-all-job: true - - multijob: - name: test - condition: SUCCESSFUL - projects: - - name: 'kvmfornfv-verify-test-{stream}' - current-parameters: false - predefined-parameters: | - GERRIT_BRANCH=$GERRIT_BRANCH - GERRIT_REFSPEC=$GERRIT_REFSPEC - GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER - node-parameters: false - kill-phase-on: FAILURE - abort-all-job: true +# - multijob: +# name: test +# condition: SUCCESSFUL +# projects: +# - name: 'kvmfornfv-verify-test-{stream}' +# current-parameters: false +# predefined-parameters: | +# GERRIT_BRANCH=$GERRIT_BRANCH +# GERRIT_REFSPEC=$GERRIT_REFSPEC +# GERRIT_CHANGE_NUMBER=$GERRIT_CHANGE_NUMBER +# node-parameters: false +# kill-phase-on: FAILURE +# abort-all-job: true - job-template: name: 'kvmfornfv-verify-{phase}-{stream}' @@ -194,8 +194,8 @@ scm: - git-scm - triggers: - - timed: '@midnight' +# triggers: +# - timed: '@midnight' builders: - description-setter: diff --git a/jjb/releng/opnfv-lint.yml b/jjb/releng/opnfv-lint.yml index 7115cce48..a96fce6b0 100644 --- a/jjb/releng/opnfv-lint.yml +++ b/jjb/releng/opnfv-lint.yml @@ -9,6 +9,7 @@ jobs: - 'opnfv-lint-verify-{stream}' + - 'opnfv-yamllint-verify-{stream}' stream: - master: @@ -64,3 +65,55 @@ builders: - lint-python-code - report-lint-result-to-gerrit + +- job-template: + name: 'opnfv-yamllint-verify-{stream}' + + disabled: '{obj:disabled}' + + concurrent: true + + parameters: + - project-parameter: + project: $GERRIT_PROJECT + - gerrit-parameter: + branch: '{branch}' + - node: + name: SLAVE_NAME + description: Slaves to execute yamllint + default-slaves: + - lf-build1 + allowed-multiselect: true + ignore-offline-nodes: true + + scm: + - git-scm-gerrit + + triggers: + - gerrit: + server-name: 'gerrit.opnfv.org' + trigger-on: + - patchset-created-event: + exclude-drafts: 'false' + exclude-trivial-rebase: 'false' + exclude-no-code-change: 'false' + - draft-published-event + - comment-added-contains-event: + comment-contains-value: 'recheck' + - comment-added-contains-event: + comment-contains-value: 'reverify' + projects: + - project-compare-type: 'REG_EXP' + project-pattern: 'compass4nfv' + branches: + - branch-compare-type: 'ANT' + branch-pattern: '**/{branch}' + file-paths: + - compare-type: ANT + pattern: '**/*.yml' + - compare-type: ANT + pattern: '**/*.yaml' + + builders: + - lint-yaml-code + - report-lint-result-to-gerrit diff --git a/jjb/vswitchperf/vswitchperf.yml b/jjb/vswitchperf/vswitchperf.yml index 0d2c67b3f..fe8ea5381 100644 --- a/jjb/vswitchperf/vswitchperf.yml +++ b/jjb/vswitchperf/vswitchperf.yml @@ -46,7 +46,7 @@ pwd cd src make clobber - make + make MORE_MAKE_FLAGS="-j 10" # run basic sanity test make sanity cd ../ci @@ -107,7 +107,7 @@ pwd cd src make clobber - make + make MORE_MAKE_FLAGS="-j 5" # run basic sanity test make sanity cd ../ci @@ -162,6 +162,6 @@ pwd cd src make clobber - make + make MORE_MAKE_FLAGS="-j 5" cd ../ci ./build-vsperf.sh merge diff --git a/jjb/yardstick/yardstick-ci-jobs.yml b/jjb/yardstick/yardstick-ci-jobs.yml index 33f557a33..1ad5417d4 100644 --- a/jjb/yardstick/yardstick-ci-jobs.yml +++ b/jjb/yardstick/yardstick-ci-jobs.yml @@ -268,6 +268,7 @@ - 'yardstick-cleanup' #- 'yardstick-fetch-os-creds' - 'yardstick-{testsuite}' + - 'yardstick-store-results' publishers: - email: @@ -295,6 +296,12 @@ !include-raw: ../../utils/fetch_os_creds.sh - builder: + name: yardstick-store-results + builders: + - shell: + !include-raw: ../../utils/push-test-logs.sh + +- builder: name: yardstick-cleanup builders: - shell: diff --git a/jjb/yardstick/yardstick-daily.sh b/jjb/yardstick/yardstick-daily.sh index b3705415f..da9042bbc 100755 --- a/jjb/yardstick/yardstick-daily.sh +++ b/jjb/yardstick/yardstick-daily.sh @@ -37,8 +37,15 @@ envs="-e INSTALLER_TYPE=${INSTALLER_TYPE} -e INSTALLER_IP=${INSTALLER_IP} \ echo "Yardstick: Pulling image opnfv/yardstick:${DOCKER_TAG}" docker pull opnfv/yardstick:$DOCKER_TAG >$redirect +# map log directory +branch=${GIT_BRANCH##*/} +dir_result="${HOME}/opnfv/yardstick/results/${branch}" +mkdir -p ${dir_result} +sudo rm -rf ${dir_result}/* +map_log_dir="-v ${dir_result}:/tmp/yardstick" + # Run docker -cmd="sudo docker run ${opts} ${envs} ${labconfig} ${sshkey} opnfv/yardstick:${DOCKER_TAG} \ +cmd="sudo docker run ${opts} ${envs} ${labconfig} ${map_log_dir} ${sshkey} opnfv/yardstick:${DOCKER_TAG} \ exec_tests.sh ${YARDSTICK_DB_BACKEND} ${YARDSTICK_SCENARIO_SUITE_NAME}" echo "Yardstick: Running docker cmd: ${cmd}" ${cmd} diff --git a/prototypes/puppet-infracloud/manifests/site.pp b/prototypes/puppet-infracloud/manifests/site.pp index 8cbfef8c7..3483b06e5 100644 --- a/prototypes/puppet-infracloud/manifests/site.pp +++ b/prototypes/puppet-infracloud/manifests/site.pp @@ -10,13 +10,13 @@ node 'controller00.opnfvlocal' { $group = 'infracloud' include ::sudoers - class { 'opnfv::server': + class { '::opnfv::server': iptables_public_tcp_ports => [80,5000,5671,8774,9292,9696,35357], # logs,keystone,rabbit,nova,glance,neutron,keystone sysadmins => hiera('sysadmins', []), enable_unbound => false, purge_apt_sources => false, } - class { 'opnfv::controller': + class { '::opnfv::controller': keystone_rabbit_password => hiera('keystone_rabbit_password'), neutron_rabbit_password => hiera('neutron_rabbit_password'), nova_rabbit_password => hiera('nova_rabbit_password'), @@ -38,6 +38,7 @@ node 'controller00.opnfvlocal' { neutron_subnet_gateway => hiera('neutron_subnet_gateway'), neutron_subnet_allocation_pools => hiera('neutron_subnet_allocation_pools'), opnfv_password => hiera('opnfv_password'), + require => Class['::opnfv::server'], } } @@ -45,13 +46,13 @@ node 'compute00.opnfvlocal' { $group = 'infracloud' include ::sudoers - class { 'opnfv::server': + class { '::opnfv::server': sysadmins => hiera('sysadmins', []), enable_unbound => false, purge_apt_sources => false, } - class { 'opnfv::compute': + class { '::opnfv::compute': nova_rabbit_password => hiera('nova_rabbit_password'), neutron_rabbit_password => hiera('neutron_rabbit_password'), neutron_admin_password => hiera('neutron_admin_password'), @@ -60,11 +61,12 @@ node 'compute00.opnfvlocal' { br_name => hiera('bridge_name'), controller_public_address => 'controller00.opnfvlocal', virt_type => hiera('virt_type'), + require => Class['::opnfv::server'], } } node 'jumphost.opnfvlocal' { - class { 'opnfv::server': + class { '::opnfv::server': sysadmins => hiera('sysadmins', []), enable_unbound => false, purge_apt_sources => false, @@ -97,5 +99,6 @@ node 'baremetal.opnfvlocal', 'lfpod5-jumpserver' { ipv4_subnet_mask => hiera('ipv4_subnet_mask'), bridge_name => hiera('bridge_name'), dib_dev_user_password => hiera('dib_dev_user_password'), + require => Class['::opnfv::server'], } } diff --git a/utils/fetch_os_creds.sh b/utils/fetch_os_creds.sh index 47fbc91dc..ecc571dba 100755 --- a/utils/fetch_os_creds.sh +++ b/utils/fetch_os_creds.sh @@ -144,9 +144,17 @@ elif [ "$installer_type" == "compass" ]; then sshpass -p root scp 2>/dev/null $ssh_options root@${installer_ip}:~/admin-openrc.sh $dest_path &> /dev/null info "This file contains the mgmt keystone API, we need the public one for our rc file" - public_ip=$(sshpass -p root ssh $ssh_options root@${installer_ip} \ - "ssh ${controller_ip} 'source /opt/admin-openrc.sh; openstack endpoint show identity '" \ - | grep publicurl | awk '{print $4}') + grep "OS_AUTH_URL.*v2" $dest_path > /dev/null 2>&1 + if [ $? -eq 0 ] ; then + public_ip=$(sshpass -p root ssh $ssh_options root@${installer_ip} \ + "ssh ${controller_ip} 'source /opt/admin-openrc.sh; openstack endpoint show identity '" \ + | grep publicurl | awk '{print $4}') + else + public_ip=$(sshpass -p root ssh $ssh_options root@${installer_ip} \ + "ssh ${controller_ip} 'source /opt/admin-openrc.sh; \ + openstack endpoint list --interface public --service identity '" \ + | grep identity | awk '{print $14}') + fi info "public_ip: $public_ip" diff --git a/utils/push-test-logs.sh b/utils/push-test-logs.sh index 586afce1b..913748f03 100644 --- a/utils/push-test-logs.sh +++ b/utils/push-test-logs.sh @@ -54,7 +54,7 @@ if [ -d "$dir_result" ]; then else gsutil ls gs://artifacts.opnfv.org/"$project"/ &>/dev/null if [ $? != 0 ]; then - echo "Not possible to push results to artifact: gsutil not installed."; + echo "Not possible to push results to artifact: some error happened when using gsutil"; else echo "Uploading logs to artifact $project_artifact" gsutil -m cp -r "$dir_result"/* gs://artifacts.opnfv.org/"$project_artifact"/ >/dev/null 2>&1 diff --git a/utils/test/testapi/install.sh b/utils/test/testapi/install.sh index 43229eabb..c55691aed 100755 --- a/utils/test/testapi/install.sh +++ b/utils/test/testapi/install.sh @@ -10,9 +10,17 @@ usage: where: -h|--help show this help text" -if [[ $(whoami) != "root" ]]; then - echo "Error: This script must be run as root!" - exit 1 +# Ref :- https://openstack.nimeyo.com/87286/openstack-packaging-all-definition-data-files-config-setup + +if [ -z "$VIRTUAL_ENV" ]; +then + if [[ $(whoami) != "root" ]]; + then + echo "Error: This script must be run as root!" + exit 1 + fi +else + sed -i -e 's#/etc/opnfv_testapi =#etc/opnfv_testapi =#g' setup.cfg fi cp -fr 3rd_party/static opnfv_testapi/tornado_swagger diff --git a/utils/test/testapi/opnfv_testapi/resources/handlers.py b/utils/test/testapi/opnfv_testapi/resources/handlers.py index 5059f5d77..f1ad15e97 100644 --- a/utils/test/testapi/opnfv_testapi/resources/handlers.py +++ b/utils/test/testapi/opnfv_testapi/resources/handlers.py @@ -227,7 +227,7 @@ class GenericApiHandler(RequestHandler): class VersionHandler(GenericApiHandler): - @swagger.operation(nickname='list') + @swagger.operation(nickname='List all versions') def get(self): """ @description: list all supported versions diff --git a/utils/test/testapi/opnfv_testapi/resources/models.py b/utils/test/testapi/opnfv_testapi/resources/models.py index a281c66d8..f518c97a0 100644 --- a/utils/test/testapi/opnfv_testapi/resources/models.py +++ b/utils/test/testapi/opnfv_testapi/resources/models.py @@ -70,6 +70,7 @@ class ModelBase(object): return t
+@swagger.model()
class CreateResponse(ModelBase):
def __init__(self, href=''):
self.href = href
diff --git a/utils/test/testapi/opnfv_testapi/resources/pod_handlers.py b/utils/test/testapi/opnfv_testapi/resources/pod_handlers.py index 8f44439e7..631d4a91d 100644 --- a/utils/test/testapi/opnfv_testapi/resources/pod_handlers.py +++ b/utils/test/testapi/opnfv_testapi/resources/pod_handlers.py @@ -20,7 +20,7 @@ class GenericPodHandler(GenericApiHandler): class PodCLHandler(GenericPodHandler): - @swagger.operation(nickname='list-all') + @swagger.operation(nickname='List all Pods') def get(self): """ @description: list all pods @@ -29,7 +29,7 @@ class PodCLHandler(GenericPodHandler): """ self._list() - @swagger.operation(nickname='create') + @swagger.operation(nickname='Create a Pod') def post(self): """ @description: create a pod @@ -54,7 +54,7 @@ class PodCLHandler(GenericPodHandler): class PodGURHandler(GenericPodHandler): - @swagger.operation(nickname='get-one') + @swagger.operation(nickname='Get a Pod by pod_name') def get(self, pod_name): """ @description: get a single pod by pod_name diff --git a/utils/test/testapi/opnfv_testapi/resources/project_handlers.py b/utils/test/testapi/opnfv_testapi/resources/project_handlers.py index 1e9a97230..9cf698623 100644 --- a/utils/test/testapi/opnfv_testapi/resources/project_handlers.py +++ b/utils/test/testapi/opnfv_testapi/resources/project_handlers.py @@ -22,7 +22,7 @@ class GenericProjectHandler(GenericApiHandler): class ProjectCLHandler(GenericProjectHandler): - @swagger.operation(nickname="list-all") + @swagger.operation(nickname="List all Projects") def get(self): """ @description: list all projects @@ -31,7 +31,7 @@ class ProjectCLHandler(GenericProjectHandler): """ self._list() - @swagger.operation(nickname="create") + @swagger.operation(nickname="Create a Project") def post(self): """ @description: create a project @@ -56,7 +56,7 @@ class ProjectCLHandler(GenericProjectHandler): class ProjectGURHandler(GenericProjectHandler): - @swagger.operation(nickname='get-one') + @swagger.operation(nickname='Get a Project by project_name') def get(self, project_name): """ @description: get a single project by project_name @@ -66,7 +66,7 @@ class ProjectGURHandler(GenericProjectHandler): """ self._get_one({'name': project_name}) - @swagger.operation(nickname="update") + @swagger.operation(nickname="Update a Project by project_name") def put(self, project_name): """ @description: update a single project by project_name @@ -82,7 +82,7 @@ class ProjectGURHandler(GenericProjectHandler): db_keys = ['name'] self._update(query, db_keys) - @swagger.operation(nickname='delete') + @swagger.operation(nickname='Delete a Project by project_name') def delete(self, project_name): """ @description: delete a project by project_name diff --git a/utils/test/testapi/opnfv_testapi/resources/result_handlers.py b/utils/test/testapi/opnfv_testapi/resources/result_handlers.py index 400b84ac1..fe13c09b7 100644 --- a/utils/test/testapi/opnfv_testapi/resources/result_handlers.py +++ b/utils/test/testapi/opnfv_testapi/resources/result_handlers.py @@ -52,7 +52,7 @@ class GenericResultHandler(GenericApiHandler): class ResultsCLHandler(GenericResultHandler): - @swagger.operation(nickname="list-all") + @swagger.operation(nickname="List all Test Results") def get(self): """ @description: Retrieve result(s) for a test project @@ -127,7 +127,7 @@ class ResultsCLHandler(GenericResultHandler): self._list(self.set_query(), sort=[('start_date', -1)], last=last) - @swagger.operation(nickname="create") + @swagger.operation(nickname="Create a Test Result") def post(self): """ @description: create a test result @@ -169,7 +169,7 @@ class ResultsCLHandler(GenericResultHandler): class ResultsGURHandler(GenericResultHandler): - @swagger.operation(nickname='get-one') + @swagger.operation(nickname='Get a Test Result by result_id') def get(self, result_id): """ @description: get a single result by result_id @@ -181,7 +181,7 @@ class ResultsGURHandler(GenericResultHandler): query["_id"] = ObjectId(result_id) self._get_one(query) - @swagger.operation(nickname="update") + @swagger.operation(nickname="Update a Test Result by result_id") def put(self, result_id): """ @description: update a single result by _id diff --git a/utils/test/testapi/opnfv_testapi/resources/result_models.py b/utils/test/testapi/opnfv_testapi/resources/result_models.py index 30119020b..50445fc22 100644 --- a/utils/test/testapi/opnfv_testapi/resources/result_models.py +++ b/utils/test/testapi/opnfv_testapi/resources/result_models.py @@ -112,7 +112,7 @@ class TestResult(models.ModelBase): @swagger.model() class TestResults(models.ModelBase): """ - @property rgit esults: + @property results: @ptype results: C{list} of L{TestResult} """ def __init__(self): diff --git a/utils/test/testapi/opnfv_testapi/resources/testcase_handlers.py b/utils/test/testapi/opnfv_testapi/resources/testcase_handlers.py index 253aa6649..3692b164f 100644 --- a/utils/test/testapi/opnfv_testapi/resources/testcase_handlers.py +++ b/utils/test/testapi/opnfv_testapi/resources/testcase_handlers.py @@ -22,7 +22,7 @@ class GenericTestcaseHandler(GenericApiHandler): class TestcaseCLHandler(GenericTestcaseHandler): - @swagger.operation(nickname="list-all") + @swagger.operation(nickname="List all TestCases by project_name") def get(self, project_name): """ @description: list all testcases of a project by project_name @@ -34,7 +34,7 @@ class TestcaseCLHandler(GenericTestcaseHandler): query['project_name'] = project_name self._list(query) - @swagger.operation(nickname="create") + @swagger.operation(nickname="Create a TestCase by project_name") def post(self, project_name): """ @description: create a testcase of a project by project_name @@ -72,7 +72,7 @@ class TestcaseCLHandler(GenericTestcaseHandler): class TestcaseGURHandler(GenericTestcaseHandler): - @swagger.operation(nickname='get-one') + @swagger.operation(nickname='Get a TestCase by project and case name') def get(self, project_name, case_name): """ @description: get a single testcase @@ -86,7 +86,7 @@ class TestcaseGURHandler(GenericTestcaseHandler): query["name"] = case_name self._get_one(query) - @swagger.operation(nickname="update") + @swagger.operation(nickname="Update a TestCase by project and case name") def put(self, project_name, case_name): """ @description: update a single testcase @@ -104,7 +104,7 @@ class TestcaseGURHandler(GenericTestcaseHandler): db_keys = ['name', 'project_name'] self._update(query, db_keys) - @swagger.operation(nickname='delete') + @swagger.operation(nickname='Delete a TestCase by project and case name') def delete(self, project_name, case_name): """ @description: delete a testcase by project_name and case_name |