diff options
20 files changed, 434 insertions, 36 deletions
@@ -1,7 +1,7 @@ Project Name: QTIP, Platform Performance Benchmarking Project Category: Integration & Testing -Project Leader: Yujun Zhang <zhang.yujunz@zte.com.cn> -Primary Contact: Yujun Zhang <zhang.yujunz@zte.com.cn> +Project Leader: Zhihui Wu <wu.zhihui1@zte.com.cn> +Primary Contact: Zhihui Wu <wu.zhihui1@zte.com.cn> Wiki: https://wiki.opnfv.org/display/QTIP Jira: https://jira.opnfv.org/browse/QTIP Etherpad: https://etherpad.opnfv.org/p/qtip @@ -12,9 +12,11 @@ IRC: #opnfv-qtip@freenode Committers: +Akhil Batra akhil.batra@research.iiit.ac.in Morgan Richomme morgan.richomme@orange.com Prabu Kuppuswamy prabu.kuppuswamy@spirent.com Prakash Ramchandran prakash.ramchandran@huawei.com +Taseer Ahmed taseer94@gmail.com Trevor Cooper trevor.cooper@intel.com Yujun Zhang zhang.yujunz@zte.com.cn Zhifeng Jiang Jiang.ZhiFeng@zte.com.cn diff --git a/docs/release/release-notes/euphrates.rst b/docs/release/release-notes/euphrates.rst new file mode 100644 index 00000000..48058e64 --- /dev/null +++ b/docs/release/release-notes/euphrates.rst @@ -0,0 +1,137 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +********* +Euphrates +********* + +This document provides the release notes of QTIP for OPNFV Euphrates release + +.. contents:: + :depth: 3 + :local: + +Version history +=============== + ++--------------------+--------------------+--------------------+--------------------+ +| **Date** | **Ver.** | **Author** | **Comment** | +| | | | | ++--------------------+--------------------+--------------------+--------------------+ +| 2017-10-20 | Euphrates 1.0 | Yujun Zhang | | +| | | | | ++--------------------+--------------------+--------------------+--------------------+ + +Summary +======= + +QTIP Euphrates release continues working on **QPI**, a.k.a. QTIP Performance Index, which is calculated from metrics +collected in performance tests. + +Besides compute performance benchmark, QTIP has integrated OPNFV storperf for storage performance benchmarking. + +A PoC of web portal is implemented as the starting point of Benchmarking as a Service. + +Release Data +============ + ++--------------------------------------+--------------------------------------+ +| **Project** | QTIP | +| | | ++--------------------------------------+--------------------------------------+ +| **Repo/commit-ID** | qtip/euphrates.1.0 | +| | | ++--------------------------------------+--------------------------------------+ +| **Release designation** | stable version | +| | | ++--------------------------------------+--------------------------------------+ +| **Release date** | 2017-10-20 | +| | | ++--------------------------------------+--------------------------------------+ +| **Purpose of the delivery** | release with OPNFV cycle | +| | | ++--------------------------------------+--------------------------------------+ + +Version change +-------------- + +Module version changes +^^^^^^^^^^^^^^^^^^^^^^ + +The following Python packages are used in this release:: + + humanfriendly==4.4.1 + connexion==1.1.11 + Jinja2==2.9.6 + Django==1.11.5 + asq==1.2.1 + six==1.11.0 + ansible==2.4.0.0 + requests==2.18.4 + prettytable==0.7.2 + numpy==1.13.1 + click==6.7 + pbr==3.1.1 + PyYAML==3.12 + +It is considered as a baseline for future releases. + +Reason for version +------------------ + +Features additions +^^^^^^^^^^^^^^^^^^ + +* Storage QPI (QTIP Performance Index) specification and benchmarking project + +Framework evolution +^^^^^^^^^^^^^^^^^^^ + +Ansible is used as the backbone of QTIP framework. Not only the main testing procedure is built as Ansible roles, but +also the inventory discovery is implemented as Ansible module, the calculation and collection actions are Ansible +plugins. Even the testing project itself is generated using jinja2 template rendering driven by Ansible. + +Deliverables +------------ + +Software +^^^^^^^^ + +- `QTIP Docker image <https://hub.docker.com/r/opnfv/qtip>`_ (tag: euphrates.1.0) + +Documentation +^^^^^^^^^^^^^ + +- `Installation & Configuration <http://docs.opnfv.org/en/stable-euphrates/qtip/docs/testing/user/configguide>`_ +- `User Guide <http://docs.opnfv.org/en/stable-euphrates/submodules/qtip/docs/testing/user/userguide>`_ +- `Developer Guide <http://docs.opnfv.org/en/stable-euphrates/submodules/qtip/docs/testing/developer/devguide>`_ + +Known Limitations, Issues and Workarounds +========================================= + +Limitations +----------- + +- Supporting on legacy OPNFV fuel installer is no longer maintained. + +Known issues +------------ + +Test Result +=========== + +QTIP has undergone QA test runs with the following results: + ++---------------------------------------------------+--------------------------------------+ +| **TEST-SUITES** | **Results:** | +| | | ++---------------------------------------------------+--------------------------------------+ +| qtip-verify-euphrates | 53/53 passed, 86% lines coverage | +| | | ++---------------------------------------------------+--------------------------------------+ +| qtip-compute-apex-euphrates | passed | +| | | ++---------------------------------------------------+--------------------------------------+ +| qtip-storage-apex-euphrates | passed | +| | | ++---------------------------------------------------+--------------------------------------+ diff --git a/docs/testing/user/configguide/index.rst b/docs/testing/user/configguide/index.rst index ce733666..fa893e5e 100644 --- a/docs/testing/user/configguide/index.rst +++ b/docs/testing/user/configguide/index.rst @@ -4,9 +4,9 @@ .. (c) 2016 ZTE Corp. -********************************* -QTIP Installation & Configuration -********************************* +*********************** +QTIP Installation Guide +*********************** .. toctree:: :maxdepth: 2 diff --git a/docs/testing/user/userguide/cli.rst b/docs/testing/user/userguide/cli.rst index 8a983155..f0894b01 100644 --- a/docs/testing/user/userguide/cli.rst +++ b/docs/testing/user/userguide/cli.rst @@ -7,7 +7,7 @@ CLI User Manual *************** QTIP consists of a number of benchmarking tools or metrics, grouped under QPI's. QPI's map to the different -components of a NFVI ecosystem, such as compute, network and storage. Depending on the type of application, +components of a NFVi ecosystem, such as compute, network and storage. Depending on the type of application, a user may group them under plans. Bash Command Completion @@ -26,53 +26,60 @@ QTIP CLI provides interface to all of the above the components. A help page prov along with a short description. :: - qtip [-h|--help] + qtip --help Usage ===== -Typically a complete plan is executed at the target environment. QTIP defaults to a number of sample plans. -A list of all the available plans can be viewed +QTIP is currently supports two different QPI's, compute and storage. To list all the supported QPI :: - qtip plan list + qtip qpi list -In order to view the details about a specific plan. +The details of any QPI can be viewed as follows :: - qtip plan show <plan_name> +qtip qpi show <qpi_name> -where *plan_name* is one of those listed from the previous command. - -To execute a complete plan +In order to benchmark either one of them, their respective templates need to be generated :: - qtip plan run <plan_name> -p <path_to_result_directory> + qtip create --project-template [compute|storage] <workspace_name> + +By default, the compute template will be generated. An interactive prompt would gather all parameters specific to +OpenStack installation. -QTIP does not limit result storage at a specific directory. Instead a user may specify his own result storage -as above. An important thing to remember is to provide absolute path of result directory. +Once the template generation is complete, configuration for OpenStack needs to be generated. :: - mkdir result - qtip plan run <plan_name> -p $PWD/result + cd <workspace_name> + qtip setup -Similarly, the same commands can be used for the other two components making up the plans, i.e QPI's and metrics. -For example, in order to run a single metric +This step generates the inventory, populating it with target nodes. + +QTIP can now be run :: - qtip metric run <metric_name> -p $PWD/result + qtip run -The same can be applied for a QPI. +This would start the complete testing suite, which is either compute or storage. Each suite normally takes about +half an hour to complete. -QTIP also provides the utility to view benchmarking results on the console. One just need to provide to where -the results are stored. Extending the example above +Benchmarking report is made for each and every individual section in a QPI, on a particular target node. It consists of +the actual test values on that node along with scores calculated by comparison against a baseline. :: - qtip report show <metric_name> -p $PWD/result + qtip report show [-n|--node] <node> <section_name> + Debugging options ================= -Debug option helps identify the error by providing a detailed traceback. It can be enabled as +QTIP uses Ansible as the runner. One can use all of Ansible's CLI option with QTIP. In order to enable verbose mode +:: + + qtip setup -v + +One may also be able to achieve the different levels of verbosity :: - qtip [-d|--debug] plan run <plan_name> + qtip run [-v|-vv|-vvv] diff --git a/opt/infra/roles/user/files/aaron - Ke.Yi@spirent.com/0xD60DFB3B-pub.asc b/opt/infra/roles/user/files/aaron - Ke.Yi@spirent.com/0xD60DFB3B-pub.asc new file mode 100644 index 00000000..308a7385 --- /dev/null +++ b/opt/infra/roles/user/files/aaron - Ke.Yi@spirent.com/0xD60DFB3B-pub.asc @@ -0,0 +1,55 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: Keybase OpenPGP v1.0.0 +Comment: https://keybase.io/crypto + +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 +A2sZKZk3gNbu +=KMTv +-----END PGP PUBLIC KEY BLOCK----- diff --git a/opt/infra/roles/user/files/aaron - Ke.Yi@spirent.com/authorized_keys b/opt/infra/roles/user/files/aaron - Ke.Yi@spirent.com/authorized_keys new file mode 100644 index 00000000..ea619606 --- /dev/null +++ b/opt/infra/roles/user/files/aaron - Ke.Yi@spirent.com/authorized_keys @@ -0,0 +1,9 @@ +---- BEGIN SSH2 PUBLIC KEY ----
+Comment: "rsa-key-20171020"
+AAAAB3NzaC1yc2EAAAABJQAAAQEAlM5lOVfVaoCLqu1ZVf5JKTgGFsYZZyqWAepd
+EYbrPHJFvtbnwsLaQl1gBQMNU8AzBe7KylPIT7UeGATuz3HSGKC01Y/3wkbavDUX
+dmsX8XPXx2UggCdzRg7MQfn4obJCjpK/LetwG9idA1JdeBlGtH5P62QWL5U+EcwY
+E3o2FLFLsVBFbwQ+gZHFe7Ae4qDC0cAElYPAGfpM0azGlJ55YSFtcW3/7OzVbxxf
+TWVMGsuCL5ov8pT9e0R4K520pUJI95A183p6wK7vIXky1pZN7GobG9ATmEX0/1sJ
+vJ8gFH8ek2JK8N/GtrgOFzk55YaxDd3stBH8KWxcBASsWPRC/Q==
+---- END SSH2 PUBLIC KEY ----
diff --git a/opt/infra/roles/user/files/qdai - Qiang.Dai@spirent.com/0xA1BEEBE4-pub.asc b/opt/infra/roles/user/files/qdai - Qiang.Dai@spirent.com/0xA1BEEBE4-pub.asc new file mode 100644 index 00000000..9d5dece1 --- /dev/null +++ b/opt/infra/roles/user/files/qdai - Qiang.Dai@spirent.com/0xA1BEEBE4-pub.asc @@ -0,0 +1,55 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: Keybase OpenPGP v1.0.0 +Comment: https://keybase.io/crypto + +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 +hLM4H3qvAAJZBGW+ +=+YJ3 +-----END PGP PUBLIC KEY BLOCK----- diff --git a/opt/infra/roles/user/files/qdai - Qiang.Dai@spirent.com/authorized_keys b/opt/infra/roles/user/files/qdai - Qiang.Dai@spirent.com/authorized_keys new file mode 100644 index 00000000..50c2e0ac --- /dev/null +++ b/opt/infra/roles/user/files/qdai - Qiang.Dai@spirent.com/authorized_keys @@ -0,0 +1,9 @@ +---- BEGIN SSH2 PUBLIC KEY ----
+Comment: "rsa-key-20171020-for-zte-qtip"
+AAAAB3NzaC1yc2EAAAABJQAAAQEAkNlmplTan+ry5XkKpvadRDkZc0tzQK4zZTtC
+6LytdUfWrNTxD5wfMy+hk9CxGnGitqiRgH06YEdBxo+NGD4tOdbOeqdyL9FahbGd
+Z7oUt7pVrBey+6VtXYtZtxCOQ7MDbqGUKPTGsahlGm7VVmfAgrmeh/L1hVRU9BbV
+nW/vT1Uava5n87Wy5x9Peq01+x2KugjXihEhig27pDjmze8wkdcrJN/vGAtxCAKM
+Ydg/5Tflq3PsN+pzRRrec6ht+4pgPfuXPVSrhKk6PTrsJOkzv5IBNOyklUXDf6Uh
+AjD43A4dGNqGuFsheLWGiVQw7CKGA3E1oFG+MBSjvzFthx4EPQ==
+---- END SSH2 PUBLIC KEY ----
diff --git a/qtip/ansible_library/modules/mcp.py b/qtip/ansible_library/modules/mcp.py new file mode 100644 index 00000000..21be7bcc --- /dev/null +++ b/qtip/ansible_library/modules/mcp.py @@ -0,0 +1,105 @@ +#!/usr/bin/python + +############################################################### +# Copyright (c) 2017 ZTE Corporation and others +# taseer94@gmail.com +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +import json +from collections import defaultdict + +from ansible.module_utils.basic import AnsibleModule + +ANSIBLE_METADATA = {'metadata_version': '1.0', + 'status': ['preview'], + 'supported_by': 'community'} + +DOCUMENTATION = ''' +--- +module: mcp +short_description: collecting facts from mcp environments +description: + - Use this module to create a dynamic inventory from salt master (mcp). +version_added: "1.0" +author: "Taseer Ahmed (@Taseer)" +options: +notes: +requirements: + - Host 'salt-master' is in ~/.ssh/config +''' + +RETURN = ''' +ansible_facts: + description: facts collected for ansible + returned: success + type: dictionary + contains: + hosts: + description: host grouped by hostname, cluster, role and manufacture + type: dict + hosts_meta: + description: hosts meta data indexed by hostname + type: dict +''' + +EXAMPLES = ''' +--- +- hosts: salt-master + tasks: + - name: collect facts of mcp hosts + mcp: + - debug: var=hostvars + - name: add compute node to ansible inventory + add_host: + name: "{{ hosts_meta[item]['ip'] }}" + groups: mcp-compute + ansible_user: root + ansible_ssh_common_args: '-o StrictHostKeyChecking=No -o ProxyJump=salt-master' + with_items: "{{ hosts.compute }}" +- hosts: mcp-compute + tasks: + - name: check ssh connection + ping: +''' + + +def generate_inventory(nodes): + """Generate ansible inventory from node list in json format""" + hosts = defaultdict(list) + hosts_meta = {} + node_meta = {} + + for key, value in nodes.iteritems(): + if isinstance(value, dict): + for k, v in value.iteritems(): + if k == "fqdn_ip4": + node_meta['ansible_ssh_host'] = v[0] + node_meta['ansible_user'] = 'root' + hosts_meta[key] = node_meta + hosts['compute-nodes'].append(node_meta['ansible_ssh_host']) + + return {'hosts': hosts, 'hosts_meta': hosts_meta} + + +def main(): + module = AnsibleModule(argument_spec=dict()) + + cmd = [module.get_bin_path('salt', True), '-C', '-t 5', '--static', '--out=json', 'cmp*', 'grains.item', + 'fqdn_ip4', 'host'] + (rc, out, err) = module.run_command(cmd) + + if rc is not None and rc != 0: + return module.fail_json(msg=err) + + nodes = json.loads(out) + + module.exit_json(changed=False, ansible_facts=generate_inventory(nodes)) + + +if __name__ == '__main__': + main() diff --git a/qtip/cli/commands/cmd_project.py b/qtip/cli/commands/cmd_project.py index 325594ad..2836fa69 100644 --- a/qtip/cli/commands/cmd_project.py +++ b/qtip/cli/commands/cmd_project.py @@ -50,7 +50,7 @@ def cli(): default='opnfv-pod', help='Name of pod under test') @click.option('--installer-type', - type=click.Choice(['apex', 'fuel', 'manual']), + type=click.Choice(['apex', 'fuel', 'manual', 'mcp']), prompt='OPNFV Installer Type', default='manual', help='OPNFV installer') diff --git a/qtip/scripts/quickstart.sh b/qtip/scripts/quickstart.sh index 58a12459..826ed656 100644 --- a/qtip/scripts/quickstart.sh +++ b/qtip/scripts/quickstart.sh @@ -26,7 +26,7 @@ verify_connectivity(){ fi sleep 1 done - error "Can not talk to $ip." + echo "Can not talk to $ip." } #Getoptions diff --git a/resources/ansible_roles/opnfv-testapi/tasks/report.yml b/resources/ansible_roles/opnfv-testapi/tasks/report.yml index bb034d84..0633eafb 100644 --- a/resources/ansible_roles/opnfv-testapi/tasks/report.yml +++ b/resources/ansible_roles/opnfv-testapi/tasks/report.yml @@ -26,6 +26,6 @@ scenario: "{{ scenario }}" start_date: "{{ ansible_date_time.date }}" stop_date: "{{ ansible_date_time.date }}" - criteria: "{{ pod_result.score }}" + criteria: PASS # regarded as "pass" if execution is done details: score: "{{ pod_result.score }}" diff --git a/resources/ansible_roles/qtip-generator/defaults/main.yml b/resources/ansible_roles/qtip-generator/defaults/main.yml index 527da6f7..f6714b8d 100644 --- a/resources/ansible_roles/qtip-generator/defaults/main.yml +++ b/resources/ansible_roles/qtip-generator/defaults/main.yml @@ -14,6 +14,7 @@ installer_group: manual: dummy-group fuel: fuel-masters apex: apex-underclouds + mcp: salt-masters project_name: 'qtip-project' project_template: 'compute' diff --git a/resources/ansible_roles/qtip-generator/files/compute/group_vars/all.yml b/resources/ansible_roles/qtip-generator/files/compute/group_vars/all.yml index 8b90b498..efb2bdb7 100644 --- a/resources/ansible_roles/qtip-generator/files/compute/group_vars/all.yml +++ b/resources/ansible_roles/qtip-generator/files/compute/group_vars/all.yml @@ -20,3 +20,4 @@ installer_group: manual: dummy-group fuel: fuel-masters apex: apex-underclouds + mcp: salt-master diff --git a/resources/ansible_roles/qtip-generator/files/compute/host_vars/localhost.yml b/resources/ansible_roles/qtip-generator/files/compute/host_vars/localhost.yml index 815e2ea3..cc587c69 100644 --- a/resources/ansible_roles/qtip-generator/files/compute/host_vars/localhost.yml +++ b/resources/ansible_roles/qtip-generator/files/compute/host_vars/localhost.yml @@ -13,4 +13,4 @@ project_name: qtip case_name: "{{ case_name|default('compute') }}" pod_name: "{{ pod_name|default('qtip-pod') }}" scenario: "{{ scenario|default('generic') }}" -version: "{{ version|default('master') }}" +version: "{{ lookup('env','OPNFV_RELEASE')|default('master') }}" diff --git a/resources/ansible_roles/qtip/tasks/gather-facts-mcp.yml b/resources/ansible_roles/qtip/tasks/gather-facts-mcp.yml new file mode 100644 index 00000000..5aed9e75 --- /dev/null +++ b/resources/ansible_roles/qtip/tasks/gather-facts-mcp.yml @@ -0,0 +1,14 @@ +############################################################################## +# Copyright (c) 2017 ZTE Corporation and others. +# taseer94@gmail.com +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +--- + +- name: gathering facts for mcp slave nodes + mcp:
\ No newline at end of file diff --git a/resources/ansible_roles/ramspeed/tasks/main.yml b/resources/ansible_roles/ramspeed/tasks/main.yml index dbf16567..6f0b10fc 100644 --- a/resources/ansible_roles/ramspeed/tasks/main.yml +++ b/resources/ansible_roles/ramspeed/tasks/main.yml @@ -14,7 +14,9 @@ - name: downloading ramsmp get_url: - url: http://www.alasir.com/software/ramspeed/ramsmp-3.5.0.tar.gz +# alasir.com domain name expired on 2017-09-30 05:47:11 +# url: http://www.alasir.com/software/ramspeed/ramsmp-3.5.0.tar.gz + url: http://sources.buildroot.net/ramsmp-3.5.0.tar.gz dest: "{{ workdir }}" checksum: "sha256:39fb15493fb3c293575746d56f6ab9faaa1d876d8b1f0d8e5a4042d2ace95839" diff --git a/tests/ci/experimental.sh b/tests/ci/experimental.sh index bb9694b7..7fa18f2f 100755 --- a/tests/ci/experimental.sh +++ b/tests/ci/experimental.sh @@ -31,7 +31,7 @@ qtip_repo='/home/opnfv/repos/qtip' docker cp . ${TEST_SUITE}_qtip:${qtip_repo} docker exec ${TEST_SUITE}_qtip bash -c "cd ${qtip_repo} && pip install -U -e ." -docker exec -t ${TEST_SUITE}_qtip bash -x ${qtip_repo}/qtip/scripts/quickstart.sh +docker exec ${TEST_SUITE}_qtip bash -x ${qtip_repo}/qtip/scripts/quickstart.sh echo "QTIP: Verify ${TEST_SUITE} done!" exit 0 diff --git a/tests/ci/periodic.sh b/tests/ci/periodic.sh index 5c488b87..87fa7627 100755 --- a/tests/ci/periodic.sh +++ b/tests/ci/periodic.sh @@ -13,7 +13,7 @@ script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" source ${script_dir}/utils/start_services.sh -docker exec -t ${TEST_SUITE}_qtip bash -x /home/opnfv/repos/qtip/qtip/scripts/quickstart.sh +docker exec ${TEST_SUITE}_qtip bash -x /home/opnfv/repos/qtip/qtip/scripts/quickstart.sh echo "${TEST_SUITE} QPI done!" diff --git a/tests/ci/utils/start_services.sh b/tests/ci/utils/start_services.sh index 3c481be4..5c95ed7e 100644 --- a/tests/ci/utils/start_services.sh +++ b/tests/ci/utils/start_services.sh @@ -15,6 +15,7 @@ TEST_SUITE=${TEST_SUITE} NODE_NAME=${NODE_NAME:-opnfv-pod} SCENARIO=${DEPLOY_SCENARIO:-generic} TESTAPI_URL=${TESTAPI_URL:-} +OPNFV_RELEASE=${OPNFV_RELEASE:-} EOF export SSH_CREDENTIALS=${SSH_CREDENTIALS:-/root/.ssh} |