X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=ice_validator%2Ftests%2Ftest_network_format.py;h=de8115d1f68ed8c042d595e9ded27fb0f57b62a6;hb=98d86269d797a390b9e47d41383d0744ea858837;hp=9d3062adab6879bc4680c06545c7bbaa2777e67c;hpb=5f53caf31c930151a66deb64f091a53c57129892;p=vvp%2Fvalidation-scripts.git diff --git a/ice_validator/tests/test_network_format.py b/ice_validator/tests/test_network_format.py index 9d3062a..de8115d 100644 --- a/ice_validator/tests/test_network_format.py +++ b/ice_validator/tests/test_network_format.py @@ -43,7 +43,7 @@ import re from tests import cached_yaml as yaml from .helpers import validates -from .utils.network_roles import get_network_role_from_port, property_uses_get_resource +from .utils.network_roles import property_uses_get_resource RE_INTERNAL_NETWORK_RID = re.compile( # match pattern r"int_(?P.+)_network$" @@ -51,40 +51,6 @@ RE_INTERNAL_NETWORK_RID = re.compile( # match pattern NETWORK_RESOURCE_TYPES = ["OS::Neutron::Net", "OS::ContrailV2::VirtualNetwork"] -@validates("R-62983", "R-86182") -def test_network_format(yaml_file): - """ - Make sure all network properties use the allowed naming - conventions - """ - with open(yaml_file) 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") - - invalid_ports = [] - for k, v in yml["resources"].items(): - if not isinstance(v, dict): - continue - if "properties" not in v: - continue - if property_uses_get_resource(v, "network"): - continue - if v.get("type") != "OS::Neutron::Port": - continue - if not get_network_role_from_port(v): - invalid_ports.append(k) - - assert not set(invalid_ports), ( - "Missing 'network' property or improperly " - "formatted network parameter name on the " - "following OS::Neutron::Ports: " - "{}".format(", ".join(invalid_ports)) - ) - - @validates("R-16968", "R-35666") def test_network_resource_id_format(yaml_file): """ @@ -104,9 +70,7 @@ def test_network_resource_id_format(yaml_file): invalid_networks = [] for k, v in yml["resources"].items(): - if not isinstance(v, dict): - continue - if "properties" not in v: + if not has_properties(v): continue if property_uses_get_resource(v, "network"): continue @@ -140,27 +104,19 @@ def test_network_has_subnet(yaml_file): networks = [] for k, v in yml["resources"].items(): - if not isinstance(v, dict): - continue - if "properties" not in v: + if not has_properties(v) or v.get("type") not in ["OS::Neutron::Net"]: continue # need to check if contrail networks also require subnet # and it is defined the same as neutron networks # if v.get("type") not in NETWORK_RESOURCE_TYPES: - if v.get("type") not in ["OS::Neutron::Net"]: - continue networks.append(k) for k, v in yml["resources"].items(): - if not isinstance(v, dict): - continue - if "properties" not in v: - continue - if v.get("type") != "OS::Neutron::Subnet": - continue network_prop = v.get("properties", {}).get("network", {}).get("get_resource") - - if not network_prop: + if ( + not has_properties(v) and v.get("type") != "OS::Neutron::Subnet" + and not network_prop + ): continue x = 0 for network in networks: @@ -170,3 +126,10 @@ def test_network_has_subnet(yaml_file): x += 1 assert not networks, "Networks detected without subnet {}".format(networks) + + +def has_properties(resource): + """ + checks resource is a Neutron Subnet + """ + return isinstance(resource, dict) and "properties" in resource