[VVP] udpating scripts for casablanca 2
[vvp/validation-scripts.git] / ice_validator / tests / test_volume_resource_ids.py
index 45b05e7..9f0d176 100644 (file)
 #
 
 import re
+
 import pytest
-import yaml
+from tests import cached_yaml as yaml
+
 from .utils.vm_types import get_vm_type_for_nova_server
 
 
 def test_volume_resource_ids(heat_template):
-    """
+    '''
     Check that all resource ids for cinder volumes follow the right
     naming convention to include the {vm_type} of the
     nova server it is associated to
-    """
+    '''
     with open(heat_template) as fh:
         yml = yaml.load(fh)
 
@@ -57,24 +59,25 @@ def test_volume_resource_ids(heat_template):
     if "resources" not in yml:
         pytest.skip("No resources specified in the heat template")
 
-    volume_pattern = re.compile(r"(.+?)_volume_id_\d+")
-    resources = yml["resources"]
+    volume_pattern = re.compile(r'(.+?)_volume_id_\d+')
+    resources = yml['resources']
 
     invalid_volumes = []
     for k, v in resources.items():
         if not isinstance(v, dict):
             continue
-        if "type" not in v:
+        if 'type' not in v:
             continue
-        if v["type"] not in ["OS::Nova::Server", "OS::Cinder::VolumeAttachment"]:
+        if v['type'] not in ['OS::Nova::Server',
+                             'OS::Cinder::VolumeAttachment']:
             continue
 
-        if v["type"] == "OS::Nova::Server":
+        if v['type'] == 'OS::Nova::Server':
             # check block_device_mapping and make sure the right
             # {vm_type} is used
-            if "properties" not in v:
+            if 'properties' not in v:
                 continue
-            if "block_device_mapping" not in v["properties"]:
+            if 'block_device_mapping' not in v['properties']:
                 continue
 
             vm_type = get_vm_type_for_nova_server(v)
@@ -83,15 +86,17 @@ def test_volume_resource_ids(heat_template):
             vm_type = vm_type.lower()
 
             # get the volume_id from the block_device_mapping
-            properties = v["properties"]
-            for v2 in properties["block_device_mapping"]:
+            properties = v['properties']
+            for v2 in properties['block_device_mapping']:
                 for k3, v3 in v2.items():
-                    if k3 != "volume_id":
+                    if k3 != 'volume_id':
                         continue
                     if not isinstance(v3, dict):
                         continue
 
-                    volume_id = v3.get("get_param") or v3.get("get_resource")
+                    volume_id = (
+                        v3.get('get_param') or
+                        v3.get('get_resource'))
                     if not volume_id:
                         continue
                     if isinstance(volume_id, list):
@@ -102,27 +107,27 @@ def test_volume_resource_ids(heat_template):
                     if vm_type + "_" not in volume_id:
                         invalid_volumes.append(volume_id)
 
-        elif v["type"] == "OS::Cinder::VolumeAttachment":
+        elif v['type'] == 'OS::Cinder::VolumeAttachment':
             # check the volume attachment and the {vm_type}
             # of the corresponding nova server
-            if "properties" not in v:
+            if 'properties' not in v:
                 continue
-            if "volume_id" not in v["properties"]:
+            if 'volume_id' not in v['properties']:
                 continue
-            if "instance_uuid" not in v["properties"]:
+            if 'instance_uuid' not in v['properties']:
                 continue
 
-            properties = v["properties"]
+            properties = v['properties']
 
             # get the instance_uuid and when applicable
             # the nova server instance
             instance_uuid = None
             nova_server = None
 
-            if "get_param" in properties["instance_uuid"]:
+            if 'get_param' in properties['instance_uuid']:
                 continue
-            elif "get_resource" in properties["instance_uuid"]:
-                instance_uuid = properties["instance_uuid"]["get_resource"]
+            elif 'get_resource' in properties['instance_uuid']:
+                instance_uuid = properties['instance_uuid']['get_resource']
                 if not resources[instance_uuid]:
                     continue
                 nova_server = resources[instance_uuid]
@@ -132,9 +137,9 @@ def test_volume_resource_ids(heat_template):
 
             # get the volume_id
             volume_id = None
-            volume_id = properties["volume_id"].get("get_param") or properties[
-                "volume_id"
-            ].get("get_resource")
+            volume_id = (
+                properties['volume_id'].get('get_param') or
+                properties['volume_id'].get('get_resource'))
             if not volume_id:
                 continue
             if isinstance(volume_id, list):