diff options
Diffstat (limited to 'ansible')
28 files changed, 711 insertions, 65 deletions
diff --git a/ansible/gen_scale_out_test.yml b/ansible/gen_scale_out_test.yml new file mode 100644 index 000000000..a76ea0ac2 --- /dev/null +++ b/ansible/gen_scale_out_test.yml @@ -0,0 +1,26 @@ +# Copyright (c) 2017 Intel Corporation. # +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +--- +- hosts: localhost + connection: local + vars: + vnf_range: + - 2 + - 4 + - 10 + + + tasks: + - include: scale_out_test_templates.yml + with_items: "{{ vnf_range }}" + diff --git a/ansible/install_collectd.yml b/ansible/install_collectd.yml index 0824c1525..637c42d65 100644 --- a/ansible/install_collectd.yml +++ b/ansible/install_collectd.yml @@ -15,8 +15,11 @@ - hosts: all vars: clone_dir: /tmp/yardstick-clone + environment: "{{ proxy_env|default({}) }}" roles: + # needed for collectd plugins + - increase_open_file_limits # build shared DPDK for collectd only, required DPDK downloaded already - role: download_dpdk - install_dpdk_shared @@ -27,4 +30,3 @@ - install_pmu_tools - download_collectd - install_collectd - diff --git a/ansible/multi_port_baremetal_ixia_correlated_test.yaml b/ansible/multi_port_baremetal_ixia_correlated_test.yaml new file mode 100644 index 000000000..ba92b5cd3 --- /dev/null +++ b/ansible/multi_port_baremetal_ixia_correlated_test.yaml @@ -0,0 +1,133 @@ +# Copyright (c) 2017 Intel Corporation. # +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +--- +- hosts: localhost + connection: local + vars: + scale_out: + - 1 + - 2 + flow: + traffic_type: 4 + pkt_size: + uplink: {64B: 100} + downlink: {64B: 100} + count: 10 + rfc2544: + allowed_drop_rate: 0.0001 - 0.0001 + vnf_config: + lb_config: 'SW' + lb_count: 1 + worker_config: '1C/1T' + worker_threads: 1 + + # Environment variables + gen: + user: "" + password: "" + key_filename: ~ + tg_config: + ixchassis: "1.1.1.127" #ixia chassis ip + tcl_port: "8009" # tcl server port + lib_path: "/opt/ixia/ixos-api/8.01.0.2/lib/ixTcl1.0" + root_dir: "/opt/ixia/ixos-api/8.01.0.2/" + py_bin_path: "/opt/ixia/ixload/8.01.106.3/bin/" + py_lib_path: "/opt/ixia/ixnetwork/8.01.1029.14/lib/PythonApi" + dut_result_dir: "/mnt/results" + version: "8.01.106.3" + pcis: + uplink: + - "2:5" #Card:port + - "2:3" #Card:port + downlink: + - "2:6" #Card:port + - "2:5" #Card:port + ip: + mgmt: + - '1.2.1.6/24' + uplink: + - '152.16.100.20/24' + - '172.16.100.20/24' + downlink: + - '152.16.40.20/24' + - '172.16.40.20/24' + mac: + uplink: + - '00:98:10:64:14:00' + - '00:ac:10:64:14:0' + downlink: + - '00:98:10:28:14:00' + - '00:ac:10:28:14:00' + + # Environment variables + gen_1: + user: "" + password: "" + key_filename: ~ + pcis: + uplink: + - "0000:05:00.0" + - "0000:05:00.2" + downlink: + - "0000:05:00.1" + - "0000:05:00.3" + ip: + mgmt: + - '1.2.1.6/24' + uplink: + - '152.16.100.20/24' + - '172.16.100.20/24' + downlink: + - '152.16.40.20/24' + - '172.16.40.20/24' + mac: + uplink: + - '00:00:00:9e:00:f8' + - '00:00:00:9e:00:fa' + downlink: + - '00:00:00:9e:00:f9' + - '00:00:00:9e:00:fb' + + vnf: + ip: "192.168.100.101/24" + user: root + password: "" + key_filename: /root/.ssh/id_rsa + pcis: + uplink: + - "0000:05:00.0" + - "0000:05:00.2" + downlink: + - "0000:05:00.1" + - "0000:05:00.3" + ip: + mgmt: + - '1.2.1.6/24' + uplink: + - '152.16.100.10/24' + - '172.16.100.10/24' + downlink: + - '152.16.40.10/24' + - '172.16.40.10/24' + mac: + uplink: + - '00:00:00:9e:00:f8' + - '00:00:00:9e:00:fa' + downlink: + - '00:00:00:9e:00:f9' + - '00:00:00:9e:00:fb' + + tasks: + - include: multi_port_baremetal_ixia_correlated_test_templates.yml + with_items: "{{ scale_out }}" + diff --git a/ansible/multi_port_baremetal_ixia_correlated_test_templates.yml b/ansible/multi_port_baremetal_ixia_correlated_test_templates.yml new file mode 100644 index 000000000..6f73d8c01 --- /dev/null +++ b/ansible/multi_port_baremetal_ixia_correlated_test_templates.yml @@ -0,0 +1,56 @@ +# Copyright (c) 2017 Intel Corporation. # +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +--- + +- set_fact: + num_vnfs: "{{ item }}" + +- debug: + var: num_vnfs + verbosity: 2 + +- template: + src: ../samples/vnf_samples/traffic_profiles/ipv4_throughput-ixia-correlated-scale-out.yaml + dest: ../samples/vnf_samples/traffic_profiles/ipv4_throughput-ixia-{{ num_vnfs }}.yaml + +- template: + src: ../etc/yardstick/nodes/standalone/ixia_template.yaml + dest: /etc/yardstick/nodes/ixia_{{ num_vnfs }}.yaml + +- template: + src: ../etc/yardstick/nodes/standalone/pod_bm_vnf.yaml + dest: /etc/yardstick/nodes/pod_bm_vnf_{{num_vnfs}}.yaml + +- template: + src: ../samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_udp_ixia_correlated_multi_port_template.yaml + dest: ../samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_udp_ixia_correlated_multi_port_{{ num_vnfs }}.yaml + +- template: + src: ../samples/vnf_samples/nsut/vfw/vfw-tg-topology-ixia-correlated-multi-port.yaml + dest: ../samples/vnf_samples/nsut/vfw/vfw-tg-topology-ixia-correlated-multi-port-{{ num_vnfs }}.yaml + +- template: + src: ../samples/vnf_samples/nsut/acl/tc_baremetal_acl_udp_ixia_correlated_multi_port_template.yaml + dest: ../samples/vnf_samples/nsut/acl/tc_baremetal_acl_udp_ixia_correlated_multi_port_{{num_vnfs}}.yaml + +- template: + src: ../samples/vnf_samples/nsut/acl/acl-tg-topology-ixia-correlated-multi-port.yaml + dest: ../samples/vnf_samples/nsut/acl/acl-tg-topology-ixia-correlated-multi-port-{{ num_vnfs }}.yaml + +- template: + src: ../samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_udp_ixia_correlated_multi_port_template.yaml + dest: ../samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_udp_ixia_correlated_multi_port_{{num_vnfs}}.yaml + +- template: + src: ../samples/vnf_samples/nsut/cgnapt/cgnapt-tg-topology-ixia-correlated-multi-port.yaml + dest: ../samples/vnf_samples/nsut/cgnapt/cgnapt-tg-topology-ixia-correlated-multi-port-{{ num_vnfs }}.yaml diff --git a/ansible/multi_port_baremetal_ixia_test.yaml b/ansible/multi_port_baremetal_ixia_test.yaml new file mode 100644 index 000000000..52bc40b43 --- /dev/null +++ b/ansible/multi_port_baremetal_ixia_test.yaml @@ -0,0 +1,104 @@ +# Copyright (c) 2017 Intel Corporation. # +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +--- +- hosts: localhost + connection: local + vars: + scale_out: + - 1 + - 2 + flow: + traffic_type: 4 + pkt_size: + uplink: {64B: 100} + downlink: {64B: 100} + count: 10 + rfc2544: + allowed_drop_rate: 0.0001 - 0.0001 + vnf_config: + lb_config: 'SW' + lb_count: 1 + worker_config: '1C/1T' + worker_threads: 1 + + # Environment variables + gen: + user: "" + password: "" + key_filename: ~ + tg_config: + ixchassis: "1.1.1.127" #ixia chassis ip + tcl_port: "8009" # tcl server port + lib_path: "/opt/ixia/ixos-api/8.01.0.2/lib/ixTcl1.0" + root_dir: "/opt/ixia/ixos-api/8.01.0.2/" + py_bin_path: "/opt/ixia/ixload/8.01.106.3/bin/" + py_lib_path: "/opt/ixia/ixnetwork/8.01.1029.14/lib/PythonApi" + dut_result_dir: "/mnt/results" + version: "8.01.106.3" + pcis: + uplink: + - "2:5" #Card:port + - "2:3" #Card:port + downlink: + - "2:6" #Card:port + - "2:5" #Card:port + ip: + mgmt: + - '1.2.1.6/24' + uplink: + - '152.16.100.20/24' + - '172.16.100.20/24' + downlink: + - '152.16.40.20/24' + - '172.16.40.20/24' + mac: + uplink: + - '00:98:10:64:14:00' + - '00:ac:10:64:14:0' + downlink: + - '00:98:10:28:14:00' + - '00:ac:10:28:14:00' + + vnf: + ip: "192.168.100.101/24" + user: root + password: "" + key_filename: /root/.ssh/id_rsa + pcis: + uplink: + - "0000:05:00.0" + - "0000:05:00.2" + downlink: + - "0000:05:00.1" + - "0000:05:00.3" + ip: + mgmt: + - '1.2.1.6/24' + uplink: + - '152.16.100.10/24' + - '172.16.100.10/24' + downlink: + - '152.16.40.10/24' + - '172.16.40.10/24' + mac: + uplink: + - '00:00:00:9e:00:f8' + - '00:00:00:9e:00:fa' + downlink: + - '00:00:00:9e:00:f9' + - '00:00:00:9e:00:fb' + + tasks: + - include: multi_port_baremetal_ixia_test_templates.yml + with_items: "{{ scale_out }}" + diff --git a/ansible/multi_port_baremetal_ixia_test_templates.yml b/ansible/multi_port_baremetal_ixia_test_templates.yml new file mode 100644 index 000000000..f2e04a2d1 --- /dev/null +++ b/ansible/multi_port_baremetal_ixia_test_templates.yml @@ -0,0 +1,60 @@ +# Copyright (c) 2017 Intel Corporation. # +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +--- + +- set_fact: + num_vnfs: "{{ item }}" + +- debug: + var: num_vnfs + verbosity: 2 + +- template: + src: ../samples/vnf_samples/traffic_profiles/ipv4_throughput-scale-out.yaml + dest: ../samples/vnf_samples/traffic_profiles/ipv4_throughput-{{ num_vnfs }}.yaml + +- template: + src: ../etc/yardstick/nodes/standalone/ixia_template.yaml + dest: /etc/yardstick/nodes/ixia_{{ num_vnfs }}.yaml + +- template: + src: ../etc/yardstick/nodes/standalone/pod_bm_vnf.yaml + dest: /etc/yardstick/nodes/pod_bm_vnf_{{num_vnfs}}.yaml + +- template: + src: ../samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_rfc2544_template.yaml + dest: ../samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_rfc2544_{{ num_vnfs }}.yaml + +- template: + src: ../samples/vnf_samples/nsut/vfw/vfw-tg-topology-ixia-multi-port.yaml + dest: ../samples/vnf_samples/nsut/vfw/vfw-tg-topology-ixia-multi-port-{{ num_vnfs }}.yaml + +- template: + src: ../samples/vnf_samples/nsut/acl/tc_baremetal_acl_rfc2544_ixia_template.yaml + dest: ../samples/vnf_samples/nsut/acl/tc_baremetal_acl_rfc2544_ixia_{{ num_vnfs }}.yaml + +- template: + src: ../samples/vnf_samples/nsut/acl/acl-tg-topology-ixia-multi-port.yaml + dest: ../samples/vnf_samples/nsut/acl/acl-tg-topology-multi-port-ixia-{{ num_vnfs }}.yaml + +- template: + src: ../samples/vnf_samples/traffic_profiles/ipv4_throughput-cgnapt-scale-out.yaml + dest: ../samples/vnf_samples/traffic_profiles/ipv4_throughput-cgnapt-{{ num_vnfs }}.yaml + +- template: + src: ../samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_rfc2544_ixia_template.yaml + dest: ../samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_rfc2544_ixia_{{ num_vnfs }}.yaml + +- template: + src: ../samples/vnf_samples/nsut/cgnapt/cgnapt-tg-topology-ixia-multi-port.yaml + dest: ../samples/vnf_samples/nsut/cgnapt/cgnapt-tg-topology-multi-port-ixia-{{ num_vnfs }}.yaml diff --git a/ansible/multi_port_baremetal_test.yaml b/ansible/multi_port_baremetal_test.yaml new file mode 100644 index 000000000..fb12b1c64 --- /dev/null +++ b/ansible/multi_port_baremetal_test.yaml @@ -0,0 +1,95 @@ +# Copyright (c) 2017 Intel Corporation. # +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +--- +- hosts: localhost + connection: local + vars: + scale_out: + - 1 + - 2 + flow: + traffic_type: 4 + pkt_size: + uplink: {64B: 100} + downlink: {64B: 100} + count: 10 + rfc2544: + allowed_drop_rate: 0.0001 - 0.0001 + vnf_config: + lb_config: 'SW' + lb_count: 1 + worker_config: '1C/1T' + worker_threads: 1 + + # Environment variables + gen: + user: root + password: "" + key_filename: /root/.ssh/id_rsa + pcis: + uplink: + - "0000:05:00.0" + - "0000:05:00.2" + downlink: + - "0000:05:00.1" + - "0000:05:00.3" + ip: + mgmt: + - '1.2.1.6/24' + uplink: + - '152.16.100.20/24' + - '172.16.100.20/24' + downlink: + - '152.16.40.20/24' + - '172.16.40.20/24' + mac: + uplink: + - '00:00:00:9e:00:f8' + - '00:00:00:9e:00:fa' + downlink: + - '00:00:00:9e:00:f9' + - '00:00:00:9e:00:fb' + + vnf: + ip: "192.168.100.101/24" + user: root + password: "" + key_filename: /root/.ssh/id_rsa + pcis: + uplink: + - "0000:05:00.0" + - "0000:05:00.2" + downlink: + - "0000:05:00.1" + - "0000:05:00.3" + ip: + mgmt: + - '1.2.1.6/24' + uplink: + - '152.16.100.10/24' + - '172.16.100.10/24' + downlink: + - '152.16.40.10/24' + - '172.16.40.10/24' + mac: + uplink: + - '00:00:00:9e:00:f8' + - '00:00:00:9e:00:fa' + downlink: + - '00:00:00:9e:00:f9' + - '00:00:00:9e:00:fb' + + tasks: + - include: multi_port_baremetal_test_templates.yml + with_items: "{{ scale_out }}" + diff --git a/ansible/multi_port_baremetal_test_templates.yml b/ansible/multi_port_baremetal_test_templates.yml new file mode 100644 index 000000000..4b905f8c7 --- /dev/null +++ b/ansible/multi_port_baremetal_test_templates.yml @@ -0,0 +1,60 @@ +# Copyright (c) 2017 Intel Corporation. # +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +--- + +- set_fact: + num_vnfs: "{{ item }}" + +- debug: + var: num_vnfs + verbosity: 2 + +- template: + src: ../samples/vnf_samples/traffic_profiles/ipv4_throughput-scale-out.yaml + dest: ../samples/vnf_samples/traffic_profiles/ipv4_throughput-{{ num_vnfs }}.yaml + +- template: + src: ../etc/yardstick/nodes/standalone/baremetal_trex.yaml + dest: /etc/yardstick/nodes/baremetal_trex_{{num_vnfs}}.yaml + +- template: + src: ../etc/yardstick/nodes/standalone/pod_bm_vnf.yaml + dest: /etc/yardstick/nodes/pod_bm_vnf_{{num_vnfs}}.yaml + +- template: + src: ../samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_rfc2544_template.yaml + dest: ../samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_rfc2544_{{ num_vnfs }}.yaml + +- template: + src: ../samples/vnf_samples/nsut/vfw/vfw-tg-topology-multi-port.yaml + dest: ../samples/vnf_samples/nsut/vfw/vfw-tg-topology-multi-port-{{ num_vnfs }}.yaml + +- template: + src: ../samples/vnf_samples/nsut/acl/tc_baremetal_vfw_rfc2544_template.yaml + dest: ../samples/vnf_samples/nsut/acl/tc_baremetal_vfw_rfc2544_{{ num_vnfs }}.yaml + +- template: + src: ../samples/vnf_samples/nsut/acl/acl-tg-topology-multi-port.yaml + dest: ../samples/vnf_samples/nsut/acl/acl-tg-topology-multi-port-{{ num_vnfs }}.yaml + +- template: + src: ../samples/vnf_samples/traffic_profiles/ipv4_throughput-cgnapt-scale-out.yaml + dest: ../samples/vnf_samples/traffic_profiles/ipv4_throughput-cgnapt-{{ num_vnfs }}.yaml + +- template: + src: ../samples/vnf_samples/nsut/cgnapt/tc_baremetal_vfw_rfc2544_template.yaml + dest: ../samples/vnf_samples/nsut/cgnapt/tc_baremetal_vfw_rfc2544_{{ num_vnfs }}.yaml + +- template: + src: ../samples/vnf_samples/nsut/cgnapt/cgnapt-tg-topology-multi-port.yaml + dest: ../samples/vnf_samples/nsut/cgnapt/cgnapt-tg-topology-multi-port-{{ num_vnfs }}.yaml diff --git a/ansible/ovs_scale_out_test_ixia_correlated_templates.yml b/ansible/ovs_scale_out_test_ixia_correlated_templates.yml index ca5fe00ef..c26505342 100644 --- a/ansible/ovs_scale_out_test_ixia_correlated_templates.yml +++ b/ansible/ovs_scale_out_test_ixia_correlated_templates.yml @@ -21,7 +21,7 @@ - template: - src: ../samples/vnf_samples/traffic_profiles/ipv4_throughput-ixia-scale-out.yaml + src: ../samples/vnf_samples/traffic_profiles/ipv4_throughput-ixia-correlated-scale-out.yaml dest: ../samples/vnf_samples/traffic_profiles/ipv4_throughput-ixia-{{ num_vnfs }}.yaml - template: @@ -49,10 +49,6 @@ dest: ../samples/vnf_samples/nsut/acl/acl-tg-topology-ixia-correlated-scale-out-{{ num_vnfs }}.yaml - template: - src: ../samples/vnf_samples/traffic_profiles/ipv4_throughput-cgnapt-ixia-scale-out.yaml - dest: ../samples/vnf_samples/traffic_profiles/ipv4_throughput-cgnapt-{{ num_vnfs }}.yaml - -- template: src: ../samples/vnf_samples/nsut/cgnapt/tc_ovs_cgnapt_udp_ixia_correlated_scale_out_template.yaml dest: ../samples/vnf_samples/nsut/cgnapt/tc_ovs_cgnapt_udp_ixia_correlated_scale_out_{{num_vnfs}}.yaml diff --git a/ansible/ovs_scale_out_test_templates.yml b/ansible/ovs_scale_out_test_templates.yml index aadec6d62..cffa73342 100644 --- a/ansible/ovs_scale_out_test_templates.yml +++ b/ansible/ovs_scale_out_test_templates.yml @@ -25,7 +25,7 @@ - template: src: ../etc/yardstick/nodes/standalone/baremetal_trex.yaml - dest: /etc/yardstick/nodes/baremetal_trex_{{num_vnfs}}.yaml + dest: /etc/yardstick/nodes/baremetal_trex_{{ num_vnfs }}.yaml - template: src: ../etc/yardstick/nodes/standalone/pod_sriov.yaml diff --git a/ansible/roles/download_collectd/defaults/main.yml b/ansible/roles/download_collectd/defaults/main.yml index d4e91acc4..9beaeb897 100644 --- a/ansible/roles/download_collectd/defaults/main.yml +++ b/ansible/roles/download_collectd/defaults/main.yml @@ -1,4 +1,4 @@ --- collectd_url: "https://github.com/collectd/collectd.git" collectd_dest: "{{ clone_dest }}/collectd" -collectd_version: "47c86ace348a1d7a5352a83d10935209f89aa4f5" +collectd_version: "c870991a2d614e51c03c0da76e9aef997343551b" diff --git a/ansible/roles/download_intel_cmt_cat/defaults/main.yml b/ansible/roles/download_intel_cmt_cat/defaults/main.yml index d733e4114..0c26770b9 100644 --- a/ansible/roles/download_intel_cmt_cat/defaults/main.yml +++ b/ansible/roles/download_intel_cmt_cat/defaults/main.yml @@ -1,4 +1,4 @@ --- intel_cmt_cat_url: "https://github.com/01org/intel-cmt-cat.git" intel_cmt_cat_dest: "{{ clone_dest }}/intel-cmt-cat" -intel_cmt_cat_version: "master" +intel_cmt_cat_version: "v1.1.0" diff --git a/ansible/roles/download_pmu_tools/defaults/main.yml b/ansible/roles/download_pmu_tools/defaults/main.yml index 90dae66cf..3b164d1f9 100644 --- a/ansible/roles/download_pmu_tools/defaults/main.yml +++ b/ansible/roles/download_pmu_tools/defaults/main.yml @@ -1,5 +1,5 @@ --- pmu_tools_url: "https://github.com/andikleen/pmu-tools.git" pmu_tools_dest: "{{ clone_dest }}/pmu-tools" -pmu_tools_version: "master" +pmu_tools_version: "8a0417a90c3ec9a09264ae9364519f499e8975c1" perfmon_url: "https://download.01.org/perfmon/" diff --git a/ansible/roles/download_pmu_tools/files/event_download_local.py b/ansible/roles/download_pmu_tools/files/event_download_local.py index 882fc5046..8eda2cd0d 100755 --- a/ansible/roles/download_pmu_tools/files/event_download_local.py +++ b/ansible/roles/download_pmu_tools/files/event_download_local.py @@ -16,35 +16,46 @@ # event_download.py download for current cpu # event_download.py -a download all # event_download.py cpustr... Download for specific CPU +from __future__ import absolute_import +from __future__ import print_function import sys + import re -from urllib2 import urlopen, URLError import os import string from fnmatch import fnmatch from shutil import copyfile +try: + from urllib2 import URLError +except ImportError: + # python 3 + from urllib.error import URLError + + urlpath = 'https://download.01.org/perfmon' -localpath = 'download.01.org/perfmon' +localpath = 'pmu_local_mirror/download.01.org/perfmon' mapfile = 'mapfile.csv' modelpath = localpath + "/" + mapfile -NSB_JSON = '/opt/nsb_bin/pmu_event.json' +NSB_JSON = os.environ.get("PMU_EVENTS_PATH", "/tmp/pmu_event.json") + def get_cpustr(): - f = open('/proc/cpuinfo', 'r') - cpu = [None, None, None] - for j in f: - n = j.split() - if n[0] == 'vendor_id': - cpu[0] = n[2] - elif n[0] == 'model' and n[1] == ':': - cpu[2] = int(n[2]) - elif n[0] == 'cpu' and n[1] == 'family': - cpu[1] = int(n[3]) - if all(cpu): - break + with open('/proc/cpuinfo', 'r') as f: + cpu = [None, None, None] + for j in f: + n = j.split() + if n[0] == 'vendor_id': + cpu[0] = n[2] + elif n[0] == 'model' and n[1] == ':': + cpu[2] = int(n[2]) + elif n[0] == 'cpu' and n[1] == 'family': + cpu[1] = int(n[3]) + if all(cpu): + break return "%s-%d-%X" % (cpu[0], cpu[1], cpu[2]) + def sanitize(s, a): o = "" for j in s: @@ -52,13 +63,14 @@ def sanitize(s, a): o += j return o + def getdir(): try: d = os.getenv("XDG_CACHE_HOME") xd = d if not d: home = os.getenv("HOME") - d = "%s/.cache" % (home) + d = "%s/.cache" % home d += "/pmu-events" if not os.path.isdir(d): # try to handle the sudo case @@ -73,11 +85,13 @@ def getdir(): except OSError: raise Exception('Cannot access ' + d) + NUM_TRIES = 3 + def getfile(url, dir, fn): tries = 0 - print "Downloading", url, "to", fn + print("Downloading", url, "to", fn) while True: try: f = open(url) @@ -86,15 +100,17 @@ def getfile(url, dir, fn): tries += 1 if tries >= NUM_TRIES: raise - print "retrying download" + print("retrying download") continue break - o = open(os.path.join(dir, fn), "w") - o.write(data) - o.close() + with open(os.path.join(dir, fn), "w") as o: + o.write(data) f.close() + allowed_chars = string.ascii_letters + '_-.' + string.digits + + def download(match, key=None, link=True): found = 0 dir = getdir() @@ -105,14 +121,14 @@ def download(match, key=None, link=True): n = j.rstrip().split(",") if len(n) < 4: if len(n) > 0: - print "Cannot parse", n + print("Cannot parse", n) continue cpu, version, name, type = n if not fnmatch(cpu, match) or (key is not None and type not in key) or type.startswith("EventType"): continue cpu = sanitize(cpu, allowed_chars) url = localpath + name - fn = "%s-%s.json" % (cpu, sanitize(type, allowed_chars)) + fn = "%s-%s.json" % (cpu, sanitize(type, allowed_chars)) try: os.remove(os.path.join(dir, fn)) except OSError: @@ -128,34 +144,37 @@ def download(match, key=None, link=True): try: os.symlink(fn, os.path.join(dir, lname)) except OSError as e: - print >>sys.stderr, "Cannot link %s to %s:" % (name, lname), e + print("Cannot link %s to %s:" % (name, lname), e, file=sys.stderr) found += 1 models.close() getfile(localpath + "/readme.txt", dir, "readme.txt") except URLError as e: - print >>sys.stderr, "Cannot access event server:", e - print >>sys.stderr, "If you need a proxy to access the internet please set it with:" - print >>sys.stderr, "\texport https_proxy=http://proxyname..." - print >>sys.stderr, "If you are not connected to the internet please run this on a connected system:" - print >>sys.stderr, "\tevent_download.py '%s'" % (match) - print >>sys.stderr, "and then copy ~/.cache/pmu-events to the system under test" - print >>sys.stderr, "To get events for all possible CPUs use:" - print >>sys.stderr, "\tevent_download.py -a" + print("Cannot access event server:", e, file=sys.stderr) + print("If you need a proxy to access the internet please set it with:", file=sys.stderr) + print("\texport https_proxy=http://proxyname...", file=sys.stderr) + print("If you are not connected to the internet please run this on a connected system:", file=sys.stderr) + print("\tevent_download.py '%s'" % match, file=sys.stderr) + print("and then copy ~/.cache/pmu-events to the system under test", file=sys.stderr) + print("To get events for all possible CPUs use:", file=sys.stderr) + print("\tevent_download.py -a", file=sys.stderr) except OSError as e: - print >>sys.stderr, "Cannot write events file:", e + print("Cannot write events file:", e, file=sys.stderr) return found + def download_current(link=False): """Download JSON event list for current cpu. Returns >0 when a event list is found""" return download(get_cpustr(), link=link) + def eventlist_name(name=None, key="core"): if not name: name = get_cpustr() cache = getdir() return "%s/%s-%s.json" % (cache, name, key) + if __name__ == '__main__': # only import argparse when actually called from command line # this makes ocperf work on older python versions without it. @@ -164,18 +183,19 @@ if __name__ == '__main__': p.add_argument('--all', '-a', help='Download all available event files', action='store_true') p.add_argument('--verbose', '-v', help='Be verbose', action='store_true') p.add_argument('--mine', help='Print name of current CPU', action='store_true') - p.add_argument('--link', help='Create links with the original event file name', action='store_true', default=True) + p.add_argument('--link', help='Create links with the original event file name', + action='store_true', default=True) p.add_argument('cpus', help='CPU identifiers to download', nargs='*') args = p.parse_args() cpustr = get_cpustr() if args.verbose or args.mine: - print "My CPU", cpustr + print("My CPU", cpustr) if args.mine: sys.exit(0) d = getdir() if args.all: - found = download('*', link=args.link) + found = download('*', link=args.link) elif len(args.cpus) == 0: found = download_current(link=args.link) else: @@ -184,10 +204,10 @@ if __name__ == '__main__': found += download(j, link=args.link) if found == 0: - print >>sys.stderr, "Nothing found" + print("Nothing found", file=sys.stderr) el = eventlist_name() if os.path.exists(el): - print "my event list", el - copyfile(el,NSB_JSON) - print "File copied to ", NSB_JSON + print("my event list", el) + copyfile(el, NSB_JSON) + print("File copied to ", NSB_JSON) diff --git a/ansible/roles/download_pmu_tools/tasks/main.yml b/ansible/roles/download_pmu_tools/tasks/main.yml index e78cc72d6..59a63aa85 100644 --- a/ansible/roles/download_pmu_tools/tasks/main.yml +++ b/ansible/roles/download_pmu_tools/tasks/main.yml @@ -29,13 +29,15 @@ pmu_tools_path: "{{ pmu_tools_dest }}" - name: Create perfmon local mirror - command: "wget -mkEpnp {{ perfmon_url }} -P {{ pmu_tools_dest }}" + command: "wget -mkEpnp {{ perfmon_url }} -P {{ INSTALL_BIN_PATH }}/pmu_local_mirror" ignore_errors: yes + failed_when: false #some of the links while creating mirror are not found, results in failure + no_log: True - name: Copy local event download file copy: src: event_download_local.py - dest: "{{ pmu_tools_dest }}" + dest: "{{ INSTALL_BIN_PATH }}/event_download_local.py" owner: root group: root mode: 0755 diff --git a/ansible/roles/increase_open_file_limits/defaults/main.yml b/ansible/roles/increase_open_file_limits/defaults/main.yml new file mode 100644 index 000000000..02cb12461 --- /dev/null +++ b/ansible/roles/increase_open_file_limits/defaults/main.yml @@ -0,0 +1,15 @@ +# Copyright (c) 2017 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +--- +open_file_limit: 500000 diff --git a/ansible/roles/increase_open_file_limits/tasks/main.yml b/ansible/roles/increase_open_file_limits/tasks/main.yml new file mode 100644 index 000000000..4ef5e6f23 --- /dev/null +++ b/ansible/roles/increase_open_file_limits/tasks/main.yml @@ -0,0 +1,20 @@ +# Copyright (c) 2017 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +--- + - name: increase open file limits for control + pam_limits: "domain={{ item[0] }} limit_type={{ item[1] }} limit_item=nofile value={{ open_file_limit }}" + with_nested: + - [ '*', 'root' ] + - [ 'soft', 'hard' ] + diff --git a/ansible/roles/install_image_dependencies/defaults/main.yml b/ansible/roles/install_image_dependencies/defaults/main.yml index 1540806cc..362fa351b 100644 --- a/ansible/roles/install_image_dependencies/defaults/main.yml +++ b/ansible/roles/install_image_dependencies/defaults/main.yml @@ -22,6 +22,9 @@ install_dependencies: - unzip # for Trex - libpython2.7-dev + # for IxLoad + - libxft-dev + - libxss-dev RedHat: - bc - fio diff --git a/ansible/scale_out_test_templates.yml b/ansible/scale_out_test_templates.yml new file mode 100644 index 000000000..4213816fa --- /dev/null +++ b/ansible/scale_out_test_templates.yml @@ -0,0 +1,48 @@ +# Copyright (c) 2017 Intel Corporation. # +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +--- + +- set_fact: + num_vnfs: "{{ item }}" + +- debug: + var: num_vnfs + verbosity: 2 + +- template: + src: ../samples/vnf_samples/traffic_profiles/ipv4_throughput-scale-out.yaml + dest: ../samples/vnf_samples/traffic_profiles/ipv4_throughput-{{ num_vnfs }}.yaml + +- template: + src: ../samples/vnf_samples/traffic_profiles/ipv4_throughput_cgnapt-scale-out.yaml + dest: ../samples/vnf_samples/traffic_profiles/ipv4_throughput_cgnapt-{{ num_vnfs }}.yaml + +- template: + src: ../samples/vnf_samples/nsut/acl/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_traffic_scale_out.yaml + dest: ../samples/vnf_samples/nsut/acl/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_traffic_scale_{{ num_vnfs }}.yaml + +- template: + src: ../samples/vnf_samples/nsut/acl/acl-tg-topology-3node-scale-out.yaml + dest: ../samples/vnf_samples/nsut/acl/acl-tg-topology-3node-{{ num_vnfs }}.yaml + +- template: + src: ../samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_out.yaml + dest: ../samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_{{ num_vnfs }}.yaml + +- template: + src: ../samples/vnf_samples/nsut/cgnapt/tc_heat_rfc2544_ipv4_1flow_64B_trex_correlated_scale_out.yaml + dest: ../samples/vnf_samples/nsut/cgnapt/tc_heat_rfc2544_ipv4_1flow_64B_trex_correlated_scale_{{ num_vnfs }}.yaml + +- template: + src: ../samples/vnf_samples/nsut/cgnapt/cgnapt-vnf-topology-3node-scale-out.yaml + dest: ../samples/vnf_samples/nsut/cgnapt/cgnapt-vnf-topology-3node-{{ num_vnfs }}.yaml diff --git a/ansible/sriov_scale_out_test_ixia_correlated_templates.yml b/ansible/sriov_scale_out_test_ixia_correlated_templates.yml index 2a6c352b4..626030712 100644 --- a/ansible/sriov_scale_out_test_ixia_correlated_templates.yml +++ b/ansible/sriov_scale_out_test_ixia_correlated_templates.yml @@ -21,7 +21,7 @@ - template: - src: ../samples/vnf_samples/traffic_profiles/ipv4_throughput-ixia-scale-out.yaml + src: ../samples/vnf_samples/traffic_profiles/ipv4_throughput-ixia-correlated-scale-out.yaml dest: ../samples/vnf_samples/traffic_profiles/ipv4_throughput-ixia-{{ num_vnfs }}.yaml - template: diff --git a/ansible/standalone_ovs_scale_out_ixia_correlated_test.yaml b/ansible/standalone_ovs_scale_out_ixia_correlated_test.yaml index e3c8c7ca1..516676576 100644 --- a/ansible/standalone_ovs_scale_out_ixia_correlated_test.yaml +++ b/ansible/standalone_ovs_scale_out_ixia_correlated_test.yaml @@ -55,7 +55,7 @@ ixchassis: "1.1.1.127" #ixia chassis ip tcl_port: "8009" # tcl server port lib_path: "/opt/ixia/ixos-api/8.01.0.2/lib/ixTcl1.0" - ""_dir: "/opt/ixia/ixos-api/8.01.0.2/" + root_dir: "/opt/ixia/ixos-api/8.01.0.2/" py_bin_path: "/opt/ixia/ixload/8.01.106.3/bin/" py_lib_path: "/opt/ixia/ixnetwork/8.01.1029.14/lib/PythonApi" dut_result_dir: "/mnt/results" @@ -87,7 +87,7 @@ # Environment variables gen_1: user: "" - password: ""! + password: "" key_filename: /""/.ssh/id_rsa pcis: uplink: diff --git a/ansible/standalone_ovs_scale_out_ixia_test.yaml b/ansible/standalone_ovs_scale_out_ixia_test.yaml index d8ee224ac..ff665377f 100644 --- a/ansible/standalone_ovs_scale_out_ixia_test.yaml +++ b/ansible/standalone_ovs_scale_out_ixia_test.yaml @@ -27,6 +27,8 @@ socket_0: 2048 socket_1: 2048 flavor: + user: root + password: "" ram: 4096 image: "/var/lib/libvirt/images/ubuntu.qcow2" extra_specs: @@ -56,7 +58,7 @@ ixchassis: "1.1.1.127" #ixia chassis ip tcl_port: "8009" # tcl server port lib_path: "/opt/ixia/ixos-api/8.01.0.2/lib/ixTcl1.0" - ""_dir: "/opt/ixia/ixos-api/8.01.0.2/" + root_dir: "/opt/ixia/ixos-api/8.01.0.2/" py_bin_path: "/opt/ixia/ixload/8.01.106.3/bin/" py_lib_path: "/opt/ixia/ixnetwork/8.01.1029.14/lib/PythonApi" dut_result_dir: "/mnt/results" diff --git a/ansible/standalone_ovs_scale_out_test.yaml b/ansible/standalone_ovs_scale_out_test.yaml index 2a0246c2d..996fc0f50 100644 --- a/ansible/standalone_ovs_scale_out_test.yaml +++ b/ansible/standalone_ovs_scale_out_test.yaml @@ -51,9 +51,9 @@ # Environment variables gen: - user: root + user: "" password: "" - key_filename: /root/.ssh/id_rsa + key_filename: ~ pcis: uplink: - "0000:05:00.0" @@ -80,9 +80,9 @@ host: ip: "192.168.100.101/24" - user: root + user: "" password: "" - key_filename: /root/.ssh/id_rsa + key_filename: ~ vnf: pcis: diff --git a/ansible/standalone_sriov_scale_out_ixia_correlated_test.yaml b/ansible/standalone_sriov_scale_out_ixia_correlated_test.yaml index 084dcbf7e..45a4a498b 100644 --- a/ansible/standalone_sriov_scale_out_ixia_correlated_test.yaml +++ b/ansible/standalone_sriov_scale_out_ixia_correlated_test.yaml @@ -47,7 +47,7 @@ ixchassis: "1.1.1.127" #ixia chassis ip tcl_port: "8009" # tcl server port lib_path: "/opt/ixia/ixos-api/8.01.0.2/lib/ixTcl1.0" - ""_dir: "/opt/ixia/ixos-api/8.01.0.2/" + root_dir: "/opt/ixia/ixos-api/8.01.0.2/" py_bin_path: "/opt/ixia/ixload/8.01.106.3/bin/" py_lib_path: "/opt/ixia/ixnetwork/8.01.1029.14/lib/PythonApi" dut_result_dir: "/mnt/results" @@ -80,7 +80,7 @@ gen_1: user: "" password: "" - key_filename: /""/.ssh/id_rsa + key_filename: "~" pcis: uplink: - "0000:05:00.0" diff --git a/ansible/standalone_sriov_scale_out_ixia_test.yaml b/ansible/standalone_sriov_scale_out_ixia_test.yaml index 79ec0e68e..659dbef07 100644 --- a/ansible/standalone_sriov_scale_out_ixia_test.yaml +++ b/ansible/standalone_sriov_scale_out_ixia_test.yaml @@ -47,7 +47,7 @@ ixchassis: "1.1.1.127" #ixia chassis ip tcl_port: "8009" # tcl server port lib_path: "/opt/ixia/ixos-api/8.01.0.2/lib/ixTcl1.0" - ""_dir: "/opt/ixia/ixos-api/8.01.0.2/" + root_dir: "/opt/ixia/ixos-api/8.01.0.2/" py_bin_path: "/opt/ixia/ixload/8.01.106.3/bin/" py_lib_path: "/opt/ixia/ixnetwork/8.01.1029.14/lib/PythonApi" dut_result_dir: "/mnt/results" @@ -80,7 +80,7 @@ ip: "192.168.100.101/24" user: "" password: "" - key_filename: /""/.ssh/id_rsa + key_filename: "~" vnf: user: "" diff --git a/ansible/standalone_sriov_scale_out_test.yaml b/ansible/standalone_sriov_scale_out_test.yaml index e51e5617e..fe6989d54 100644 --- a/ansible/standalone_sriov_scale_out_test.yaml +++ b/ansible/standalone_sriov_scale_out_test.yaml @@ -19,7 +19,7 @@ - 2 flavor: user: root - password: ""! + password: "" ram: 4096 image: "/var/lib/libvirt/images/ubuntu.qcow2" extra_specs: diff --git a/ansible/ubuntu_server_baremetal_deploy_samplevnfs.yml b/ansible/ubuntu_server_baremetal_deploy_samplevnfs.yml index 891ccd1dc..42a7b2d08 100644 --- a/ansible/ubuntu_server_baremetal_deploy_samplevnfs.yml +++ b/ansible/ubuntu_server_baremetal_deploy_samplevnfs.yml @@ -23,6 +23,8 @@ when: proxy_env is defined and proxy_env # can't update grub in chroot/docker - enable_hugepages_on_boot + # needed for collectd plugins + - increase_open_file_limits - install_image_dependencies - role: download_dpdk # dpdk_version: "17.02" diff --git a/ansible/ubuntu_server_cloudimg_modify_samplevnfs.yml b/ansible/ubuntu_server_cloudimg_modify_samplevnfs.yml index 79249dd37..dff7f976a 100644 --- a/ansible/ubuntu_server_cloudimg_modify_samplevnfs.yml +++ b/ansible/ubuntu_server_cloudimg_modify_samplevnfs.yml @@ -31,6 +31,8 @@ when: proxy_env is defined and proxy_env # can't update grub in chroot/docker - enable_hugepages_on_boot + # needed for collectd plugins + - increase_open_file_limits - modify_cloud_config - install_image_dependencies - role: download_dpdk |