aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLovett, Trevor <trevor.lovett@att.com>2019-05-14 10:37:17 -0500
committerLovett, Trevor <trevor.lovett@att.com>2019-05-14 11:53:41 -0500
commit9ccbfe7e20b3914c37c0dec50762cec9da8a63c6 (patch)
treec8164726199ec286f7619fc23f4986311022dbe9
parent503041fb7ec395fe57e418d584c4a5d06f4c9877 (diff)
[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 <trevor.lovett@att.com>
-rw-r--r--ice_validator/tests/fixtures/test_environment_file_parameters/fail/contrail_instance_ip/contrail_instance_ip_fail.env49
-rw-r--r--ice_validator/tests/fixtures/test_environment_file_parameters/fail/contrail_instance_ip/contrail_instance_ip_fail.yaml76
-rw-r--r--ice_validator/tests/fixtures/test_environment_file_parameters/fail/general/STARKDB-nested.yaml (renamed from ice_validator/tests/fixtures/test_environment_file_parameters/fail/STARKDB-nested.yaml)16
-rw-r--r--ice_validator/tests/fixtures/test_environment_file_parameters/fail/general/fail.env (renamed from ice_validator/tests/fixtures/test_environment_file_parameters/fail/fail.env)6
-rw-r--r--ice_validator/tests/fixtures/test_environment_file_parameters/fail/general/fail.yaml (renamed from ice_validator/tests/fixtures/test_environment_file_parameters/fail/fail.yaml)24
-rw-r--r--ice_validator/tests/fixtures/test_environment_file_parameters/fail/vmi_aap/vmi_aap_fail.env46
-rw-r--r--ice_validator/tests/fixtures/test_environment_file_parameters/fail/vmi_aap/vmi_aap_fail.yaml61
-rw-r--r--ice_validator/tests/fixtures/test_environment_file_parameters/pass/contrail_instance_ip/contrail_instance_ip_pass.env48
-rw-r--r--ice_validator/tests/fixtures/test_environment_file_parameters/pass/contrail_instance_ip/contrail_instance_ip_pass.yaml76
-rw-r--r--ice_validator/tests/fixtures/test_environment_file_parameters/pass/general/STARKDB-nested.yaml (renamed from ice_validator/tests/fixtures/test_environment_file_parameters/pass/STARKDB-nested.yaml)0
-rw-r--r--ice_validator/tests/fixtures/test_environment_file_parameters/pass/general/pass.env (renamed from ice_validator/tests/fixtures/test_environment_file_parameters/pass/pass.env)0
-rw-r--r--ice_validator/tests/fixtures/test_environment_file_parameters/pass/general/pass.yaml (renamed from ice_validator/tests/fixtures/test_environment_file_parameters/pass/pass.yaml)0
-rw-r--r--ice_validator/tests/fixtures/test_environment_file_parameters/pass/vmi_aap/vmi_aap_pass.env46
-rw-r--r--ice_validator/tests/fixtures/test_environment_file_parameters/pass/vmi_aap/vmi_aap_pass.yaml61
-rw-r--r--ice_validator/tests/helpers.py14
-rw-r--r--ice_validator/tests/test_environment_file_parameters.py104
-rw-r--r--ice_validator/tests/test_neutron_port_network_attachment.py165
17 files changed, 710 insertions, 82 deletions
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/STARKDB-nested.yaml b/ice_validator/tests/fixtures/test_environment_file_parameters/fail/general/STARKDB-nested.yaml
index 45e0edb..bb82a04 100644
--- a/ice_validator/tests/fixtures/test_environment_file_parameters/fail/STARKDB-nested.yaml
+++ b/ice_validator/tests/fixtures/test_environment_file_parameters/fail/general/STARKDB-nested.yaml
@@ -43,9 +43,6 @@ description: fdsafsfsa
parameters:
- my_nested_parameter:
- type: number
- description: sdfnklafd
STARKDB_image_name:
type: number
description: sdfnklafd
@@ -57,6 +54,8 @@ parameters:
description: sdfnklafd
#constraints:
# - range: { min: 100, max: 400 }
+ subnet_uuid:
+ type: string
resources:
@@ -117,6 +116,17 @@ resources:
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/fail.env b/ice_validator/tests/fixtures/test_environment_file_parameters/fail/general/fail.env
index 1092685..dbdc492 100644
--- a/ice_validator/tests/fixtures/test_environment_file_parameters/fail/fail.env
+++ b/ice_validator/tests/fixtures/test_environment_file_parameters/fail/general/fail.env
@@ -100,3 +100,9 @@ parameters:
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/fail.yaml b/ice_validator/tests/fixtures/test_environment_file_parameters/fail/general/fail.yaml
index 8ee4182..d311730 100644
--- a/ice_validator/tests/fixtures/test_environment_file_parameters/fail/fail.yaml
+++ b/ice_validator/tests/fixtures/test_environment_file_parameters/fail/general/fail.yaml
@@ -166,6 +166,12 @@ parameters:
type: string
description: nafs
+ fw_other_ip_0:
+ type: string
+
+ fw_oam_protected_ips:
+ type: comma_delimited_list
+
resources:
STARKDB_cinder_attach:
@@ -282,6 +288,7 @@ resources:
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
@@ -338,6 +345,9 @@ resources:
STARKDB_cloud_config:
type: OS::Heat::CloudConfig
+ subnet_uuid:
+ type: string
+
myrouteprefix:
type: OS::ContrailV2::InterfaceRouteTable
@@ -359,6 +369,18 @@ resources:
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:
@@ -377,4 +399,4 @@ outputs:
value: { get_param: crazy_subnet_id }
crazy_net_id:
- value: { get_param: 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/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/STARKDB-nested.yaml b/ice_validator/tests/fixtures/test_environment_file_parameters/pass/general/STARKDB-nested.yaml
index 865a327..865a327 100644
--- a/ice_validator/tests/fixtures/test_environment_file_parameters/pass/STARKDB-nested.yaml
+++ b/ice_validator/tests/fixtures/test_environment_file_parameters/pass/general/STARKDB-nested.yaml
diff --git a/ice_validator/tests/fixtures/test_environment_file_parameters/pass/pass.env b/ice_validator/tests/fixtures/test_environment_file_parameters/pass/general/pass.env
index ec42bbc..ec42bbc 100644
--- a/ice_validator/tests/fixtures/test_environment_file_parameters/pass/pass.env
+++ b/ice_validator/tests/fixtures/test_environment_file_parameters/pass/general/pass.env
diff --git a/ice_validator/tests/fixtures/test_environment_file_parameters/pass/pass.yaml b/ice_validator/tests/fixtures/test_environment_file_parameters/pass/general/pass.yaml
index 72ed539..72ed539 100644
--- a/ice_validator/tests/fixtures/test_environment_file_parameters/pass/pass.yaml
+++ b/ice_validator/tests/fixtures/test_environment_file_parameters/pass/general/pass.yaml
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<network_role>.+?)_net_id$")
INTERNAL_NAME_PATTERN = re.compile(r"^int_(?P<network_role>.+?)_net_name$")
-INTERNAL_PORT = re.compile(r"^(?P<vm_type>.+)_(?P<vm_type_index>\d+)_int_"
- r"(?P<network_role>.+)_port_(?P<port_index>\d+)$")
+INTERNAL_PORT = re.compile(
+ r"^(?P<vm_type>.+)_(?P<vm_type_index>\d+)_int_"
+ r"(?P<network_role>.+)_port_(?P<port_index>\d+)$"
+)
-EXTERNAL_PORT = re.compile(r"^(?P<vm_type>.+)_(?P<vm_type_index>\d+)_(?!int_)"
- r"(?P<network_role>.+)_port_(?P<port_index>\d+)$")
+EXTERNAL_PORT = re.compile(
+ r"^(?P<vm_type>.+)_(?P<vm_type_index>\d+)_(?!int_)"
+ r"(?P<network_role>.+)_port_(?P<port_index>\d+)$"
+)
EXTERNAL_UUID_PATTERN = re.compile(r"^(?!int_)(?P<network_role>.+?)_net_id$")
EXTERNAL_NAME_PATTERN = re.compile(r"^(?!int_)(?P<network_role>.+?)_net_name$")
-INTERNAL_NETWORK_PATTERN = re.compile(r"^int_(?P<network_role>.+?)"
- r"_(network|RVN)$")
+INTERNAL_NETWORK_PATTERN = re.compile(r"^int_(?P<network_role>.+?)" 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)