Reduced coginitive compexity from 16 to 15
[vvp/validation-scripts.git] / ice_validator / tests / test_network_format.py
index df49e66..de8115d 100644 (file)
@@ -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_role>.+)_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
@@ -118,7 +82,7 @@ def test_network_resource_id_format(yaml_file):
 
     assert not set(invalid_networks), (
         "Heat templates must only create internal networks "
-        "and follow format int_{network-role}_network"
+        "and follow format int_{{network-role}}_network"
         "{}".format(", ".join(invalid_networks))
     )
 
@@ -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