From 9ccbfe7e20b3914c37c0dec50762cec9da8a63c6 Mon Sep 17 00:00:00 2001 From: "Lovett, Trevor" Date: Tue, 14 May 2019 10:37:17 -0500 Subject: [VVP] Adding env file checks for contrail * Introduced helper method get_param to handle extracting param names from both get_params with string and list arguments * Moved test files for environment tests to independent directories to make it easier to isolate unit tests * Added contrail tests related to env file usage related to VNFRQTS-630 Change-Id: I3b44f0ce2d5657e9ab5290cd77f1422b36052b6a Issue-ID: VVP-213 Signed-off-by: Lovett, Trevor --- .../fail/STARKDB-nested.yaml | 122 ------- .../contrail_instance_ip_fail.env | 49 +++ .../contrail_instance_ip_fail.yaml | 76 ++++ .../test_environment_file_parameters/fail/fail.env | 102 ------ .../fail/fail.yaml | 380 ------------------- .../fail/general/STARKDB-nested.yaml | 132 +++++++ .../fail/general/fail.env | 108 ++++++ .../fail/general/fail.yaml | 402 +++++++++++++++++++++ .../fail/vmi_aap/vmi_aap_fail.env | 46 +++ .../fail/vmi_aap/vmi_aap_fail.yaml | 61 ++++ .../pass/STARKDB-nested.yaml | 61 ---- .../contrail_instance_ip_pass.env | 48 +++ .../contrail_instance_ip_pass.yaml | 76 ++++ .../pass/general/STARKDB-nested.yaml | 61 ++++ .../pass/general/pass.env | 102 ++++++ .../pass/general/pass.yaml | 343 ++++++++++++++++++ .../test_environment_file_parameters/pass/pass.env | 102 ------ .../pass/pass.yaml | 343 ------------------ .../pass/vmi_aap/vmi_aap_pass.env | 46 +++ .../pass/vmi_aap/vmi_aap_pass.yaml | 61 ++++ ice_validator/tests/helpers.py | 14 + .../tests/test_environment_file_parameters.py | 104 +++++- .../tests/test_neutron_port_network_attachment.py | 165 +++++---- 23 files changed, 1816 insertions(+), 1188 deletions(-) delete mode 100644 ice_validator/tests/fixtures/test_environment_file_parameters/fail/STARKDB-nested.yaml create mode 100644 ice_validator/tests/fixtures/test_environment_file_parameters/fail/contrail_instance_ip/contrail_instance_ip_fail.env create mode 100644 ice_validator/tests/fixtures/test_environment_file_parameters/fail/contrail_instance_ip/contrail_instance_ip_fail.yaml delete mode 100644 ice_validator/tests/fixtures/test_environment_file_parameters/fail/fail.env delete mode 100644 ice_validator/tests/fixtures/test_environment_file_parameters/fail/fail.yaml create mode 100644 ice_validator/tests/fixtures/test_environment_file_parameters/fail/general/STARKDB-nested.yaml create mode 100644 ice_validator/tests/fixtures/test_environment_file_parameters/fail/general/fail.env create mode 100644 ice_validator/tests/fixtures/test_environment_file_parameters/fail/general/fail.yaml create mode 100644 ice_validator/tests/fixtures/test_environment_file_parameters/fail/vmi_aap/vmi_aap_fail.env create mode 100644 ice_validator/tests/fixtures/test_environment_file_parameters/fail/vmi_aap/vmi_aap_fail.yaml delete mode 100644 ice_validator/tests/fixtures/test_environment_file_parameters/pass/STARKDB-nested.yaml create mode 100644 ice_validator/tests/fixtures/test_environment_file_parameters/pass/contrail_instance_ip/contrail_instance_ip_pass.env create mode 100644 ice_validator/tests/fixtures/test_environment_file_parameters/pass/contrail_instance_ip/contrail_instance_ip_pass.yaml create mode 100644 ice_validator/tests/fixtures/test_environment_file_parameters/pass/general/STARKDB-nested.yaml create mode 100644 ice_validator/tests/fixtures/test_environment_file_parameters/pass/general/pass.env create mode 100644 ice_validator/tests/fixtures/test_environment_file_parameters/pass/general/pass.yaml delete mode 100644 ice_validator/tests/fixtures/test_environment_file_parameters/pass/pass.env delete mode 100644 ice_validator/tests/fixtures/test_environment_file_parameters/pass/pass.yaml create mode 100644 ice_validator/tests/fixtures/test_environment_file_parameters/pass/vmi_aap/vmi_aap_pass.env create mode 100644 ice_validator/tests/fixtures/test_environment_file_parameters/pass/vmi_aap/vmi_aap_pass.yaml diff --git a/ice_validator/tests/fixtures/test_environment_file_parameters/fail/STARKDB-nested.yaml b/ice_validator/tests/fixtures/test_environment_file_parameters/fail/STARKDB-nested.yaml deleted file mode 100644 index 45e0edb..0000000 --- a/ice_validator/tests/fixtures/test_environment_file_parameters/fail/STARKDB-nested.yaml +++ /dev/null @@ -1,122 +0,0 @@ -# -*- coding: utf8 -*- -# ============LICENSE_START======================================================= -# org.onap.vvp/validation-scripts -# =================================================================== -# Copyright © 2019 AT&T Intellectual Property. All rights reserved. -# =================================================================== -# -# Unless otherwise specified, all software contained herein is licensed -# under the Apache License, Version 2.0 (the "License"); -# you may not use this software 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. -# -# -# -# Unless otherwise specified, all documentation contained herein is licensed -# under the Creative Commons License, Attribution 4.0 Intl. (the "License"); -# you may not use this documentation except in compliance with the License. -# You may obtain a copy of the License at -# -# https://creativecommons.org/licenses/by/4.0/ -# -# Unless required by applicable law or agreed to in writing, documentation -# 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. -# -# ============LICENSE_END============================================ -# -# - -heat_template_version: 2015-04-30 - -description: fdsafsfsa - -parameters: - - my_nested_parameter: - type: number - description: sdfnklafd - STARKDB_image_name: - type: number - description: sdfnklafd - STARKDB_name: - type: number - description: sdfnklafd - my_nested_parameter: - type: number - description: sdfnklafd - #constraints: - # - range: { min: 100, max: 400 } - -resources: - - STARKDB_server_2: - type: OS::Nova::Server - properties: - image: { get_param: STARKDB_image_name } - flavor: { get_param: STARKDB_flavor_dvdfg } - name: { get_param: STARKDB_name } - availability_zone: { get_param: availability_zone_0 } - - my_nested_resource2: - type: test - properties: - name: { get_param: asfasf } - - STARKDB_2_crazy_port_2: - type: OS::Neutron::Port - properties: - network: { get_param: crazy_net_id } - fixed_ips: - - subnet: { get_param: crazy_subnet_id } - - ip_address: { get_param: STARKDB_crazy_ip_0 } - allowed_address_pairs: [ { "ip_address": {get_param: - STARKDB_crazy_floating_ip}}] - - int_private_net_id: - type: OS::Neutron::Net - properties: - name: { get_param: int_priv_net_id } - - STARKDB_0_int_priv_port_0: - type: OS::Neutron::Port - properties: - network: { get_resource: int_private_net_id } - fixed_ips: - - subnet: { get_resource: int_priv_subnet } - - ip_address: { get_param: STARKDB_int_private_v6_ips } - - myrouteprefix: - type: OS::ContrailV2::InterfaceRouteTable - properties: - name: - str_replace: - template: VNF_NAME_interface_route_table - params: - VNF_NAME: { get_param: vnf_name } - interface_route_table_routes: - interface_route_table_routes_route: { get_param: fw_oam_route_prefixes } - test: safd - - stark_rg: - type: OS::Heat::ResourceGroup - properties: - count: { get_param: stark_rg_count } - resource_def: - type: STARKDB-nested.yaml - properties: - my_nested_parameter: 4 - -outputs: - test_value: - value: { get_param: my_nested_parameter } diff --git a/ice_validator/tests/fixtures/test_environment_file_parameters/fail/contrail_instance_ip/contrail_instance_ip_fail.env b/ice_validator/tests/fixtures/test_environment_file_parameters/fail/contrail_instance_ip/contrail_instance_ip_fail.env new file mode 100644 index 0000000..0f07546 --- /dev/null +++ b/ice_validator/tests/fixtures/test_environment_file_parameters/fail/contrail_instance_ip/contrail_instance_ip_fail.env @@ -0,0 +1,49 @@ +# -*- coding: utf8 -*- +# ============LICENSE_START======================================================= +# org.onap.vvp/validation-scripts +# =================================================================== +# Copyright © 2019 AT&T Intellectual Property. All rights reserved. +# =================================================================== +# +# Unless otherwise specified, all software contained herein is licensed +# under the Apache License, Version 2.0 (the "License"); +# you may not use this software 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. +# +# +# +# Unless otherwise specified, all documentation contained herein is licensed +# under the Creative Commons License, Attribution 4.0 Intl. (the "License"); +# you may not use this documentation except in compliance with the License. +# You may obtain a copy of the License at +# +# https://creativecommons.org/licenses/by/4.0/ +# +# Unless required by applicable law or agreed to in writing, documentation +# 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. +# +# ============LICENSE_END============================================ +# +# + +parameters: + + fw_oam_protected_ips: 127.0.0.1 + fw_dns_ip_0: 127.0.0.1 + #fw_other_ip_0: 127.0.0.1 + subnet_uuid: aldkjfs + + + + diff --git a/ice_validator/tests/fixtures/test_environment_file_parameters/fail/contrail_instance_ip/contrail_instance_ip_fail.yaml b/ice_validator/tests/fixtures/test_environment_file_parameters/fail/contrail_instance_ip/contrail_instance_ip_fail.yaml new file mode 100644 index 0000000..d5bc147 --- /dev/null +++ b/ice_validator/tests/fixtures/test_environment_file_parameters/fail/contrail_instance_ip/contrail_instance_ip_fail.yaml @@ -0,0 +1,76 @@ +# -*- coding: utf8 -*- +# ============LICENSE_START======================================================= +# org.onap.vvp/validation-scripts +# =================================================================== +# Copyright © 2019 AT&T Intellectual Property. All rights reserved. +# =================================================================== +# +# Unless otherwise specified, all software contained herein is licensed +# under the Apache License, Version 2.0 (the "License"); +# you may not use this software 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. +# +# +# +# Unless otherwise specified, all documentation contained herein is licensed +# under the Creative Commons License, Attribution 4.0 Intl. (the "License"); +# you may not use this documentation except in compliance with the License. +# You may obtain a copy of the License at +# +# https://creativecommons.org/licenses/by/4.0/ +# +# Unless required by applicable law or agreed to in writing, documentation +# 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. +# +# ============LICENSE_END============================================ +# +# + +heat_template_version: 2015-04-30 + +description: fdsafsfsa + +parameters: + + fw_oam_protected_ips: + type: comma_delimited_list + + fw_dns_ip_0: + type: string + + fw_other_ip_0: + type: string + + subnet_uuid: + type: string + +resources: + + fw_0_oam_protected_vmi_0_IP_0: + type: OS::ContrailV2::InstanceIp + properties: + instance_ip_address: { get_param: [fw_oam_protected_ips, get_param: index ] } + subnet_uuid: { get_param: subnet_uuid } + + fw_0_oam_protected_vmi_0_IP_1: + type: OS::ContrailV2::InstanceIp + properties: + instance_ip_address: { get_param: fw_dns_ip_0 } + subnet_uuid: { get_param: subnet_uuid } + + fw_0_int_other_vmi_0_IP_0: + type: OS::ContrailV2::InstanceIp + properties: + instance_ip_address: { get_param: fw_other_ip_0 } + subnet_uuid: { get_param: subnet_uuid } diff --git a/ice_validator/tests/fixtures/test_environment_file_parameters/fail/fail.env b/ice_validator/tests/fixtures/test_environment_file_parameters/fail/fail.env deleted file mode 100644 index 1092685..0000000 --- a/ice_validator/tests/fixtures/test_environment_file_parameters/fail/fail.env +++ /dev/null @@ -1,102 +0,0 @@ -# -*- coding: utf8 -*- -# ============LICENSE_START======================================================= -# org.onap.vvp/validation-scripts -# =================================================================== -# Copyright © 2019 AT&T Intellectual Property. All rights reserved. -# =================================================================== -# -# Unless otherwise specified, all software contained herein is licensed -# under the Apache License, Version 2.0 (the "License"); -# you may not use this software 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. -# -# -# -# Unless otherwise specified, all documentation contained herein is licensed -# under the Creative Commons License, Attribution 4.0 Intl. (the "License"); -# you may not use this documentation except in compliance with the License. -# You may obtain a copy of the License at -# -# https://creativecommons.org/licenses/by/4.0/ -# -# Unless required by applicable law or agreed to in writing, documentation -# 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. -# -# ============LICENSE_END============================================ -# -# - -parameters: - - fw_oam_route_prefixes: nsaflj - - myvm_net_fqdn: nasfln - - vnf_id: sadfadf - - vf_module_id: sadfadf - - vf_module_name: sadfadf - - vnf_name: sadfadf - - starkdb_name: bghbhjb - - STARKDB_name: bghbhjb - - #STARKDB_image_name: sadfadf - - #STARKDB_flavor_dvdfg: sadfadf - - TESTDB_name: bghbhjb - - TESTDB_valet_hosts: test - - #TESTDB_image_name: sadfadf - - #TESTDB_flavor_name: sadfadf - - stark_vol1_id: sanfkl - - param_X: sadnfklsadnfl - - priv_net_id: 123214 - - priv_sub2net_id: 123123 - - int_priv_net_id: sndfj - - workload_context: asdfsadfs - - environment_context: asdfsadfs - - availability_zone_0: sadnfjk - - #STARKDB_int_private_v6_ips: ansdfj - - int_priv_subnet_name: safbdjk - - STARKDB_crazy_floating_ip: safd - - crazy_net_id: safd - - crazy_subnet_id: asfd - - STARKDB_crazy_ip_0: sadf - - STARKDB_crazy_ip_1: fsad - - TESTDB_name2: asnjkv - - vf_module_index: nalfs diff --git a/ice_validator/tests/fixtures/test_environment_file_parameters/fail/fail.yaml b/ice_validator/tests/fixtures/test_environment_file_parameters/fail/fail.yaml deleted file mode 100644 index 8ee4182..0000000 --- a/ice_validator/tests/fixtures/test_environment_file_parameters/fail/fail.yaml +++ /dev/null @@ -1,380 +0,0 @@ -# -*- coding: utf8 -*- -# ============LICENSE_START======================================================= -# org.onap.vvp/validation-scripts -# =================================================================== -# Copyright © 2019 AT&T Intellectual Property. All rights reserved. -# =================================================================== -# -# Unless otherwise specified, all software contained herein is licensed -# under the Apache License, Version 2.0 (the "License"); -# you may not use this software 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. -# -# -# -# Unless otherwise specified, all documentation contained herein is licensed -# under the Creative Commons License, Attribution 4.0 Intl. (the "License"); -# you may not use this documentation except in compliance with the License. -# You may obtain a copy of the License at -# -# https://creativecommons.org/licenses/by/4.0/ -# -# Unless required by applicable law or agreed to in writing, documentation -# 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. -# -# ============LICENSE_END============================================ -# -# - -heat_template_version: 2015-04-30 - -description: fdsafsfsa - -parameters: - - fw_oam_route_prefixes: - type: string - description: nsjalfdn - - myvm_net_fqdn: - type: string - description: nasfln - - TESTDB_valet_hosts: - type: string - description: nsfadl - - STARKDB_int_private_v6_ips: - type: comma_delimited_list - description: ndsajlfn - - workload_context: - type: string - description: Unique ID for this VNF instance - - availability_zone_0: - type: json - description: Unique ID for this VNF instance - - environment_context: - type: string - description: Unique ID for this VNF instance - - vnf_id: - type: string - description: Unique ID for this VNF instance - - vf_module_id: - type: json - description: Unique ID for this VNF module instance - - vnf_name: - type: string - description: Unique name for this VNF instance - - starkdb_name: - type: string - description: fdhsfbsakdjnfjdsank - - STARKDB_name: - type: json - description: fdhsfbsakdjnfjdsank - - STARKDB_image_name: - type: string - description: fdhsfbsakdjnfjdsank - - STARKDB_flavor_dvdfg: - type: string - description: fdhsfbsakdjnfjdsank - - - TESTDB_name: - type: string - description: fdhsfbsakdjnfjdsank - - TESTDB_name2: - type: string - description: fdhsfbsakdjnfjdsank - - TESTDB_image_name: - type: string - description: fdhsfbsakdjnfjdsank - - TESTDB_flavor_name: - type: string - description: fdhsfbsakdjnfjdsank - - stark_vol1_id: - type: number - description: myvolume - constraints: - - range: { min: 100, max: 400 } - - param_X: - type: string - description: fdafsda - - priv_net_id: - type: string - description: external network - - #priv_sub2net_id: - # type: json - # description: external subnetwork - - int_priv_subnet_name: - type: string - description: sadnfjls - - int_priv_net_id: - type: string - description: internal network name - - STARKDB_crazy_floating_ip: - type: string - description: asnfjl - - crazy_net_id: - type: string - description: ansfkld - - crazy_subnet_id: - type: string - description: asdfnkal - - STARKDB_crazy_ip_0: - type: string - description: nsalfd - - STARKDB_crazy_ip_1: - type: string - description: nsalfd - - stark_rg_count: - type: string - description: nafs - -resources: - - STARKDB_cinder_attach: - type: OS::Cinder::VolumeAttachment - properties: - server: { get_resource: STARKDB_server_0 } - volume: { get_param: stark_vol1_id } - - STARKDB_server_0: - type: OS::Nova::Server - properties: - image: { get_param: STARKDB_image_name } - flavor: { get_param: STARKDB_flavor_dvdfg } - name: { get_param: starkdb_name } - metadata: - vnf_id: { get_param: vnf_id } - vf_module_id: { get_param: vf_module_id } - vnf_name: { get_param: vnf_name } - #int_network_id: { get_resource: int_priv_network } - workload_context: { get_param: workload_context } - environment_context: { get_param: environment_context } - #valet_groups: "safnkl, sdaflksanl" - networks: - - port: { get_resource: STARKDB_0_int_priv_port_0 } - - port: { get_resource: STARKDB_0_PRIV_port_1} - - port: { get_resource: STARKDB_0_crazy_port_0 } - - network: { get_param: int_priv_net_id } - user_data: { get_file: deep-nested.file } - - - STARKDB_server_1: - type: OS::Nova::Server - properties: - image: { get_param: STARKDB_image_name } - flavor: { get_param: STARKDB_flavor_dvdfg } - name: { get_param: STARKDB_name } - metadata: - vnf_id: { get_param: vnf_id } - vf_module_id: { get_param: vf_module_id } - vnf_name: { get_param: vnf_name } - #int_network_id: { get_resource: int_priv_network } - workload_context: { get_param: workload_context } - environment_context: { get_param: environment_context } - #valet_groups: "safnkl, sdaflksanl" - networks: - - port: {get_resource: STARKDB_1_int_priv_port_0} - - port: {get_resource: STARKDB_1_crazy_port_0} - - network: { get_param: int_priv_net_id } - - TESTDB_server_0: - type: OS::Nova::Server - properties: - image: { get_param: TESTDB_image_name } - flavor: { get_param: TESTDB_flavor_name } - name: { get_param: TESTDB_name } - metadata: - vnf_id: { get_param: vnf_id } - vf_module_id: { get_param: vf_module_id } - vnf_name: { get_param: vnf_name } - #int_network_id: { get_resource: int_priv_network } - workload_context: { get_param: workload_context } - environment_context: { get_param: environment_context } - #valet_groups: "safnkl, sdaflksanl" - networks: - - port: {get_resource: TESTDB_0_int_priv_port_0} - - network: { get_param: int_priv_net_id } - - availability_zone: { get_param: availability_zone_0 } - - TESTDB_server_1: - type: OS::Nova::Server - properties: - image: { get_param: TESTDB_image_name } - flavor: { get_param: TESTDB_flavor_name } - name: { get_param: TESTDB_name2 } - metadata: - test_fqdn: { get_param: myvm_net_fqdn } - vnf_id: { get_param: vnf_id } - vf_module_id: { get_param: vf_module_id } - vnf_name: { get_param: vnf_name } - #int_network_id: { get_resource: int_priv_network } - workload_context: { get_param: workload_context } - environment_context: { get_param: environment_context } - #valet_groups: "safnkl, sdaflksanl" - networks: - - port: {get_resource: TESTDB_0_int_priv_port_0} - - network: { get_param: int_priv_net_id } - - availability_zone: - str_replace: - template: $AZ$VALET_HOST_ASSIGNMENT - params: - $AZ: { get_param: availability_zone_0 } - $VALET_HOST_ASSIGNMENT: { get_param: [ TESTDB_valet_hosts, 0 ] } - - - vol_attachment: - type: OS::Cinder::VolumeAttachment - properties: - volume_id: { get_param: stark_vol1_id } - server: { get_resource: STARKDB_server_0 } - - int_private_net_id: - type: OS::Neutron::Net - properties: - name: { get_param: int_priv_net_id } - - priv_network: - type: OS::Neutron::Net - properties: - fnsdf: nksldfnkl - - stark_nested_resource: - type: STARKDB-nested.yaml - properties: - my_nested_parame: { get_param: vnf_id } - - int_priv_subnet: - type: OS::Neutron::Subnet - properties: - name: { get_param: int_priv_subnet_name} - network_id: { get_resource: int_private_net_id } - - STARKDB_0_int_priv_port_0: - type: OS::Neutron::Port - properties: - network: { get_resource: int_private_net_id } - fixed_ips: - - subnet: { get_resource: int_priv_subnet } - - ip_address: { get_param: STARKDB_int_private_v6_ips } - - - STARKDB_0_crazy_port_0: - type: OS::Neutron::Port - properties: - network: { get_param: crazy_net_id } - fixed_ips: - - subnet: { get_param: crazy_subnet_id } - - ip_address: { get_param: STARKDB_crazy_ip_0 } - allowed_address_pairs: [ { "ip_address": {get_param: - STARKDB_crazy_floating_ip}}] - - - STARKDB_1_crazy_port_0: - type: OS::Neutron::Port - properties: - network: { get_param: crazy_net_id } - fixed_ips: - - subnet: { get_param: crazy_subnet_id } - - ip_address: { get_param: STARKDB_crazy_ip_1 } - allowed_address_pairs: [ { "ip_address": {get_param: - STARKDB_crazy_floating_ip}}] - - STARKDB_1_int_priv_port_0: - type: OS::Neutron::Port - properties: - network: { get_resource: int_private_net_id } - - - TESTDB_0_int_priv_port_0: - type: OS::Neutron::Port - properties: - network: { get_param: int_priv_net_id } - - STARKDB_0_PRIV_port_1: - type: OS::Neutron::Port - properties: - network: { get_param: priv_net_id } - - STARKDB_cloud_config: - type: OS::Heat::CloudConfig - - - myrouteprefix: - type: OS::ContrailV2::InterfaceRouteTable - properties: - name: - str_replace: - template: VNF_NAME_interface_route_table - params: - VNF_NAME: { get_param: vnf_name } - interface_route_table_routes: - interface_route_table_routes_route: { get_param: fw_oam_route_prefixes } - test: safd - - stark_rg: - type: OS::Heat::ResourceGroup - properties: - count: { get_param: stark_rg_count } - resource_def: - type: STARKDB-nested.yaml - properties: - my_nested_parameter: 4 - -outputs: - test_output: - value: { list_join: [',', [ { get_param: param_X }, { get_param: stark_vol1_id } ] ] } - - int_priv_su2bnet_id: - value: { get_resource: int_priv_subnet } - - int_priv_net_id: - value: { get_resource: int_private_net_id } - - STARKDB_crazy_floating_ip: - value: { get_param: STARKDB_crazy_floating_ip } - - crazy_subnet_id: - value: { get_param: crazy_subnet_id } - - crazy_net_id: - value: { get_param: crazy_net_id } diff --git a/ice_validator/tests/fixtures/test_environment_file_parameters/fail/general/STARKDB-nested.yaml b/ice_validator/tests/fixtures/test_environment_file_parameters/fail/general/STARKDB-nested.yaml new file mode 100644 index 0000000..bb82a04 --- /dev/null +++ b/ice_validator/tests/fixtures/test_environment_file_parameters/fail/general/STARKDB-nested.yaml @@ -0,0 +1,132 @@ +# -*- coding: utf8 -*- +# ============LICENSE_START======================================================= +# org.onap.vvp/validation-scripts +# =================================================================== +# Copyright © 2019 AT&T Intellectual Property. All rights reserved. +# =================================================================== +# +# Unless otherwise specified, all software contained herein is licensed +# under the Apache License, Version 2.0 (the "License"); +# you may not use this software 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. +# +# +# +# Unless otherwise specified, all documentation contained herein is licensed +# under the Creative Commons License, Attribution 4.0 Intl. (the "License"); +# you may not use this documentation except in compliance with the License. +# You may obtain a copy of the License at +# +# https://creativecommons.org/licenses/by/4.0/ +# +# Unless required by applicable law or agreed to in writing, documentation +# 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. +# +# ============LICENSE_END============================================ +# +# + +heat_template_version: 2015-04-30 + +description: fdsafsfsa + +parameters: + + STARKDB_image_name: + type: number + description: sdfnklafd + STARKDB_name: + type: number + description: sdfnklafd + my_nested_parameter: + type: number + description: sdfnklafd + #constraints: + # - range: { min: 100, max: 400 } + subnet_uuid: + type: string + +resources: + + STARKDB_server_2: + type: OS::Nova::Server + properties: + image: { get_param: STARKDB_image_name } + flavor: { get_param: STARKDB_flavor_dvdfg } + name: { get_param: STARKDB_name } + availability_zone: { get_param: availability_zone_0 } + + my_nested_resource2: + type: test + properties: + name: { get_param: asfasf } + + STARKDB_2_crazy_port_2: + type: OS::Neutron::Port + properties: + network: { get_param: crazy_net_id } + fixed_ips: + - subnet: { get_param: crazy_subnet_id } + - ip_address: { get_param: STARKDB_crazy_ip_0 } + allowed_address_pairs: [ { "ip_address": {get_param: + STARKDB_crazy_floating_ip}}] + + int_private_net_id: + type: OS::Neutron::Net + properties: + name: { get_param: int_priv_net_id } + + STARKDB_0_int_priv_port_0: + type: OS::Neutron::Port + properties: + network: { get_resource: int_private_net_id } + fixed_ips: + - subnet: { get_resource: int_priv_subnet } + - ip_address: { get_param: STARKDB_int_private_v6_ips } + + myrouteprefix: + type: OS::ContrailV2::InterfaceRouteTable + properties: + name: + str_replace: + template: VNF_NAME_interface_route_table + params: + VNF_NAME: { get_param: vnf_name } + interface_route_table_routes: + interface_route_table_routes_route: { get_param: fw_oam_route_prefixes } + test: safd + + stark_rg: + type: OS::Heat::ResourceGroup + properties: + count: { get_param: stark_rg_count } + resource_def: + type: STARKDB-nested.yaml + properties: + my_nested_parameter: 4 + + fw_0_oam_protected_vmi_0_IP_0: + type: OS::ContrailV2::InstanceIp + properties: + instance_ip_address: { get_param: [fw_oam_protected_ips, get_param: index ] } + + fw_0_int_other_vmi_0_IP_0: + type: OS::ContrailV2::InstanceIp + properties: + instance_ip_address: { get_param: fw_other_ip_0 } + subnet_uuid: { get_param: subnet_uuid } + +outputs: + test_value: + value: { get_param: my_nested_parameter } diff --git a/ice_validator/tests/fixtures/test_environment_file_parameters/fail/general/fail.env b/ice_validator/tests/fixtures/test_environment_file_parameters/fail/general/fail.env new file mode 100644 index 0000000..dbdc492 --- /dev/null +++ b/ice_validator/tests/fixtures/test_environment_file_parameters/fail/general/fail.env @@ -0,0 +1,108 @@ +# -*- coding: utf8 -*- +# ============LICENSE_START======================================================= +# org.onap.vvp/validation-scripts +# =================================================================== +# Copyright © 2019 AT&T Intellectual Property. All rights reserved. +# =================================================================== +# +# Unless otherwise specified, all software contained herein is licensed +# under the Apache License, Version 2.0 (the "License"); +# you may not use this software 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. +# +# +# +# Unless otherwise specified, all documentation contained herein is licensed +# under the Creative Commons License, Attribution 4.0 Intl. (the "License"); +# you may not use this documentation except in compliance with the License. +# You may obtain a copy of the License at +# +# https://creativecommons.org/licenses/by/4.0/ +# +# Unless required by applicable law or agreed to in writing, documentation +# 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. +# +# ============LICENSE_END============================================ +# +# + +parameters: + + fw_oam_route_prefixes: nsaflj + + myvm_net_fqdn: nasfln + + vnf_id: sadfadf + + vf_module_id: sadfadf + + vf_module_name: sadfadf + + vnf_name: sadfadf + + starkdb_name: bghbhjb + + STARKDB_name: bghbhjb + + #STARKDB_image_name: sadfadf + + #STARKDB_flavor_dvdfg: sadfadf + + TESTDB_name: bghbhjb + + TESTDB_valet_hosts: test + + #TESTDB_image_name: sadfadf + + #TESTDB_flavor_name: sadfadf + + stark_vol1_id: sanfkl + + param_X: sadnfklsadnfl + + priv_net_id: 123214 + + priv_sub2net_id: 123123 + + int_priv_net_id: sndfj + + workload_context: asdfsadfs + + environment_context: asdfsadfs + + availability_zone_0: sadnfjk + + #STARKDB_int_private_v6_ips: ansdfj + + int_priv_subnet_name: safbdjk + + STARKDB_crazy_floating_ip: safd + + crazy_net_id: safd + + crazy_subnet_id: asfd + + STARKDB_crazy_ip_0: sadf + + STARKDB_crazy_ip_1: fsad + + TESTDB_name2: asnjkv + + vf_module_index: nalfs + + #fw_other_ip_0: 127.0.0.1 + + fw_oam_protected_ips: 127.0.0.1 + + subnet_uuid: aldfjj diff --git a/ice_validator/tests/fixtures/test_environment_file_parameters/fail/general/fail.yaml b/ice_validator/tests/fixtures/test_environment_file_parameters/fail/general/fail.yaml new file mode 100644 index 0000000..d311730 --- /dev/null +++ b/ice_validator/tests/fixtures/test_environment_file_parameters/fail/general/fail.yaml @@ -0,0 +1,402 @@ +# -*- coding: utf8 -*- +# ============LICENSE_START======================================================= +# org.onap.vvp/validation-scripts +# =================================================================== +# Copyright © 2019 AT&T Intellectual Property. All rights reserved. +# =================================================================== +# +# Unless otherwise specified, all software contained herein is licensed +# under the Apache License, Version 2.0 (the "License"); +# you may not use this software 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. +# +# +# +# Unless otherwise specified, all documentation contained herein is licensed +# under the Creative Commons License, Attribution 4.0 Intl. (the "License"); +# you may not use this documentation except in compliance with the License. +# You may obtain a copy of the License at +# +# https://creativecommons.org/licenses/by/4.0/ +# +# Unless required by applicable law or agreed to in writing, documentation +# 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. +# +# ============LICENSE_END============================================ +# +# + +heat_template_version: 2015-04-30 + +description: fdsafsfsa + +parameters: + + fw_oam_route_prefixes: + type: string + description: nsjalfdn + + myvm_net_fqdn: + type: string + description: nasfln + + TESTDB_valet_hosts: + type: string + description: nsfadl + + STARKDB_int_private_v6_ips: + type: comma_delimited_list + description: ndsajlfn + + workload_context: + type: string + description: Unique ID for this VNF instance + + availability_zone_0: + type: json + description: Unique ID for this VNF instance + + environment_context: + type: string + description: Unique ID for this VNF instance + + vnf_id: + type: string + description: Unique ID for this VNF instance + + vf_module_id: + type: json + description: Unique ID for this VNF module instance + + vnf_name: + type: string + description: Unique name for this VNF instance + + starkdb_name: + type: string + description: fdhsfbsakdjnfjdsank + + STARKDB_name: + type: json + description: fdhsfbsakdjnfjdsank + + STARKDB_image_name: + type: string + description: fdhsfbsakdjnfjdsank + + STARKDB_flavor_dvdfg: + type: string + description: fdhsfbsakdjnfjdsank + + + TESTDB_name: + type: string + description: fdhsfbsakdjnfjdsank + + TESTDB_name2: + type: string + description: fdhsfbsakdjnfjdsank + + TESTDB_image_name: + type: string + description: fdhsfbsakdjnfjdsank + + TESTDB_flavor_name: + type: string + description: fdhsfbsakdjnfjdsank + + stark_vol1_id: + type: number + description: myvolume + constraints: + - range: { min: 100, max: 400 } + + param_X: + type: string + description: fdafsda + + priv_net_id: + type: string + description: external network + + #priv_sub2net_id: + # type: json + # description: external subnetwork + + int_priv_subnet_name: + type: string + description: sadnfjls + + int_priv_net_id: + type: string + description: internal network name + + STARKDB_crazy_floating_ip: + type: string + description: asnfjl + + crazy_net_id: + type: string + description: ansfkld + + crazy_subnet_id: + type: string + description: asdfnkal + + STARKDB_crazy_ip_0: + type: string + description: nsalfd + + STARKDB_crazy_ip_1: + type: string + description: nsalfd + + stark_rg_count: + type: string + description: nafs + + fw_other_ip_0: + type: string + + fw_oam_protected_ips: + type: comma_delimited_list + +resources: + + STARKDB_cinder_attach: + type: OS::Cinder::VolumeAttachment + properties: + server: { get_resource: STARKDB_server_0 } + volume: { get_param: stark_vol1_id } + + STARKDB_server_0: + type: OS::Nova::Server + properties: + image: { get_param: STARKDB_image_name } + flavor: { get_param: STARKDB_flavor_dvdfg } + name: { get_param: starkdb_name } + metadata: + vnf_id: { get_param: vnf_id } + vf_module_id: { get_param: vf_module_id } + vnf_name: { get_param: vnf_name } + #int_network_id: { get_resource: int_priv_network } + workload_context: { get_param: workload_context } + environment_context: { get_param: environment_context } + #valet_groups: "safnkl, sdaflksanl" + networks: + - port: { get_resource: STARKDB_0_int_priv_port_0 } + - port: { get_resource: STARKDB_0_PRIV_port_1} + - port: { get_resource: STARKDB_0_crazy_port_0 } + - network: { get_param: int_priv_net_id } + user_data: { get_file: deep-nested.file } + + + STARKDB_server_1: + type: OS::Nova::Server + properties: + image: { get_param: STARKDB_image_name } + flavor: { get_param: STARKDB_flavor_dvdfg } + name: { get_param: STARKDB_name } + metadata: + vnf_id: { get_param: vnf_id } + vf_module_id: { get_param: vf_module_id } + vnf_name: { get_param: vnf_name } + #int_network_id: { get_resource: int_priv_network } + workload_context: { get_param: workload_context } + environment_context: { get_param: environment_context } + #valet_groups: "safnkl, sdaflksanl" + networks: + - port: {get_resource: STARKDB_1_int_priv_port_0} + - port: {get_resource: STARKDB_1_crazy_port_0} + - network: { get_param: int_priv_net_id } + + TESTDB_server_0: + type: OS::Nova::Server + properties: + image: { get_param: TESTDB_image_name } + flavor: { get_param: TESTDB_flavor_name } + name: { get_param: TESTDB_name } + metadata: + vnf_id: { get_param: vnf_id } + vf_module_id: { get_param: vf_module_id } + vnf_name: { get_param: vnf_name } + #int_network_id: { get_resource: int_priv_network } + workload_context: { get_param: workload_context } + environment_context: { get_param: environment_context } + #valet_groups: "safnkl, sdaflksanl" + networks: + - port: {get_resource: TESTDB_0_int_priv_port_0} + - network: { get_param: int_priv_net_id } + + availability_zone: { get_param: availability_zone_0 } + + TESTDB_server_1: + type: OS::Nova::Server + properties: + image: { get_param: TESTDB_image_name } + flavor: { get_param: TESTDB_flavor_name } + name: { get_param: TESTDB_name2 } + metadata: + test_fqdn: { get_param: myvm_net_fqdn } + vnf_id: { get_param: vnf_id } + vf_module_id: { get_param: vf_module_id } + vnf_name: { get_param: vnf_name } + #int_network_id: { get_resource: int_priv_network } + workload_context: { get_param: workload_context } + environment_context: { get_param: environment_context } + #valet_groups: "safnkl, sdaflksanl" + networks: + - port: {get_resource: TESTDB_0_int_priv_port_0} + - network: { get_param: int_priv_net_id } + + availability_zone: + str_replace: + template: $AZ$VALET_HOST_ASSIGNMENT + params: + $AZ: { get_param: availability_zone_0 } + $VALET_HOST_ASSIGNMENT: { get_param: [ TESTDB_valet_hosts, 0 ] } + + + vol_attachment: + type: OS::Cinder::VolumeAttachment + properties: + volume_id: { get_param: stark_vol1_id } + server: { get_resource: STARKDB_server_0 } + + int_private_net_id: + type: OS::Neutron::Net + properties: + name: { get_param: int_priv_net_id } + + priv_network: + type: OS::Neutron::Net + properties: + fnsdf: nksldfnkl + + stark_nested_resource: + type: STARKDB-nested.yaml + properties: + my_nested_parame: { get_param: vnf_id } + subnet_uuid: { get_param: subnet_uuid } + + int_priv_subnet: + type: OS::Neutron::Subnet + properties: + name: { get_param: int_priv_subnet_name} + network_id: { get_resource: int_private_net_id } + + STARKDB_0_int_priv_port_0: + type: OS::Neutron::Port + properties: + network: { get_resource: int_private_net_id } + fixed_ips: + - subnet: { get_resource: int_priv_subnet } + - ip_address: { get_param: STARKDB_int_private_v6_ips } + + + STARKDB_0_crazy_port_0: + type: OS::Neutron::Port + properties: + network: { get_param: crazy_net_id } + fixed_ips: + - subnet: { get_param: crazy_subnet_id } + - ip_address: { get_param: STARKDB_crazy_ip_0 } + allowed_address_pairs: [ { "ip_address": {get_param: + STARKDB_crazy_floating_ip}}] + + + STARKDB_1_crazy_port_0: + type: OS::Neutron::Port + properties: + network: { get_param: crazy_net_id } + fixed_ips: + - subnet: { get_param: crazy_subnet_id } + - ip_address: { get_param: STARKDB_crazy_ip_1 } + allowed_address_pairs: [ { "ip_address": {get_param: + STARKDB_crazy_floating_ip}}] + + STARKDB_1_int_priv_port_0: + type: OS::Neutron::Port + properties: + network: { get_resource: int_private_net_id } + + + TESTDB_0_int_priv_port_0: + type: OS::Neutron::Port + properties: + network: { get_param: int_priv_net_id } + + STARKDB_0_PRIV_port_1: + type: OS::Neutron::Port + properties: + network: { get_param: priv_net_id } + + STARKDB_cloud_config: + type: OS::Heat::CloudConfig + + subnet_uuid: + type: string + + + myrouteprefix: + type: OS::ContrailV2::InterfaceRouteTable + properties: + name: + str_replace: + template: VNF_NAME_interface_route_table + params: + VNF_NAME: { get_param: vnf_name } + interface_route_table_routes: + interface_route_table_routes_route: { get_param: fw_oam_route_prefixes } + test: safd + + stark_rg: + type: OS::Heat::ResourceGroup + properties: + count: { get_param: stark_rg_count } + resource_def: + type: STARKDB-nested.yaml + properties: + my_nested_parameter: 4 + subnet_uuid: { get_param: subnet_uuid } + + fw_0_oam_protected_vmi_0_IP_0: + type: OS::ContrailV2::InstanceIp + properties: + instance_ip_address: { get_param: [fw_oam_protected_ips, get_param: index ] } + + fw_0_int_other_vmi_0_IP_0: + type: OS::ContrailV2::InstanceIp + properties: + instance_ip_address: { get_param: fw_other_ip_0 } + subnet_uuid: { get_param: subnet_uuid } + +outputs: + test_output: + value: { list_join: [',', [ { get_param: param_X }, { get_param: stark_vol1_id } ] ] } + + int_priv_su2bnet_id: + value: { get_resource: int_priv_subnet } + + int_priv_net_id: + value: { get_resource: int_private_net_id } + + STARKDB_crazy_floating_ip: + value: { get_param: STARKDB_crazy_floating_ip } + + crazy_subnet_id: + value: { get_param: crazy_subnet_id } + + crazy_net_id: + value: { get_param: crazy_net_id } \ No newline at end of file diff --git a/ice_validator/tests/fixtures/test_environment_file_parameters/fail/vmi_aap/vmi_aap_fail.env b/ice_validator/tests/fixtures/test_environment_file_parameters/fail/vmi_aap/vmi_aap_fail.env new file mode 100644 index 0000000..a3d7fca --- /dev/null +++ b/ice_validator/tests/fixtures/test_environment_file_parameters/fail/vmi_aap/vmi_aap_fail.env @@ -0,0 +1,46 @@ +# -*- coding: utf8 -*- +# ============LICENSE_START======================================================= +# org.onap.vvp/validation-scripts +# =================================================================== +# Copyright © 2019 AT&T Intellectual Property. All rights reserved. +# =================================================================== +# +# Unless otherwise specified, all software contained herein is licensed +# under the Apache License, Version 2.0 (the "License"); +# you may not use this software 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. +# +# +# +# Unless otherwise specified, all documentation contained herein is licensed +# under the Creative Commons License, Attribution 4.0 Intl. (the "License"); +# you may not use this documentation except in compliance with the License. +# You may obtain a copy of the License at +# +# https://creativecommons.org/licenses/by/4.0/ +# +# Unless required by applicable law or agreed to in writing, documentation +# 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. +# +# ============LICENSE_END============================================ +# +# + +parameters: + + fw_oam_protected_ips: 127.0.0.1 + fw_dns_ip_0: 127.0.0.1 + #fw_other_ip_0: 127.0.0.1 + subnet_uuid: aldkjfs + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: aljfld diff --git a/ice_validator/tests/fixtures/test_environment_file_parameters/fail/vmi_aap/vmi_aap_fail.yaml b/ice_validator/tests/fixtures/test_environment_file_parameters/fail/vmi_aap/vmi_aap_fail.yaml new file mode 100644 index 0000000..02fe218 --- /dev/null +++ b/ice_validator/tests/fixtures/test_environment_file_parameters/fail/vmi_aap/vmi_aap_fail.yaml @@ -0,0 +1,61 @@ +# -*- coding: utf8 -*- +# ============LICENSE_START======================================================= +# org.onap.vvp/validation-scripts +# =================================================================== +# Copyright © 2019 AT&T Intellectual Property. All rights reserved. +# =================================================================== +# +# Unless otherwise specified, all software contained herein is licensed +# under the Apache License, Version 2.0 (the "License"); +# you may not use this software 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. +# +# +# +# Unless otherwise specified, all documentation contained herein is licensed +# under the Creative Commons License, Attribution 4.0 Intl. (the "License"); +# you may not use this documentation except in compliance with the License. +# You may obtain a copy of the License at +# +# https://creativecommons.org/licenses/by/4.0/ +# +# Unless required by applicable law or agreed to in writing, documentation +# 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. +# +# ============LICENSE_END============================================ +# +# + +heat_template_version: 2015-04-30 + +description: fdsafsfsa + +parameters: + + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: + type: string + +resources: + + fw_0_oam_protected_vmi_0_IP_0: + type: OS::ContrailV2::VirtualMachineInterface + properties: + virtual_machine_interface_allowed_address_pairs: + virtual_machine_interface_allowed_address_pairs_allowed_address_pair: + [{ + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip: + { + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: { get_param: virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix }, + }, + }] diff --git a/ice_validator/tests/fixtures/test_environment_file_parameters/pass/STARKDB-nested.yaml b/ice_validator/tests/fixtures/test_environment_file_parameters/pass/STARKDB-nested.yaml deleted file mode 100644 index 865a327..0000000 --- a/ice_validator/tests/fixtures/test_environment_file_parameters/pass/STARKDB-nested.yaml +++ /dev/null @@ -1,61 +0,0 @@ -# -*- coding: utf8 -*- -# ============LICENSE_START======================================================= -# org.onap.vvp/validation-scripts -# =================================================================== -# Copyright © 2019 AT&T Intellectual Property. All rights reserved. -# =================================================================== -# -# Unless otherwise specified, all software contained herein is licensed -# under the Apache License, Version 2.0 (the "License"); -# you may not use this software 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. -# -# -# -# Unless otherwise specified, all documentation contained herein is licensed -# under the Creative Commons License, Attribution 4.0 Intl. (the "License"); -# you may not use this documentation except in compliance with the License. -# You may obtain a copy of the License at -# -# https://creativecommons.org/licenses/by/4.0/ -# -# Unless required by applicable law or agreed to in writing, documentation -# 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. -# -# ============LICENSE_END============================================ -# -# - -heat_template_version: 2015-04-30 - -description: fdsafsfsa - -parameters: - - my_nested_parameter: - type: number - description: sdfnklafd - #constraints: - # - range: { min: 100, max: 400 } - -resources: - - my_nested_resource2: - type: test - properties: - my_nested_parameter: {get_param: my_nested_parameter} - -outputs: - test_value: - value: { get_param: my_nested_parameter } diff --git a/ice_validator/tests/fixtures/test_environment_file_parameters/pass/contrail_instance_ip/contrail_instance_ip_pass.env b/ice_validator/tests/fixtures/test_environment_file_parameters/pass/contrail_instance_ip/contrail_instance_ip_pass.env new file mode 100644 index 0000000..2cb67b2 --- /dev/null +++ b/ice_validator/tests/fixtures/test_environment_file_parameters/pass/contrail_instance_ip/contrail_instance_ip_pass.env @@ -0,0 +1,48 @@ +# -*- coding: utf8 -*- +# ============LICENSE_START======================================================= +# org.onap.vvp/validation-scripts +# =================================================================== +# Copyright © 2019 AT&T Intellectual Property. All rights reserved. +# =================================================================== +# +# Unless otherwise specified, all software contained herein is licensed +# under the Apache License, Version 2.0 (the "License"); +# you may not use this software 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. +# +# +# +# Unless otherwise specified, all documentation contained herein is licensed +# under the Creative Commons License, Attribution 4.0 Intl. (the "License"); +# you may not use this documentation except in compliance with the License. +# You may obtain a copy of the License at +# +# https://creativecommons.org/licenses/by/4.0/ +# +# Unless required by applicable law or agreed to in writing, documentation +# 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. +# +# ============LICENSE_END============================================ +# +# + +parameters: + + #fw_oam_protected_ips: 127.0.0.1 + #fw_dns_ip_0: 127.0.0.1 + fw_other_ip_0: 127.0.0.1 + #subnet_uuid: a0aiofd + + + diff --git a/ice_validator/tests/fixtures/test_environment_file_parameters/pass/contrail_instance_ip/contrail_instance_ip_pass.yaml b/ice_validator/tests/fixtures/test_environment_file_parameters/pass/contrail_instance_ip/contrail_instance_ip_pass.yaml new file mode 100644 index 0000000..d5bc147 --- /dev/null +++ b/ice_validator/tests/fixtures/test_environment_file_parameters/pass/contrail_instance_ip/contrail_instance_ip_pass.yaml @@ -0,0 +1,76 @@ +# -*- coding: utf8 -*- +# ============LICENSE_START======================================================= +# org.onap.vvp/validation-scripts +# =================================================================== +# Copyright © 2019 AT&T Intellectual Property. All rights reserved. +# =================================================================== +# +# Unless otherwise specified, all software contained herein is licensed +# under the Apache License, Version 2.0 (the "License"); +# you may not use this software 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. +# +# +# +# Unless otherwise specified, all documentation contained herein is licensed +# under the Creative Commons License, Attribution 4.0 Intl. (the "License"); +# you may not use this documentation except in compliance with the License. +# You may obtain a copy of the License at +# +# https://creativecommons.org/licenses/by/4.0/ +# +# Unless required by applicable law or agreed to in writing, documentation +# 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. +# +# ============LICENSE_END============================================ +# +# + +heat_template_version: 2015-04-30 + +description: fdsafsfsa + +parameters: + + fw_oam_protected_ips: + type: comma_delimited_list + + fw_dns_ip_0: + type: string + + fw_other_ip_0: + type: string + + subnet_uuid: + type: string + +resources: + + fw_0_oam_protected_vmi_0_IP_0: + type: OS::ContrailV2::InstanceIp + properties: + instance_ip_address: { get_param: [fw_oam_protected_ips, get_param: index ] } + subnet_uuid: { get_param: subnet_uuid } + + fw_0_oam_protected_vmi_0_IP_1: + type: OS::ContrailV2::InstanceIp + properties: + instance_ip_address: { get_param: fw_dns_ip_0 } + subnet_uuid: { get_param: subnet_uuid } + + fw_0_int_other_vmi_0_IP_0: + type: OS::ContrailV2::InstanceIp + properties: + instance_ip_address: { get_param: fw_other_ip_0 } + subnet_uuid: { get_param: subnet_uuid } diff --git a/ice_validator/tests/fixtures/test_environment_file_parameters/pass/general/STARKDB-nested.yaml b/ice_validator/tests/fixtures/test_environment_file_parameters/pass/general/STARKDB-nested.yaml new file mode 100644 index 0000000..865a327 --- /dev/null +++ b/ice_validator/tests/fixtures/test_environment_file_parameters/pass/general/STARKDB-nested.yaml @@ -0,0 +1,61 @@ +# -*- coding: utf8 -*- +# ============LICENSE_START======================================================= +# org.onap.vvp/validation-scripts +# =================================================================== +# Copyright © 2019 AT&T Intellectual Property. All rights reserved. +# =================================================================== +# +# Unless otherwise specified, all software contained herein is licensed +# under the Apache License, Version 2.0 (the "License"); +# you may not use this software 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. +# +# +# +# Unless otherwise specified, all documentation contained herein is licensed +# under the Creative Commons License, Attribution 4.0 Intl. (the "License"); +# you may not use this documentation except in compliance with the License. +# You may obtain a copy of the License at +# +# https://creativecommons.org/licenses/by/4.0/ +# +# Unless required by applicable law or agreed to in writing, documentation +# 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. +# +# ============LICENSE_END============================================ +# +# + +heat_template_version: 2015-04-30 + +description: fdsafsfsa + +parameters: + + my_nested_parameter: + type: number + description: sdfnklafd + #constraints: + # - range: { min: 100, max: 400 } + +resources: + + my_nested_resource2: + type: test + properties: + my_nested_parameter: {get_param: my_nested_parameter} + +outputs: + test_value: + value: { get_param: my_nested_parameter } diff --git a/ice_validator/tests/fixtures/test_environment_file_parameters/pass/general/pass.env b/ice_validator/tests/fixtures/test_environment_file_parameters/pass/general/pass.env new file mode 100644 index 0000000..ec42bbc --- /dev/null +++ b/ice_validator/tests/fixtures/test_environment_file_parameters/pass/general/pass.env @@ -0,0 +1,102 @@ +# -*- coding: utf8 -*- +# ============LICENSE_START======================================================= +# org.onap.vvp/validation-scripts +# =================================================================== +# Copyright © 2019 AT&T Intellectual Property. All rights reserved. +# =================================================================== +# +# Unless otherwise specified, all software contained herein is licensed +# under the Apache License, Version 2.0 (the "License"); +# you may not use this software 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. +# +# +# +# Unless otherwise specified, all documentation contained herein is licensed +# under the Creative Commons License, Attribution 4.0 Intl. (the "License"); +# you may not use this documentation except in compliance with the License. +# You may obtain a copy of the License at +# +# https://creativecommons.org/licenses/by/4.0/ +# +# Unless required by applicable law or agreed to in writing, documentation +# 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. +# +# ============LICENSE_END============================================ +# +# + +parameters: + + #fw_oam_route_prefixes: nsaflj + + #myvm_net_fqdn: nasfln + + #vnf_id: sadfadf + + #vf_module_id: sadfadf + + #vnf_name: sadfadf + + #starkdb_name: bghbhjb + + #STARKDB_name: bghbhjb + + STARKDB_image_name: sadfadf + + STARKDB_flavor_dvdfg: sadfadf + + #TESTDB_name: bghbhjb + + #TESTDB_avail_hosts: test + + TESTDB_image_name: sadfadf + + TESTDB_flavor_name: sadfadf + + stark_vol1_id: sanfkl + + param_X: sadnfklsadnfl + + #priv_net_id: 123214 + + #priv_sub2net_id: 123123 + + #int_priv_net_id: sndfj + + #workload_context: asdfsadfs + + #environment_context: asdfsadfs + + #availability_zone_0: sadnfjk + + #STARKDB_private_v6_ips: ansdfj + + #int_priv_subnet_name: safbdjk + + #STARKDB_crazy_floating_ip: safd + + #crazy_net_id: safd + + #crazy_subnet_id: asfd + + #STARKDB_crazy_ip_0: sadf + + #STARKDB_crazy_ip_1: fsad + + #TESTDB_name2: asnjkv + + stark_rg_count: najsf + + my_nested_parameter: nasjlf diff --git a/ice_validator/tests/fixtures/test_environment_file_parameters/pass/general/pass.yaml b/ice_validator/tests/fixtures/test_environment_file_parameters/pass/general/pass.yaml new file mode 100644 index 0000000..72ed539 --- /dev/null +++ b/ice_validator/tests/fixtures/test_environment_file_parameters/pass/general/pass.yaml @@ -0,0 +1,343 @@ +# -*- coding: utf8 -*- +# ============LICENSE_START======================================================= +# org.onap.vvp/validation-scripts +# =================================================================== +# Copyright © 2019 AT&T Intellectual Property. All rights reserved. +# =================================================================== +# +# Unless otherwise specified, all software contained herein is licensed +# under the Apache License, Version 2.0 (the "License"); +# you may not use this software 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. +# +# +# +# Unless otherwise specified, all documentation contained herein is licensed +# under the Creative Commons License, Attribution 4.0 Intl. (the "License"); +# you may not use this documentation except in compliance with the License. +# You may obtain a copy of the License at +# +# https://creativecommons.org/licenses/by/4.0/ +# +# Unless required by applicable law or agreed to in writing, documentation +# 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. +# +# ============LICENSE_END============================================ +# +# + +heat_template_version: 2015-04-30 + +description: fdsafsfsa + +parameters: + + fw_oam_route_prefixes: + type: string + description: nsjalfdn + + myvm_net_fqdn: + type: string + description: nasfln + + TESTDB_avail_hosts: + type: string + description: nsfadl + + STARKDB_private_v6_ips: + type: comma_delimited_list + description: ndsajlfn + + workload_context: + type: string + description: Unique ID for this VNF instance + + availability_zone_0: + type: json + description: Unique ID for this VNF instance + + environment_context: + type: string + description: Unique ID for this VNF instance + + vnf_id: + type: string + description: Unique ID for this VNF instance + + vf_module_id: + type: json + description: Unique ID for this VNF module instance + + vnf_name: + type: string + description: Unique name for this VNF instance + + starkdb_name: + type: string + description: fdhsfbsakdjnfjdsank + + STARKDB_name: + type: json + description: fdhsfbsakdjnfjdsank + + STARKDB_image_name: + type: string + description: fdhsfbsakdjnfjdsank + + STARKDB_flavor_dvdfg: + type: string + description: fdhsfbsakdjnfjdsank + + + TESTDB_name: + type: string + description: fdhsfbsakdjnfjdsank + + TESTDB_name2: + type: string + description: fdhsfbsakdjnfjdsank + + TESTDB_image_name: + type: string + description: fdhsfbsakdjnfjdsank + + TESTDB_flavor_name: + type: string + description: fdhsfbsakdjnfjdsank + + stark_vol1_id: + type: number + description: myvolume + constraints: + - range: { min: 100, max: 400 } + + param_X: + type: string + description: fdafsda + + priv_net_id: + type: string + description: external network + + #priv_sub2net_id: + # type: json + # description: external subnetwork + + int_priv_subnet_name: + type: string + description: sadnfjls + + int_priv_net_id: + type: string + description: internal network name + + STARKDB_crazy_floating_ip: + type: string + description: asnfjl + + crazy_net_id: + type: string + description: ansfkld + + crazy_subnet_id: + type: string + description: asdfnkal + + STARKDB_crazy_ip_0: + type: string + description: nsalfd + + STARKDB_crazy_ip_1: + type: string + description: nsalfd + + stark_rg_count: + type: string + description: njlasd + + my_nested_parameter: + type: string + description: naskl + +resources: + + STARKDB_cinder_attach: + type: OS::Cinder::VolumeAttachment + properties: + server: { get_resource: STARKDB_server_0 } + volume: { get_param: stark_vol1_id } + + STARKDB_server_0: + type: OS::Nova::Server + properties: + image: { get_param: STARKDB_image_name } + flavor: { get_param: STARKDB_flavor_dvdfg } + name: { get_param: starkdb_name } + metadata: + vnf_id: { get_param: vnf_id } + vf_module_id: { get_param: vf_module_id } + vnf_name: { get_param: vnf_name } + workload_context: { get_param: workload_context } + environment_context: { get_param: environment_context } + networks: + - port: { get_resource: STARKDB_0_int_priv_port_0 } + - port: { get_resource: STARKDB_0_PRIV_port_1} + - port: { get_resource: STARKDB_0_crazy_port_0 } + + + STARKDB_server_1: + type: OS::Nova::Server + properties: + image: { get_param: STARKDB_image_name } + flavor: { get_param: STARKDB_flavor_dvdfg } + name: { get_param: STARKDB_name } + metadata: + vnf_id: { get_param: vnf_id } + vf_module_id: { get_param: vf_module_id } + vnf_name: { get_param: vnf_name } + #int_network_id: { get_resource: int_priv_network } + workload_context: { get_param: workload_context } + environment_context: { get_param: environment_context } + networks: + - port: {get_resource: STARKDB_1_int_priv_port_0} + - port: {get_resource: STARKDB_1_crazy_port_0} + + TESTDB_server_0: + type: OS::Nova::Server + properties: + image: { get_param: TESTDB_image_name } + flavor: { get_param: TESTDB_flavor_name } + name: { get_param: TESTDB_name } + metadata: + vnf_id: { get_param: vnf_id } + vf_module_id: { get_param: vf_module_id } + vnf_name: { get_param: vnf_name } + #int_network_id: { get_resource: int_priv_network } + workload_context: { get_param: workload_context } + environment_context: { get_param: environment_context } + networks: + - port: {get_resource: TESTDB_0_int_priv_port_0} + availability_zone: { get_param: availability_zone_0 } + + TESTDB_server_1: + type: OS::Nova::Server + properties: + image: { get_param: TESTDB_image_name } + flavor: { get_param: TESTDB_flavor_name } + name: { get_param: TESTDB_name2 } + metadata: + test_fqdn: { get_param: myvm_net_fqdn } + vnf_id: { get_param: vnf_id } + vf_module_id: { get_param: vf_module_id } + vnf_name: { get_param: vnf_name } + #int_network_id: { get_resource: int_priv_network } + workload_context: { get_param: workload_context } + environment_context: { get_param: environment_context } + networks: + - port: {get_resource: TESTDB_0_int_priv_port_0} + availability_zone: { get_param: [ TESTDB_avail_hosts, 0 ] } + + + vol_attachment: + type: OS::Cinder::VolumeAttachment + properties: + volume_id: { get_param: stark_vol1_id } + server: { get_resource: STARKDB_server_0 } + + int_private_net_id: + type: OS::Neutron::Net + properties: + name: { get_param: int_priv_net_id } + + priv_network: + type: OS::Neutron::Net + properties: + fnsdf: nksldfnkl + + int_priv_subnet: + type: OS::Neutron::Subnet + properties: + name: { get_param: int_priv_subnet_name} + network_id: { get_resource: int_private_net_id } + + STARKDB_0_int_priv_port_0: + type: OS::Neutron::Port + properties: + network: { get_resource: int_private_net_id } + fixed_ips: + - subnet_id: { get_resource: int_priv_subnet } + - ip_address: { get_param: STARKDB_private_v6_ips } + + + STARKDB_0_crazy_port_0: + type: OS::Neutron::Port + properties: + network: { get_param: crazy_net_id } + fixed_ips: + - subnet_id: { get_param: crazy_subnet_id } + - ip_address: { get_param: STARKDB_crazy_ip_0 } + allowed_address_pairs: [ { "ip_address": {get_param: + STARKDB_crazy_floating_ip}}] + + + STARKDB_1_crazy_port_0: + type: OS::Neutron::Port + properties: + network: { get_param: crazy_net_id } + fixed_ips: + - subnet_id: { get_param: crazy_subnet_id } + - ip_address: { get_param: STARKDB_crazy_ip_1 } + allowed_address_pairs: [ { "ip_address": {get_param: + STARKDB_crazy_floating_ip}}] + + STARKDB_1_int_priv_port_0: + type: OS::Neutron::Port + properties: + network: { get_resource: int_private_net_id } + + + TESTDB_0_int_priv_port_0: + type: OS::Neutron::Port + properties: + network: { get_param: int_priv_net_id } + + STARKDB_0_PRIV_port_1: + type: OS::Neutron::Port + properties: + network: { get_param: priv_net_id } + + STARKDB_cloud_config: + type: OS::Heat::CloudConfig + + + myrouteprefix: + type: OS::ContrailV2::InterfaceRouteTable + properties: + name: + str_replace: + template: VNF_NAME_interface_route_table + params: + VNF_NAME: { get_param: vnf_name } + interface_route_table_routes: + interface_route_table_routes_route: { get_param: fw_oam_route_prefixes } + test: safd + + stark_rg: + type: OS::Heat::ResourceGroup + properties: + count: { get_param: stark_rg_count } + resource_def: + type: STARKDB-nested.yaml + properties: + my_nested_parameter: {get_param: my_nested_parameter} diff --git a/ice_validator/tests/fixtures/test_environment_file_parameters/pass/pass.env b/ice_validator/tests/fixtures/test_environment_file_parameters/pass/pass.env deleted file mode 100644 index ec42bbc..0000000 --- a/ice_validator/tests/fixtures/test_environment_file_parameters/pass/pass.env +++ /dev/null @@ -1,102 +0,0 @@ -# -*- coding: utf8 -*- -# ============LICENSE_START======================================================= -# org.onap.vvp/validation-scripts -# =================================================================== -# Copyright © 2019 AT&T Intellectual Property. All rights reserved. -# =================================================================== -# -# Unless otherwise specified, all software contained herein is licensed -# under the Apache License, Version 2.0 (the "License"); -# you may not use this software 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. -# -# -# -# Unless otherwise specified, all documentation contained herein is licensed -# under the Creative Commons License, Attribution 4.0 Intl. (the "License"); -# you may not use this documentation except in compliance with the License. -# You may obtain a copy of the License at -# -# https://creativecommons.org/licenses/by/4.0/ -# -# Unless required by applicable law or agreed to in writing, documentation -# 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. -# -# ============LICENSE_END============================================ -# -# - -parameters: - - #fw_oam_route_prefixes: nsaflj - - #myvm_net_fqdn: nasfln - - #vnf_id: sadfadf - - #vf_module_id: sadfadf - - #vnf_name: sadfadf - - #starkdb_name: bghbhjb - - #STARKDB_name: bghbhjb - - STARKDB_image_name: sadfadf - - STARKDB_flavor_dvdfg: sadfadf - - #TESTDB_name: bghbhjb - - #TESTDB_avail_hosts: test - - TESTDB_image_name: sadfadf - - TESTDB_flavor_name: sadfadf - - stark_vol1_id: sanfkl - - param_X: sadnfklsadnfl - - #priv_net_id: 123214 - - #priv_sub2net_id: 123123 - - #int_priv_net_id: sndfj - - #workload_context: asdfsadfs - - #environment_context: asdfsadfs - - #availability_zone_0: sadnfjk - - #STARKDB_private_v6_ips: ansdfj - - #int_priv_subnet_name: safbdjk - - #STARKDB_crazy_floating_ip: safd - - #crazy_net_id: safd - - #crazy_subnet_id: asfd - - #STARKDB_crazy_ip_0: sadf - - #STARKDB_crazy_ip_1: fsad - - #TESTDB_name2: asnjkv - - stark_rg_count: najsf - - my_nested_parameter: nasjlf diff --git a/ice_validator/tests/fixtures/test_environment_file_parameters/pass/pass.yaml b/ice_validator/tests/fixtures/test_environment_file_parameters/pass/pass.yaml deleted file mode 100644 index 72ed539..0000000 --- a/ice_validator/tests/fixtures/test_environment_file_parameters/pass/pass.yaml +++ /dev/null @@ -1,343 +0,0 @@ -# -*- coding: utf8 -*- -# ============LICENSE_START======================================================= -# org.onap.vvp/validation-scripts -# =================================================================== -# Copyright © 2019 AT&T Intellectual Property. All rights reserved. -# =================================================================== -# -# Unless otherwise specified, all software contained herein is licensed -# under the Apache License, Version 2.0 (the "License"); -# you may not use this software 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. -# -# -# -# Unless otherwise specified, all documentation contained herein is licensed -# under the Creative Commons License, Attribution 4.0 Intl. (the "License"); -# you may not use this documentation except in compliance with the License. -# You may obtain a copy of the License at -# -# https://creativecommons.org/licenses/by/4.0/ -# -# Unless required by applicable law or agreed to in writing, documentation -# 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. -# -# ============LICENSE_END============================================ -# -# - -heat_template_version: 2015-04-30 - -description: fdsafsfsa - -parameters: - - fw_oam_route_prefixes: - type: string - description: nsjalfdn - - myvm_net_fqdn: - type: string - description: nasfln - - TESTDB_avail_hosts: - type: string - description: nsfadl - - STARKDB_private_v6_ips: - type: comma_delimited_list - description: ndsajlfn - - workload_context: - type: string - description: Unique ID for this VNF instance - - availability_zone_0: - type: json - description: Unique ID for this VNF instance - - environment_context: - type: string - description: Unique ID for this VNF instance - - vnf_id: - type: string - description: Unique ID for this VNF instance - - vf_module_id: - type: json - description: Unique ID for this VNF module instance - - vnf_name: - type: string - description: Unique name for this VNF instance - - starkdb_name: - type: string - description: fdhsfbsakdjnfjdsank - - STARKDB_name: - type: json - description: fdhsfbsakdjnfjdsank - - STARKDB_image_name: - type: string - description: fdhsfbsakdjnfjdsank - - STARKDB_flavor_dvdfg: - type: string - description: fdhsfbsakdjnfjdsank - - - TESTDB_name: - type: string - description: fdhsfbsakdjnfjdsank - - TESTDB_name2: - type: string - description: fdhsfbsakdjnfjdsank - - TESTDB_image_name: - type: string - description: fdhsfbsakdjnfjdsank - - TESTDB_flavor_name: - type: string - description: fdhsfbsakdjnfjdsank - - stark_vol1_id: - type: number - description: myvolume - constraints: - - range: { min: 100, max: 400 } - - param_X: - type: string - description: fdafsda - - priv_net_id: - type: string - description: external network - - #priv_sub2net_id: - # type: json - # description: external subnetwork - - int_priv_subnet_name: - type: string - description: sadnfjls - - int_priv_net_id: - type: string - description: internal network name - - STARKDB_crazy_floating_ip: - type: string - description: asnfjl - - crazy_net_id: - type: string - description: ansfkld - - crazy_subnet_id: - type: string - description: asdfnkal - - STARKDB_crazy_ip_0: - type: string - description: nsalfd - - STARKDB_crazy_ip_1: - type: string - description: nsalfd - - stark_rg_count: - type: string - description: njlasd - - my_nested_parameter: - type: string - description: naskl - -resources: - - STARKDB_cinder_attach: - type: OS::Cinder::VolumeAttachment - properties: - server: { get_resource: STARKDB_server_0 } - volume: { get_param: stark_vol1_id } - - STARKDB_server_0: - type: OS::Nova::Server - properties: - image: { get_param: STARKDB_image_name } - flavor: { get_param: STARKDB_flavor_dvdfg } - name: { get_param: starkdb_name } - metadata: - vnf_id: { get_param: vnf_id } - vf_module_id: { get_param: vf_module_id } - vnf_name: { get_param: vnf_name } - workload_context: { get_param: workload_context } - environment_context: { get_param: environment_context } - networks: - - port: { get_resource: STARKDB_0_int_priv_port_0 } - - port: { get_resource: STARKDB_0_PRIV_port_1} - - port: { get_resource: STARKDB_0_crazy_port_0 } - - - STARKDB_server_1: - type: OS::Nova::Server - properties: - image: { get_param: STARKDB_image_name } - flavor: { get_param: STARKDB_flavor_dvdfg } - name: { get_param: STARKDB_name } - metadata: - vnf_id: { get_param: vnf_id } - vf_module_id: { get_param: vf_module_id } - vnf_name: { get_param: vnf_name } - #int_network_id: { get_resource: int_priv_network } - workload_context: { get_param: workload_context } - environment_context: { get_param: environment_context } - networks: - - port: {get_resource: STARKDB_1_int_priv_port_0} - - port: {get_resource: STARKDB_1_crazy_port_0} - - TESTDB_server_0: - type: OS::Nova::Server - properties: - image: { get_param: TESTDB_image_name } - flavor: { get_param: TESTDB_flavor_name } - name: { get_param: TESTDB_name } - metadata: - vnf_id: { get_param: vnf_id } - vf_module_id: { get_param: vf_module_id } - vnf_name: { get_param: vnf_name } - #int_network_id: { get_resource: int_priv_network } - workload_context: { get_param: workload_context } - environment_context: { get_param: environment_context } - networks: - - port: {get_resource: TESTDB_0_int_priv_port_0} - availability_zone: { get_param: availability_zone_0 } - - TESTDB_server_1: - type: OS::Nova::Server - properties: - image: { get_param: TESTDB_image_name } - flavor: { get_param: TESTDB_flavor_name } - name: { get_param: TESTDB_name2 } - metadata: - test_fqdn: { get_param: myvm_net_fqdn } - vnf_id: { get_param: vnf_id } - vf_module_id: { get_param: vf_module_id } - vnf_name: { get_param: vnf_name } - #int_network_id: { get_resource: int_priv_network } - workload_context: { get_param: workload_context } - environment_context: { get_param: environment_context } - networks: - - port: {get_resource: TESTDB_0_int_priv_port_0} - availability_zone: { get_param: [ TESTDB_avail_hosts, 0 ] } - - - vol_attachment: - type: OS::Cinder::VolumeAttachment - properties: - volume_id: { get_param: stark_vol1_id } - server: { get_resource: STARKDB_server_0 } - - int_private_net_id: - type: OS::Neutron::Net - properties: - name: { get_param: int_priv_net_id } - - priv_network: - type: OS::Neutron::Net - properties: - fnsdf: nksldfnkl - - int_priv_subnet: - type: OS::Neutron::Subnet - properties: - name: { get_param: int_priv_subnet_name} - network_id: { get_resource: int_private_net_id } - - STARKDB_0_int_priv_port_0: - type: OS::Neutron::Port - properties: - network: { get_resource: int_private_net_id } - fixed_ips: - - subnet_id: { get_resource: int_priv_subnet } - - ip_address: { get_param: STARKDB_private_v6_ips } - - - STARKDB_0_crazy_port_0: - type: OS::Neutron::Port - properties: - network: { get_param: crazy_net_id } - fixed_ips: - - subnet_id: { get_param: crazy_subnet_id } - - ip_address: { get_param: STARKDB_crazy_ip_0 } - allowed_address_pairs: [ { "ip_address": {get_param: - STARKDB_crazy_floating_ip}}] - - - STARKDB_1_crazy_port_0: - type: OS::Neutron::Port - properties: - network: { get_param: crazy_net_id } - fixed_ips: - - subnet_id: { get_param: crazy_subnet_id } - - ip_address: { get_param: STARKDB_crazy_ip_1 } - allowed_address_pairs: [ { "ip_address": {get_param: - STARKDB_crazy_floating_ip}}] - - STARKDB_1_int_priv_port_0: - type: OS::Neutron::Port - properties: - network: { get_resource: int_private_net_id } - - - TESTDB_0_int_priv_port_0: - type: OS::Neutron::Port - properties: - network: { get_param: int_priv_net_id } - - STARKDB_0_PRIV_port_1: - type: OS::Neutron::Port - properties: - network: { get_param: priv_net_id } - - STARKDB_cloud_config: - type: OS::Heat::CloudConfig - - - myrouteprefix: - type: OS::ContrailV2::InterfaceRouteTable - properties: - name: - str_replace: - template: VNF_NAME_interface_route_table - params: - VNF_NAME: { get_param: vnf_name } - interface_route_table_routes: - interface_route_table_routes_route: { get_param: fw_oam_route_prefixes } - test: safd - - stark_rg: - type: OS::Heat::ResourceGroup - properties: - count: { get_param: stark_rg_count } - resource_def: - type: STARKDB-nested.yaml - properties: - my_nested_parameter: {get_param: my_nested_parameter} diff --git a/ice_validator/tests/fixtures/test_environment_file_parameters/pass/vmi_aap/vmi_aap_pass.env b/ice_validator/tests/fixtures/test_environment_file_parameters/pass/vmi_aap/vmi_aap_pass.env new file mode 100644 index 0000000..6e65c37 --- /dev/null +++ b/ice_validator/tests/fixtures/test_environment_file_parameters/pass/vmi_aap/vmi_aap_pass.env @@ -0,0 +1,46 @@ +# -*- coding: utf8 -*- +# ============LICENSE_START======================================================= +# org.onap.vvp/validation-scripts +# =================================================================== +# Copyright © 2019 AT&T Intellectual Property. All rights reserved. +# =================================================================== +# +# Unless otherwise specified, all software contained herein is licensed +# under the Apache License, Version 2.0 (the "License"); +# you may not use this software 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. +# +# +# +# Unless otherwise specified, all documentation contained herein is licensed +# under the Creative Commons License, Attribution 4.0 Intl. (the "License"); +# you may not use this documentation except in compliance with the License. +# You may obtain a copy of the License at +# +# https://creativecommons.org/licenses/by/4.0/ +# +# Unless required by applicable law or agreed to in writing, documentation +# 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. +# +# ============LICENSE_END============================================ +# +# + +parameters: + + fw_oam_protected_ips: 127.0.0.1 + fw_dns_ip_0: 127.0.0.1 + #fw_other_ip_0: 127.0.0.1 + subnet_uuid: aldkjfs + #virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: aljfld diff --git a/ice_validator/tests/fixtures/test_environment_file_parameters/pass/vmi_aap/vmi_aap_pass.yaml b/ice_validator/tests/fixtures/test_environment_file_parameters/pass/vmi_aap/vmi_aap_pass.yaml new file mode 100644 index 0000000..02fe218 --- /dev/null +++ b/ice_validator/tests/fixtures/test_environment_file_parameters/pass/vmi_aap/vmi_aap_pass.yaml @@ -0,0 +1,61 @@ +# -*- coding: utf8 -*- +# ============LICENSE_START======================================================= +# org.onap.vvp/validation-scripts +# =================================================================== +# Copyright © 2019 AT&T Intellectual Property. All rights reserved. +# =================================================================== +# +# Unless otherwise specified, all software contained herein is licensed +# under the Apache License, Version 2.0 (the "License"); +# you may not use this software 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. +# +# +# +# Unless otherwise specified, all documentation contained herein is licensed +# under the Creative Commons License, Attribution 4.0 Intl. (the "License"); +# you may not use this documentation except in compliance with the License. +# You may obtain a copy of the License at +# +# https://creativecommons.org/licenses/by/4.0/ +# +# Unless required by applicable law or agreed to in writing, documentation +# 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. +# +# ============LICENSE_END============================================ +# +# + +heat_template_version: 2015-04-30 + +description: fdsafsfsa + +parameters: + + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: + type: string + +resources: + + fw_0_oam_protected_vmi_0_IP_0: + type: OS::ContrailV2::VirtualMachineInterface + properties: + virtual_machine_interface_allowed_address_pairs: + virtual_machine_interface_allowed_address_pairs_allowed_address_pair: + [{ + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip: + { + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: { get_param: virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix }, + }, + }] diff --git a/ice_validator/tests/helpers.py b/ice_validator/tests/helpers.py index c73a118..fd78c75 100644 --- a/ice_validator/tests/helpers.py +++ b/ice_validator/tests/helpers.py @@ -324,3 +324,17 @@ def prop_iterator(resource, *props): yield from prop_iterator(x, *props) elif isinstance(prop, dict): yield from prop_iterator(prop, *props) + + +def get_param(property_value): + """ + Returns the first parameter name from a get_param or None if get_param is + not used + """ + if property_value and isinstance(property_value, dict): + param = property_value.get("get_param") + if param and isinstance(param, list) and len(param) > 0: + return param[0] + else: + return param + return None diff --git a/ice_validator/tests/test_environment_file_parameters.py b/ice_validator/tests/test_environment_file_parameters.py index 694ea22..34808b9 100644 --- a/ice_validator/tests/test_environment_file_parameters.py +++ b/ice_validator/tests/test_environment_file_parameters.py @@ -39,7 +39,16 @@ """ environment file structure """ import os -from .helpers import validates, categories, get_environment_pair, find_environment_file + +from tests.structures import Heat +from tests.utils import nested_dict +from .helpers import ( + validates, + categories, + get_environment_pair, + find_environment_file, + get_param, +) import re import pytest from tests import cached_yaml as yaml @@ -190,7 +199,6 @@ def check_resource_parameter( def run_check_resource_parameter( yaml_file, prop, DESIRED, resource_type, check_resource=True, **kwargs ): - filepath, filename = os.path.split(yaml_file) environment_pair = get_environment_pair(yaml_file) @@ -228,7 +236,7 @@ def run_check_resource_parameter( filename, " not" if DESIRED else "", environment_pair.get("name"), - invalid_parameters, + ", ".join(invalid_parameters), ) ) @@ -364,7 +372,9 @@ def test_neutron_port_fixedips_subnet_parameter_doesnt_exist_in_environment_file @categories("environment_file") @validates("R-83412", "R-83418") -def test_neutron_port_external_aap_ip_parameter_doesnt_exist_in_environment_file(yaml_file): +def test_neutron_port_external_aap_ip_parameter_doesnt_exist_in_environment_file( + yaml_file +): run_check_resource_parameter( yaml_file, "allowed_address_pairs", @@ -412,3 +422,89 @@ def test_heat_rg_count_parameter_exists_in_environment_file(yaml_file): "OS::Heat::ResourceGroup", exclude_resource=re.compile(r"^(.+?)_subint_(.+?)_port_(.+?)_subinterfaces$"), ) + + +@categories("environment_file") +@validates("R-100020", "R-100040", "R-100060", "R-100080", "R-100170") +def test_contrail_external_instance_ip_does_not_exist_in_environment_file(yaml_file): + run_check_resource_parameter( + yaml_file, + "instance_ip_address", + False, + "OS::ContrailV2::InstanceIp", + exclude_resource=re.compile(r"^.*_int_.*$"), # exclude internal IPs + ) + + +@validates("R-100100", "R-100120", "R-100140", "R-100160", "R-100180") +def test_contrail_internal_instance_ip_does_exist_in_environment_file(yaml_file): + run_check_resource_parameter( + yaml_file, + "instance_ip_address", + True, + "OS::ContrailV2::InstanceIp", + exclude_resource=re.compile(r"(?!.*_int_.*)"), # exclude external IPs + ) + + +@categories("environment_file") +@validates("R-100210", "R-100230", "R-100250", "R-100270") +def test_contrail_subnet_uuid_does_not_exist_in_environment_file(yaml_file): + run_check_resource_parameter( + yaml_file, "subnet_uuid", False, "OS::ContrailV2::InstanceIp" + ) + + +@categories("environment_file") +@validates("R-100320", "R-100340") +def test_contrail_vmi_aap_does_not_exist_in_environment_file(yaml_file): + # This test needs to check a more complex structure. Rather than try to force + # that into the existing run_check_resource_parameter logic we'll just check it + # directly + pairs = get_environment_pair(yaml_file) + if not pairs: + pytest.skip("No matching env file found") + heat = Heat(filepath=yaml_file) + env_parameters = pairs["eyml"].get("parameters") or {} + vmis = heat.get_resource_by_type("OS::ContrailV2::VirtualMachineInterface") + external_vmis = {rid: data for rid, data in vmis.items() if "_int_" not in rid} + invalid_params = [] + for r_id, vmi in external_vmis.items(): + aap_value = nested_dict.get( + vmi, + "properties", + "virtual_machine_interface_allowed_address_pairs", + "virtual_machine_interface_allowed_address_pairs_allowed_address_pair", + ) + if not aap_value or not isinstance(aap_value, list): + # Skip if aap not used or is not a list. + continue + for pair_ip in aap_value: + if not isinstance(pair_ip, dict): + continue # Invalid Heat will be detected by another test + settings = ( + pair_ip.get( + "virtual_machine_interface_allowed_address" + "_pairs_allowed_address_pair_ip" + ) + or {} + ) + if isinstance(settings, dict): + ip_prefix = ( + settings.get( + "virtual_machine_interface_allowed_address" + "_pairs_allowed_address_pair_ip_ip_prefix" + ) + or {} + ) + ip_prefix_param = get_param(ip_prefix) + if ip_prefix_param and ip_prefix_param in env_parameters: + invalid_params.append(ip_prefix_param) + + msg = ( + "OS::ContrailV2::VirtualMachineInterface " + "virtual_machine_interface_allowed_address_pairs" + "_allowed_address_pair_ip_ip_prefix " + "parameters found in environment file {}: {}" + ).format(pairs.get("name"), ", ".join(invalid_params)) + assert not invalid_params, msg diff --git a/ice_validator/tests/test_neutron_port_network_attachment.py b/ice_validator/tests/test_neutron_port_network_attachment.py index dfbad35..0e0d8e6 100644 --- a/ice_validator/tests/test_neutron_port_network_attachment.py +++ b/ice_validator/tests/test_neutron_port_network_attachment.py @@ -3,36 +3,33 @@ import re import pytest -from tests.helpers import validates, get_base_template_from_yaml_files +from tests.helpers import validates, get_base_template_from_yaml_files, get_param from tests.parametrizers import get_nested_files from tests.structures import Heat + INTERNAL_UUID_PATTERN = re.compile(r"^int_(?P.+?)_net_id$") INTERNAL_NAME_PATTERN = re.compile(r"^int_(?P.+?)_net_name$") -INTERNAL_PORT = re.compile(r"^(?P.+)_(?P\d+)_int_" - r"(?P.+)_port_(?P\d+)$") +INTERNAL_PORT = re.compile( + r"^(?P.+)_(?P\d+)_int_" + r"(?P.+)_port_(?P\d+)$" +) -EXTERNAL_PORT = re.compile(r"^(?P.+)_(?P\d+)_(?!int_)" - r"(?P.+)_port_(?P\d+)$") +EXTERNAL_PORT = re.compile( + r"^(?P.+)_(?P\d+)_(?!int_)" + r"(?P.+)_port_(?P\d+)$" +) EXTERNAL_UUID_PATTERN = re.compile(r"^(?!int_)(?P.+?)_net_id$") EXTERNAL_NAME_PATTERN = re.compile(r"^(?!int_)(?P.+?)_net_name$") -INTERNAL_NETWORK_PATTERN = re.compile(r"^int_(?P.+?)" - r"_(network|RVN)$") +INTERNAL_NETWORK_PATTERN = re.compile(r"^int_(?P.+?)" r"_(network|RVN)$") def is_incremental_module(yaml_file, base_path, nested_paths): return yaml_file != base_path and yaml_file not in nested_paths -def get_param(prop_val): - if not isinstance(prop_val, dict): - return None - param = prop_val.get("get_param") - return param if isinstance(param, str) else None - - @validates("R-86182", "R-22688") def test_internal_network_parameters(yaml_files): base_path = get_base_template_from_yaml_files(yaml_files) @@ -40,8 +37,9 @@ def test_internal_network_parameters(yaml_files): pytest.skip("No base module found") base_heat = Heat(filepath=base_path) nested_paths = get_nested_files(yaml_files) - incremental_modules = [f for f in yaml_files - if is_incremental_module(f, base_path, nested_paths)] + incremental_modules = [ + f for f in yaml_files if is_incremental_module(f, base_path, nested_paths) + ] errors = [] for module in incremental_modules: heat = Heat(filepath=module) @@ -52,63 +50,75 @@ def test_internal_network_parameters(yaml_files): network = (port.get("properties") or {}).get("network") or {} if isinstance(network, dict) and ( - "get_resource" in network or "get_attr" in network): + "get_resource" in network or "get_attr" in network + ): continue param = get_param(network) if not param: - errors.append(( - "The internal port ({}) must either connect to a network " - "in the base module using get_param or to a network " - "created in this module ({})" - ).format(rid, os.path.split(module)[1])) + errors.append( + ( + "The internal port ({}) must either connect to a network " + "in the base module using get_param or to a network " + "created in this module ({})" + ).format(rid, os.path.split(module)[1]) + ) continue - param_match = ( - INTERNAL_UUID_PATTERN.match(param) - or INTERNAL_NAME_PATTERN.match(param) - ) + param_match = INTERNAL_UUID_PATTERN.match( + param + ) or INTERNAL_NAME_PATTERN.match(param) if not param_match: - errors.append(( - "The internal port ({}) network parameter ({}) does not " - "match one of the required naming conventions of " - "int_{{network-role}}_net_id or " - "int_{{network-role}}_net_name " - "for connecting to an internal network. " - "If this is not an internal port, then change the resource " - "ID to adhere to the external port naming convention." - ).format(rid, param)) + errors.append( + ( + "The internal port ({}) network parameter ({}) does not " + "match one of the required naming conventions of " + "int_{{network-role}}_net_id or " + "int_{{network-role}}_net_name " + "for connecting to an internal network. " + "If this is not an internal port, then change the resource " + "ID to adhere to the external port naming convention." + ).format(rid, param) + ) continue if param not in base_heat.yml.get("outputs", {}): base_module = os.path.split(base_path)[1] - errors.append(( - "The internal network parameter ({}) attached to port ({}) " - "must be defined in the output section of the base module ({})." - ).format(param, rid, base_module)) + errors.append( + ( + "The internal network parameter ({}) attached to port ({}) " + "must be defined in the output section of the base module ({})." + ).format(param, rid, base_module) + ) continue param_network_role = param_match.groupdict().get("network_role") rid_network_role = rid_match.groupdict().get("network_role") if param_network_role.lower() != rid_network_role.lower(): - errors.append(( - "The network role ({}) extracted from the resource ID ({}) " - "does not match network role ({}) extracted from the " - "network parameter ({})" - ).format(rid_network_role, rid, param_network_role, param)) + errors.append( + ( + "The network role ({}) extracted from the resource ID ({}) " + "does not match network role ({}) extracted from the " + "network parameter ({})" + ).format(rid_network_role, rid, param_network_role, param) + ) resources = base_heat.get_all_resources(os.path.split(base_path)[0]) - networks = {rid: resource for rid, resource in resources.items() - if resource.get("type") - in {"OS::Neutron::Net", - "OS::ContrailV2::VirtualNetwork"}} + networks = { + rid: resource + for rid, resource in resources.items() + if resource.get("type") + in {"OS::Neutron::Net", "OS::ContrailV2::VirtualNetwork"} + } matches = (INTERNAL_NETWORK_PATTERN.match(n) for n in networks) roles = {m.groupdict()["network_role"].lower() for m in matches if m} if param_network_role.lower() not in roles: - errors.append(( - "No internal network with a network role of {} was " - "found in the base modules networks: {}" - ).format(param_network_role, ", ".join(networks))) + errors.append( + ( + "No internal network with a network role of {} was " + "found in the base modules networks: {}" + ).format(param_network_role, ", ".join(networks)) + ) assert not errors, ". ".join(errors) @@ -120,40 +130,47 @@ def test_external_network_parameter(heat_template): for rid, port in heat.neutron_port_resources.items(): rid_match = EXTERNAL_PORT.match(rid) if not rid_match: - continue # only test external ports + continue # only test external ports network = (port.get("properties") or {}).get("network") or {} if not isinstance(network, dict) or "get_param" not in network: - errors.append(( - "The external port ({}) must assign the network property " - "using get_param. If this port is for an internal network, " - "then change the resource ID format to the external format." - ).format(rid)) + errors.append( + ( + "The external port ({}) must assign the network property " + "using get_param. If this port is for an internal network, " + "then change the resource ID format to the external format." + ).format(rid) + ) continue param = get_param(network) if not param: - errors.append(( - "The get_param function on the network property of port ({}) " - "must only take a single, string parameter." - ).format(rid)) + errors.append( + ( + "The get_param function on the network property of port ({}) " + "must only take a single, string parameter." + ).format(rid) + ) continue - param_match = ( - EXTERNAL_NAME_PATTERN.match(param) - or EXTERNAL_UUID_PATTERN.match(param) + param_match = EXTERNAL_NAME_PATTERN.match(param) or EXTERNAL_UUID_PATTERN.match( + param ) if not param_match: - errors.append(( - "The network parameter ({}) on port ({}) does not match one of " - "{{network-role}}_net_id or {{network-role}}_net_name." - ).format(param, rid)) + errors.append( + ( + "The network parameter ({}) on port ({}) does not match one of " + "{{network-role}}_net_id or {{network-role}}_net_name." + ).format(param, rid) + ) continue rid_network_role = rid_match.groupdict()["network_role"] param_network_role = param_match.groupdict()["network_role"] if rid_network_role.lower() != param_network_role.lower(): - errors.append(( - "The network role ({}) extracted from the resource ID ({}) " - "does not match network role ({}) extracted from the " - "network parameter ({})" - ).format(rid_network_role, rid, param_network_role, param)) + errors.append( + ( + "The network role ({}) extracted from the resource ID ({}) " + "does not match network role ({}) extracted from the " + "network parameter ({})" + ).format(rid_network_role, rid, param_network_role, param) + ) assert not errors, ". ".join(errors) -- cgit 1.2.3-korg