def get_requirement_node_name(self, req_value):
         return self.get_prop_from_obj(req_value, 'node')
 
+    def getRequirementByNodeName(self, nodeTemplates, storage_name, prop):
+        for node in nodeTemplates:
+            if node['name'] == storage_name:
+                if prop in node:
+                    return node[prop]
+
     def get_prop_from_obj(self, obj, prop):
         if isinstance(obj, str):
             return obj
 
 # limitations under the License.
 
 import functools
-
+import logging
 from catalog.pub.utils.toscaparser import EtsiNsdInfoModel
+logger = logging.getLogger(__name__)
 
 
 class EtsiVnfdInfoModel(EtsiNsdInfoModel):
                 virtual_compute = self.getCapabilityByName(node, 'virtual_compute')
                 if virtual_compute is not None and 'properties' in virtual_compute:
                     ret['virtual_compute'] = virtual_compute['properties']
+                virtual_storage_names = self.getRequirementByName(node, 'virtual_storage')
+                virtual_storage = self.getRequirementByNodeName(nodeTemplates, virtual_storage_names[0], 'properties')
+                if virtual_storage is not None:
+                    ret['virtual_compute']['virtual_storage'] = virtual_storage
 
                 ret['vls'] = self.get_linked_vl_ids(node, nodeTemplates)
 
                 ret['artifacts'] = self._build_artifacts(node)
 
                 rets.append(ret)
+        logger.debug("rets:%s", rets)
         return rets
 
     def get_node_image_file(self, node):