X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=ice_validator%2Ftests%2Ftest_allowed_address_pairs_include_vm_type_network_role.py;h=6b3c63cea93731b83d3cbbef265aa072580637a9;hb=0c4e64d87728b89aa9cd4d41d738f5bfe64ceee3;hp=d4fdb36758e3ac40ca036f7146e464eee42e1a23;hpb=6985dd5e75118aed4ff07c88de11c8c9cd5c72cb;p=vvp%2Fvalidation-scripts.git diff --git a/ice_validator/tests/test_allowed_address_pairs_include_vm_type_network_role.py b/ice_validator/tests/test_allowed_address_pairs_include_vm_type_network_role.py index d4fdb36..6b3c63c 100644 --- a/ice_validator/tests/test_allowed_address_pairs_include_vm_type_network_role.py +++ b/ice_validator/tests/test_allowed_address_pairs_include_vm_type_network_role.py @@ -1,12 +1,12 @@ # -*- coding: utf8 -*- -# ============LICENSE_START======================================================= +# ============LICENSE_START==================================================== # org.onap.vvp/validation-scripts # =================================================================== -# Copyright © 2017 AT&T Intellectual Property. All rights reserved. +# 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”); +# 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 # @@ -21,7 +21,7 @@ # # # Unless otherwise specified, all documentation contained herein is licensed -# under the Creative Commons License, Attribution 4.0 Intl. (the “License”); +# 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 # @@ -35,31 +35,102 @@ # # ============LICENSE_END============================================ # -# ECOMP is a trademark and service mark of AT&T Intellectual Property. # +import re + from .helpers import validates +from .utils.ports import check_parameter_format +from tests.structures import ( + NeutronPortProcessor, + ContrailV2VirtualMachineInterfaceProcessor, +) + +VERSION = "1.0.0" + +# pylint: disable=invalid-name + +RE_EXTERNAL_PARAM_AAP = re.compile( # match pattern + r"(?P.+)_(?P.+)_floating(_v6)?_ip$" +) + +RE_INTERNAL_PARAM_AAP = re.compile( # match pattern + r"(?P.+)_int_(?P.+)_floating(_v6)?_ip$" +) + +RE_INTERNAL_PARAM_AAPS = re.compile( # match pattern + r"(?P.+)_int_(?P.+)_floating(_v6)?_ips$" +) + +aap_regx_dict = { + "external": { + "string": { + "readable": "{vm-type}_{network-role}_floating_ip or {vm-type}_{network-role}_floating_v6_ip", + "machine": RE_EXTERNAL_PARAM_AAP, + } + }, + "internal": { + "string": { + "readable": "{vm-type}_int_{network-role}_floating_ip or {vm-type}_int_{network-role}_floating_v6_ip", + "machine": RE_INTERNAL_PARAM_AAP, + }, + "comma_delimited_list": { + "readable": "{vm-type}_int_{network-role}_floating_ips or {vm-type}_int_{network-role}_floating_v6_ips", + "machine": RE_INTERNAL_PARAM_AAPS, + }, + }, + "parameter_to_resource_comparisons": ["vm_type", "network_role"], +} + + +@validates("R-41492", "R-35735", "R-159016", "R-91810", "R-41956", "R-41493") +def test_external_aap_format(yaml_file): + check_parameter_format( + yaml_file, + aap_regx_dict, + "external", + NeutronPortProcessor, + "allowed_address_pairs", + "ip_address", + exemptions_allowed=True, + ) -import pytest -import yaml -from .utils.ports import get_invalid_ip_addresses +@validates("R-717227", "R-805572") +def test_internal_aap_format(yaml_file): + check_parameter_format( + yaml_file, + aap_regx_dict, + "internal", + NeutronPortProcessor, + "allowed_address_pairs", + "ip_address", + ) -@validates('R-41492', - 'R-35735') -def test_allowed_address_pairs_include_vm_type_network_role(heat_template): - ''' - Check that all allowed_address_pairs include the {vm_type} of the - nova server it is associated to and also contains the - {network_role} of the network it is associated with - ''' - with open(heat_template) as fh: - yml = yaml.load(fh) - # skip if resources are not defined - if "resources" not in yml: - pytest.skip("No resources specified in the heat template") +@validates("R-100280", "R-100290", "R-100310", "R-100330", "R-100350", "R-41493") +def test_external_aap_format_contrail(yaml_file): + check_parameter_format( + yaml_file, + aap_regx_dict, + "external", + ContrailV2VirtualMachineInterfaceProcessor, + "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", + exemptions_allowed=True, + ) - invalid_ip_addresses = get_invalid_ip_addresses(yml['resources'], - "allowed_address_pairs") - assert not set(invalid_ip_addresses) +@validates("R-100360", "R-100370") +def test_contrail_internal_vmi_aap_parameter(yaml_file): + check_parameter_format( + yaml_file, + aap_regx_dict, + "internal", + ContrailV2VirtualMachineInterfaceProcessor, + "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", + )