import shutil
 import urllib
 
+from toscaparser.functions import GetInput
 from toscaparser.tosca_template import ToscaTemplate
 
 from lcm.pub.utils.toscaparser.dataentityext import DataEntityExt
 
     def buidMetadata(self, tosca):
         if 'metadata' in tosca.tpl:
-            self.metadata = copy.deepcopy(tosca.tpl['metadata'])
\ No newline at end of file
+            self.metadata = copy.deepcopy(tosca.tpl['metadata'])
+
+        def buildProperties(self, nodeTemplate, parsed_params):
+            properties = {}
+            isMappingParams = parsed_params and len(parsed_params) > 0
+            for k, item in nodeTemplate.get_properties().items():
+                properties[k] = item.value
+                if isinstance(item.value, GetInput):
+                    if item.value.result() and isMappingParams:
+                        properties[k] = DataEntityExt.validate_datatype(item.type, item.value.result())
+                    else:
+                        tmp = {}
+                        tmp[item.value.name] = item.value.input_name
+                        properties[k] = tmp
+            if 'attributes' in nodeTemplate.entity_tpl:
+                for k, item in nodeTemplate.entity_tpl['attributes'].items():
+                    properties[k] = str(item)
+            return properties
+
+    def buildProperties(self, nodeTemplate, parsed_params):
+        properties = {}
+        isMappingParams = parsed_params and len(parsed_params) > 0
+        for k, item in nodeTemplate.get_properties().items():
+            properties[k] = item.value
+            if isinstance(item.value, GetInput):
+                if item.value.result() and isMappingParams:
+                    properties[k] = DataEntityExt.validate_datatype(item.type, item.value.result())
+                else:
+                    tmp = {}
+                    tmp[item.value.name] = item.value.input_name
+                    properties[k] = tmp
+        if 'attributes' in nodeTemplate.entity_tpl:
+            for k, item in nodeTemplate.entity_tpl['attributes'].items():
+                properties[k] = str(item)
+        return properties
+
+
+    def verify_properties(self, props, inputs, parsed_params):
+        ret_props = {}
+        if (props and len(props) > 0):
+            for key, value in props.items():
+                ret_props[key] = self._verify_value(value, inputs, parsed_params)
+                #                 if isinstance(value, str):
+                #                     ret_props[key] = self._verify_string(inputs, parsed_params, value);
+                #                     continue
+                #                 if isinstance(value, list):
+                #                     ret_props[key] = map(lambda x: self._verify_dict(inputs, parsed_params, x), value)
+                #                     continue
+                #                 if isinstance(value, dict):
+                #                     ret_props[key] = self._verify_map(inputs, parsed_params, value)
+                #                     continue
+                #                 ret_props[key] = value
+        return ret_props
\ No newline at end of file
 
 
     def buildNode(self, nodeTemplate, inputs, parsed_params):
         ret ={}
-        # ret['name'] = nodeTemplate.name
-        # ret['nodeType'] = nodeTemplate.type
-        # if 'description' in nodeTemplate.entity_tpl:
-        #     ret['description'] = nodeTemplate.entity_tpl['description']
-        # else:
-        #     ret['description'] = ''
-        # props = self.buildProperties(nodeTemplate, parsed_params)
-        # ret['properties'] = self.verify_properties(props, inputs, parsed_params)
+        ret['name'] = nodeTemplate.name
+        ret['nodeType'] = nodeTemplate.type
+        if 'description' in nodeTemplate.entity_tpl:
+            ret['description'] = nodeTemplate.entity_tpl['description']
+        else:
+            ret['description'] = ''
+        props = self.buildProperties(nodeTemplate, parsed_params)
+        ret['properties'] = self.verify_properties(props, inputs, parsed_params)
         # ret['requirements'] = self.build_requirements(nodeTemplate)
         # self.buildCapabilities(nodeTemplate, inputs, ret)
         # self.buildArtifacts(nodeTemplate, inputs, ret)
         # interfaces = self.build_interfaces(nodeTemplate)
         # if interfaces: ret['interfaces'] = interfaces
-        return ret
\ No newline at end of file
+        return ret