diff options
author | 2019-07-12 15:00:04 +0800 | |
---|---|---|
committer | 2019-07-12 15:39:16 +0800 | |
commit | aef67d1a1fb076f154f9f7595b54590fc7499ee6 (patch) | |
tree | 95f6cdeab82c33024715b92a2a8ff7b16f0e26b7 /genericparser/pub/utils | |
parent | 7d0fa869b75947729dbe340f8285bc018fa849c4 (diff) |
Update python2 to python3
Issue-ID: VFC-1429
Signed-off-by: Olivia.Zhan <zhan.jie1@zte.com.cn>
Change-Id: I9ec0ccfa5ba200c690a85d582cee41009dfdc0f0
Diffstat (limited to 'genericparser/pub/utils')
-rw-r--r-- | genericparser/pub/utils/fileutil.py | 11 | ||||
-rw-r--r-- | genericparser/pub/utils/idutil.py | 2 | ||||
-rw-r--r-- | genericparser/pub/utils/jobutil.py | 1 | ||||
-rw-r--r-- | genericparser/pub/utils/restcall.py | 4 | ||||
-rw-r--r-- | genericparser/pub/utils/tests.py | 12 | ||||
-rw-r--r-- | genericparser/pub/utils/toscaparsers/basemodel.py | 36 | ||||
-rw-r--r-- | genericparser/pub/utils/toscaparsers/graph.py | 4 | ||||
-rw-r--r-- | genericparser/pub/utils/toscaparsers/nsdmodel.py | 10 | ||||
-rw-r--r-- | genericparser/pub/utils/toscaparsers/pnfmodel.py | 2 | ||||
-rw-r--r-- | genericparser/pub/utils/toscaparsers/sdmodel.py | 6 | ||||
-rw-r--r-- | genericparser/pub/utils/toscaparsers/servicemodel.py | 4 | ||||
-rw-r--r-- | genericparser/pub/utils/toscaparsers/vnfdmodel.py | 2 | ||||
-rw-r--r-- | genericparser/pub/utils/toscaparsers/vnfdparser/vnfd_sol_251.py | 34 | ||||
-rw-r--r-- | genericparser/pub/utils/toscaparsers/vnfdparser/vnfd_sol_base.py | 32 | ||||
-rw-r--r-- | genericparser/pub/utils/values.py | 9 |
15 files changed, 87 insertions, 82 deletions
diff --git a/genericparser/pub/utils/fileutil.py b/genericparser/pub/utils/fileutil.py index d7811b8..6ddfc72 100644 --- a/genericparser/pub/utils/fileutil.py +++ b/genericparser/pub/utils/fileutil.py @@ -16,7 +16,7 @@ import shutil import logging import tempfile import traceback -import urllib2 +import urllib import zipfile @@ -25,7 +25,7 @@ logger = logging.getLogger(__name__) def make_dirs(path): if not os.path.exists(path): - os.makedirs(path, 0777) + os.makedirs(path, 0o777) def delete_dirs(path): @@ -34,7 +34,7 @@ def delete_dirs(path): shutil.rmtree(path) except Exception as e: logger.error(traceback.format_exc()) - logger.error("Failed to delete %s:%s", path, e.message) + logger.error("Failed to delete %s:%s", path, e.args[0]) def download_file_from_http(url, local_dir, file_name): @@ -42,9 +42,8 @@ def download_file_from_http(url, local_dir, file_name): is_download_ok = False try: make_dirs(local_dir) - r = urllib2.Request(url) - req = urllib2.urlopen(r) - save_file = open(local_file_name, 'wb') + req = urllib.request.urlopen(url) + save_file = open(local_file_name, 'w') save_file.write(req.read()) save_file.close() req.close() diff --git a/genericparser/pub/utils/idutil.py b/genericparser/pub/utils/idutil.py index 85bebb8..768416c 100644 --- a/genericparser/pub/utils/idutil.py +++ b/genericparser/pub/utils/idutil.py @@ -11,7 +11,7 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -from redisco import containers as cont +from genericparser.pub.redisco import containers as cont def get_auto_id(id_type, id_group="auto_id_hash"): diff --git a/genericparser/pub/utils/jobutil.py b/genericparser/pub/utils/jobutil.py index c06c72d..abe5227 100644 --- a/genericparser/pub/utils/jobutil.py +++ b/genericparser/pub/utils/jobutil.py @@ -15,6 +15,7 @@ import datetime import logging import uuid import traceback +from functools import reduce from genericparser.pub.database.models import JobStatusModel, JobModel from genericparser.pub.utils import idutil diff --git a/genericparser/pub/utils/restcall.py b/genericparser/pub/utils/restcall.py index a8944b5..c83f69d 100644 --- a/genericparser/pub/utils/restcall.py +++ b/genericparser/pub/utils/restcall.py @@ -15,7 +15,7 @@ import sys import traceback import logging -import urllib2 +import urllib import uuid import httplib2 @@ -65,7 +65,7 @@ def call_req(base_url, user, passwd, auth_type, resource, method, content='', ad ret = [1, "Unable to connect to %s" % full_url, resp_status] continue raise ex - except urllib2.URLError as err: + except urllib.error.URLError as err: ret = [2, str(err), resp_status] except Exception as ex: logger.error(traceback.format_exc()) diff --git a/genericparser/pub/utils/tests.py b/genericparser/pub/utils/tests.py index 7f8a391..8390ce7 100644 --- a/genericparser/pub/utils/tests.py +++ b/genericparser/pub/utils/tests.py @@ -15,11 +15,11 @@ import platform import unittest import mock -import fileutil -import urllib2 -import syscomm -import timeutil -import values +from . import fileutil +import urllib +from . import syscomm +from . import timeutil +from . import values from genericparser.pub.database.models import JobStatusModel, JobModel from genericparser.pub.utils.jobutil import JobUtil @@ -46,7 +46,7 @@ class UtilsTest(unittest.TestCase): fileutil.make_dirs(dirs) fileutil.delete_dirs(dirs) - @mock.patch.object(urllib2, 'urlopen') + @mock.patch.object(urllib.request, 'urlopen') def test_download_file_from_http(self, mock_urlopen): mock_urlopen.return_value = MockReq() fileutil.delete_dirs("abc") diff --git a/genericparser/pub/utils/toscaparsers/basemodel.py b/genericparser/pub/utils/toscaparsers/basemodel.py index 0110df9..643041d 100644 --- a/genericparser/pub/utils/toscaparsers/basemodel.py +++ b/genericparser/pub/utils/toscaparsers/basemodel.py @@ -77,7 +77,7 @@ class BaseInfoModel(object): try: os.remove(file_name) except Exception as e: - logger.error("Failed to parse package, error: %s", e.message) + logger.error("Failed to parse package, error: %s", e.args[0]) def _validate_input_params(self, path, params): valid_params = {} @@ -92,7 +92,7 @@ class BaseInfoModel(object): if params: tmp = self._create_tosca_template(path, None) if isinstance(params, dict): - for key, value in params.items(): + for key, value in list(params.items()): if hasattr(tmp, 'inputs') and len(tmp.inputs) > 0: for input_def in tmp.inputs: if (input_def.name == key): @@ -107,16 +107,16 @@ class BaseInfoModel(object): no_required_paras_check=True, debug_mode=True) except Exception as e: - print e.message + print(e.args[0]) finally: if tosca_tpl is not None and hasattr(tosca_tpl, "temp_dir") and os.path.exists(tosca_tpl.temp_dir): try: shutil.rmtree(tosca_tpl.temp_dir) except Exception as e: - logger.error("Failed to create tosca template, error: %s", e.message) - print "-----------------------------" - print '\n'.join(['%s:%s' % item for item in tosca_tpl.__dict__.items()]) - print "-----------------------------" + logger.error("Failed to create tosca template, error: %s", e.args[0]) + print("-----------------------------") + print('\n'.join(['%s:%s' % item for item in list(tosca_tpl.__dict__.items())])) + print("-----------------------------") return tosca_tpl def _check_download_file(self, path): @@ -130,7 +130,7 @@ class BaseInfoModel(object): path = path.encode("utf-8") tmps = str.split(path, '/') localFileName = tmps[len(tmps) - 1] - urllib.urlretrieve(path, localFileName) + urllib.request.urlretrieve(path, localFileName) return localFileName def downloadFileFromFtpServer(self, path): @@ -222,7 +222,7 @@ class BaseInfoModel(object): def buildProperties(self, nodeTemplate, parsed_params): properties = {} isMappingParams = parsed_params and len(parsed_params) > 0 - for k, item in nodeTemplate.get_properties().items(): + for k, item in list(nodeTemplate.get_properties().items()): properties[k] = item.value if isinstance(item.value, GetInput): if item.value.result() and isMappingParams: @@ -232,7 +232,7 @@ class BaseInfoModel(object): 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(): + for k, item in list(nodeTemplate.entity_tpl[ATTRIBUTES].items()): properties[k] = str(item) return properties @@ -241,7 +241,7 @@ class BaseInfoModel(object): properties = nodeTemplate.get_properties() _properties = {} if isinstance(properties, dict): - for name, prop in properties.items(): + for name, prop in list(properties.items()): if isinstance(prop, Property): if isinstance(prop.value, Function): if isinstance(prop.value, Concat): # support one layer inner function. @@ -251,7 +251,7 @@ class BaseInfoModel(object): value_str += arg elif isinstance(arg, dict): raw_func = {} - for k, v in arg.items(): + for k, v in list(arg.items()): func_args = [] func_args.append(v) raw_func[k] = func_args @@ -282,7 +282,7 @@ class BaseInfoModel(object): value_str += arg elif isinstance(arg, dict): raw_func = {} - for k, v in arg.items(): + for k, v in list(arg.items()): func_args = [] func_args.append(v) raw_func[k] = func_args @@ -306,7 +306,7 @@ class BaseInfoModel(object): def verify_properties(self, props, inputs, parsed_params): ret_props = {} if (props and len(props) > 0): - for key, value in props.items(): + for key, value in list(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); @@ -323,7 +323,7 @@ class BaseInfoModel(object): def build_requirements(self, node_template): rets = [] for req in node_template.requirements: - for req_name, req_value in req.items(): + for req_name, req_value in list(req.items()): if (isinstance(req_value, dict)): if ('node' in req_value and req_value['node'] not in node_template.templates): continue # No target requirement for aria parser, not add to result. @@ -385,7 +385,7 @@ class BaseInfoModel(object): requirements = [] if REQUIREMENTS in node: for item in node[REQUIREMENTS]: - for key, value in item.items(): + for key, value in list(item.items()): if key == requirementName: requirements.append(value) return requirements @@ -439,7 +439,7 @@ class BaseInfoModel(object): rets = [] if ARTIFACTS in node and len(node[ARTIFACTS]) > 0: artifacts = node[ARTIFACTS] - for name, value in artifacts.items(): + for name, value in list(artifacts.items()): ret = {} ret['artifact_name'] = name ret['file'] = value @@ -491,7 +491,7 @@ class BaseInfoModel(object): for type_require in type_requires: type_require_set.update(type_require) for requirement in node.requirements: - for k in requirement.keys(): + for k in list(requirement.keys()): if type_require_set[k].get('relationship', None) in relations[0] or type_require_set[k].get('capability', None) in relations[0]: if isinstance(requirement[k], dict): next_node = requirement[k].get('node', None) diff --git a/genericparser/pub/utils/toscaparsers/graph.py b/genericparser/pub/utils/toscaparsers/graph.py index 6d38d12..0af2a14 100644 --- a/genericparser/pub/utils/toscaparsers/graph.py +++ b/genericparser/pub/utils/toscaparsers/graph.py @@ -21,7 +21,7 @@ class Graph(object): def __init__(self, graph_dict=None): self.graph = OrderedDict() if graph_dict: - for node, dep_nodes in graph_dict.iteritems(): + for node, dep_nodes in list(graph_dict.items()): self.add_node(node, dep_nodes) def add_node(self, node, dep_nodes): @@ -67,7 +67,7 @@ class Graph(object): def to_dict(self): dict = {} - for node, dependents in self.graph.iteritems(): + for node, dependents in self.graph.items(): dict[node] = [] for dep in dependents: dict[node].append(dep) diff --git a/genericparser/pub/utils/toscaparsers/nsdmodel.py b/genericparser/pub/utils/toscaparsers/nsdmodel.py index fe522a7..9cc706f 100644 --- a/genericparser/pub/utils/toscaparsers/nsdmodel.py +++ b/genericparser/pub/utils/toscaparsers/nsdmodel.py @@ -60,7 +60,7 @@ class EtsiNsdInfoModel(BaseInfoModel): self.metadata = self.buildMetadata(tosca) self.ns = self._build_ns(tosca) self.inputs = self.buildInputs(tosca) - nodeTemplates = map(functools.partial(self.buildNode, tosca=tosca), tosca.nodetemplates) + nodeTemplates = list(map(functools.partial(self.buildNode, tosca=tosca), tosca.nodetemplates)) types = tosca.topology_template.custom_defs self.basepath = self.get_base_path(tosca) self.vnfs = self._get_all_vnf(nodeTemplates, types) @@ -126,7 +126,7 @@ class EtsiNsdInfoModel(BaseInfoModel): forwarderList = [] if 'requirements' in node: for item in node['requirements']: - for key, value in item.items(): + for key, value in list(item.items()): if key == 'forwarder': tmpnode = self.get_node_by_req(node_templates, value) type = 'pnf' if self.isNodeTypeX(tmpnode, node_types, NS_PNF_TYPE) else 'vnf' @@ -161,7 +161,7 @@ class EtsiNsdInfoModel(BaseInfoModel): def _get_external_cps(self, subs_mappings): external_cps = [] if 'requirements' in subs_mappings: - for key, value in subs_mappings['requirements'].items(): + for key, value in list(subs_mappings['requirements'].items()): if isinstance(value, list) and len(value) > 0: external_cps.append({"key_name": key, "cpd_id": value[0]}) else: @@ -171,7 +171,7 @@ class EtsiNsdInfoModel(BaseInfoModel): def _get_forward_cps(self, subs_mappings): forward_cps = [] if 'capabilities' in subs_mappings: - for key, value in subs_mappings['capabilities'].items(): + for key, value in list(subs_mappings['capabilities'].items()): if isinstance(value, list) and len(value) > 0: forward_cps.append({"key_name": key, "cpd_id": value[0]}) else: @@ -194,7 +194,7 @@ class EtsiNsdInfoModel(BaseInfoModel): rets = [] if 'requirements' in node and (self.isNodeTypeX(node, node_types, NS_TYPE) or self.isNodeTypeX(node, node_types, NS_VNF_TYPE)): for item in node['requirements']: - for key, value in item.items(): + for key, value in list(item.items()): rets.append({"key_name": key, "vl_id": self.get_requirement_node_name(value)}) return rets diff --git a/genericparser/pub/utils/toscaparsers/pnfmodel.py b/genericparser/pub/utils/toscaparsers/pnfmodel.py index 0f5445f..546861b 100644 --- a/genericparser/pub/utils/toscaparsers/pnfmodel.py +++ b/genericparser/pub/utils/toscaparsers/pnfmodel.py @@ -37,7 +37,7 @@ class PnfdInfoModel(BaseInfoModel): pnf_substitution_mappings = tosca.tpl['topology_template'].get('substitution_mappings', None) if pnf_substitution_mappings: self.pnf['type'] = pnf_substitution_mappings['node_type'] - self.pnf['properties'] = pnf_substitution_mappings['properties'] + self.pnf['properties'] = pnf_substitution_mappings.get('properties', {}) def get_all_cp(self, nodeTemplates): self.pnf['ExtPorts'] = [] diff --git a/genericparser/pub/utils/toscaparsers/sdmodel.py b/genericparser/pub/utils/toscaparsers/sdmodel.py index 8cca07e..7635ab3 100644 --- a/genericparser/pub/utils/toscaparsers/sdmodel.py +++ b/genericparser/pub/utils/toscaparsers/sdmodel.py @@ -64,14 +64,14 @@ class SdInfoModel(BaseInfoModel): def get_child_input_repeat(self, complex_input, entry_schema, input): custom_defs = input.custom_defs properties = custom_defs[entry_schema]['properties'] - for key, value in properties.iteritems(): + for key, value in properties.items(): if value['type'].__eq__('list'): child_complex_input = [] child_entry_schema = self.get_entry_schema(value['entry_schema']) self.get_child_input_repeat(child_complex_input, child_entry_schema, input) complex_input.append({key: child_complex_input}) else: - if 'description' in value.keys(): + if 'description' in list(value.keys()): simple_input = { key: "", "type": value['type'], @@ -88,6 +88,6 @@ class SdInfoModel(BaseInfoModel): def get_entry_schema(self, entry_schema): if isinstance(entry_schema, dict): - if 'type' in entry_schema.keys(): + if 'type' in list(entry_schema.keys()): entry_schema = entry_schema['type'] return entry_schema diff --git a/genericparser/pub/utils/toscaparsers/servicemodel.py b/genericparser/pub/utils/toscaparsers/servicemodel.py index 069d402..6321e04 100644 --- a/genericparser/pub/utils/toscaparsers/servicemodel.py +++ b/genericparser/pub/utils/toscaparsers/servicemodel.py @@ -54,7 +54,7 @@ class SdcServiceModel(BaseInfoModel): self.ns = self._build_ns(tosca) self.inputs = self.buildInputs(tosca) if hasattr(tosca, 'nodetemplates'): - nodeTemplates = map(functools.partial(self.buildNode, tosca=tosca), tosca.nodetemplates) + nodeTemplates = list(map(functools.partial(self.buildNode, tosca=tosca), tosca.nodetemplates)) types = tosca.topology_template.custom_defs self.basepath = self.get_base_path(tosca) self.vnfs = self._get_all_vnf(nodeTemplates, types) @@ -166,7 +166,7 @@ class SdcServiceModel(BaseInfoModel): rets = [] if 'requirements' in node and self.isNodeTypeX(node, node_types, VF_TYPE): for item in node['requirements']: - for key, value in item.items(): + for key, value in list(item.items()): rets.append({"key_name": key, "vl_id": self.get_requirement_node_name(value)}) return rets diff --git a/genericparser/pub/utils/toscaparsers/vnfdmodel.py b/genericparser/pub/utils/toscaparsers/vnfdmodel.py index 95ae2c1..2e48b4d 100644 --- a/genericparser/pub/utils/toscaparsers/vnfdmodel.py +++ b/genericparser/pub/utils/toscaparsers/vnfdmodel.py @@ -34,7 +34,7 @@ class EtsiVnfdInfoModel(BaseInfoModel): def parseModel(self, tosca): self.metadata = self.buildMetadata(tosca) self.inputs = self.buildInputs(tosca) - nodeTemplates = map(functools.partial(self.buildNode, tosca=tosca), tosca.nodetemplates) + nodeTemplates = list(map(functools.partial(self.buildNode, tosca=tosca), tosca.nodetemplates)) self.basepath = self.get_base_path(tosca) node_types = tosca.topology_template.custom_defs sol_version = self.metadata.get("VNFD_SCHEMA_VERSION", VNFD_SCHEMA_VERSION_DEFAULT) if isinstance(self.metadata, dict) else VNFD_SCHEMA_VERSION_DEFAULT diff --git a/genericparser/pub/utils/toscaparsers/vnfdparser/vnfd_sol_251.py b/genericparser/pub/utils/toscaparsers/vnfdparser/vnfd_sol_251.py index 6ad26e8..d0365a7 100644 --- a/genericparser/pub/utils/toscaparsers/vnfdparser/vnfd_sol_251.py +++ b/genericparser/pub/utils/toscaparsers/vnfdparser/vnfd_sol_251.py @@ -33,7 +33,7 @@ class VnfdSOL251(): properties = vnf.get("properties", {}) metadata = vnf.get("metadata", {}) - for key, value in properties.items(): + for key, value in list(properties.items()): if isinstance(value, dict): if value["type"] == "string": properties[key] = value.get("default", "") @@ -139,19 +139,17 @@ class VnfdSOL251(): if isinstance(inject_files, list): for inject_file in inject_files: source_path = os.path.join(self.model.basepath, inject_file['source_path']) - with open(source_path, "rb") as f: + with open(source_path, "rt") as f: source_data = f.read() - source_data_base64 = source_data.encode("base64") - inject_file["source_data_base64"] = source_data_base64 + inject_file["source_data_base64"] = source_data if isinstance(inject_files, dict): source_path = os.path.join(self.model.basepath, inject_files['source_path']) - with open(source_path, "rb") as f: + with open(source_path, "rt") as f: source_data = f.read() - source_data_base64 = source_data.encode("base64") - inject_files["source_data_base64"] = source_data_base64 + inject_files["source_data_base64"] = source_data virtual_storages = self.model.getRequirementByName(node, 'virtual_storage') - ret['virtual_storages'] = map(functools.partial(self._trans_virtual_storage), virtual_storages) - ret['dependencies'] = map(lambda x: self.model.get_requirement_node_name(x), self.model.getNodeDependencys(node)) + ret['virtual_storages'] = list(map(functools.partial(self._trans_virtual_storage), virtual_storages)) + ret['dependencies'] = [self.model.get_requirement_node_name(x) for x in self.model.getNodeDependencys(node)] virtual_compute = self.model.getCapabilityByName(node, 'virtual_compute') if virtual_compute is not None and 'properties' in virtual_compute: ret['virtual_compute'] = virtual_compute['properties'] @@ -194,14 +192,14 @@ class VnfdSOL251(): return vl_ids def _get_virtal_binding_cp_ids(self, node, nodeTemplates): - return map(lambda x: x['name'], self._get_virtal_binding_cps(node, nodeTemplates)) + return [x['name'] for x in self._get_virtal_binding_cps(node, nodeTemplates)] def _get_virtal_binding_cps(self, node, nodeTemplates): cps = [] for tmpnode in nodeTemplates: if 'requirements' in tmpnode: for item in tmpnode['requirements']: - for key, value in item.items(): + for key, value in list(item.items()): if key.upper().startswith('VIRTUAL_BINDING'): req_node_name = self.model.get_requirement_node_name(value) if req_node_name is not None and req_node_name == node['name']: @@ -209,19 +207,19 @@ class VnfdSOL251(): return cps def _get_node_vdu_id(self, node): - vdu_ids = map(lambda x: self.model.get_requirement_node_name(x), self.model.getRequirementByName(node, 'virtual_binding')) + vdu_ids = [self.model.get_requirement_node_name(x) for x in self.model.getRequirementByName(node, 'virtual_binding')] if len(vdu_ids) > 0: return vdu_ids[0] return "" def _get_node_vl_id(self, node): - vl_ids = map(lambda x: self.model.get_requirement_node_name(x), self.model.getRequirementByName(node, 'virtual_link')) + vl_ids = [self.model.get_requirement_node_name(x) for x in self.model.getRequirementByName(node, 'virtual_link')] if len(vl_ids) > 0: return vl_ids[0] return "" def _buil_cp_vls(self, node): - return map(lambda x: self._build_cp_vl(x), self.model.getRequirementByName(node, 'virtual_link')) + return [self._build_cp_vl(x) for x in self.model.getRequirementByName(node, 'virtual_link')] def _build_cp_vl(self, req): cp_vl = {} @@ -230,7 +228,7 @@ class VnfdSOL251(): if relationship is not None: properties = self.model.get_prop_from_obj(relationship, 'properties') if properties is not None and isinstance(properties, dict): - for key, value in properties.items(): + for key, value in list(properties.items()): cp_vl[key] = value return cp_vl @@ -238,14 +236,14 @@ class VnfdSOL251(): external_cps = [] if vnf_requirements: if isinstance(vnf_requirements, dict): - for key, value in vnf_requirements.items(): + for key, value in list(vnf_requirements.items()): if isinstance(value, list) and len(value) > 0: external_cps.append({"key_name": key, "cpd_id": value[0]}) else: external_cps.append({"key_name": key, "cpd_id": value}) elif isinstance(vnf_requirements, list): for vnf_requirement in vnf_requirements: - for key, value in vnf_requirement.items(): + for key, value in list(vnf_requirement.items()): if isinstance(value, list) and len(value) > 0: external_cps.append({"key_name": key, "cpd_id": value[0]}) else: @@ -255,7 +253,7 @@ class VnfdSOL251(): def _get_forward_cps(self, vnf_capabilities): forward_cps = [] if vnf_capabilities: - for key, value in vnf_capabilities.items(): + for key, value in list(vnf_capabilities.items()): if isinstance(value, list) and len(value) > 0: forward_cps.append({"key_name": key, "cpd_id": value[0]}) else: diff --git a/genericparser/pub/utils/toscaparsers/vnfdparser/vnfd_sol_base.py b/genericparser/pub/utils/toscaparsers/vnfdparser/vnfd_sol_base.py index 89ddc84..cc941b2 100644 --- a/genericparser/pub/utils/toscaparsers/vnfdparser/vnfd_sol_base.py +++ b/genericparser/pub/utils/toscaparsers/vnfdparser/vnfd_sol_base.py @@ -118,19 +118,17 @@ class VnfdSOLBase(): if isinstance(inject_files, list): for inject_file in inject_files: source_path = os.path.join(self.model.basepath, inject_file['source_path']) - with open(source_path, "rb") as f: + with open(source_path, "rt") as f: source_data = f.read() - source_data_base64 = source_data.encode("base64") - inject_file["source_data_base64"] = source_data_base64 + inject_file["source_data_base64"] = source_data if isinstance(inject_files, dict): source_path = os.path.join(self.model.basepath, inject_files['source_path']) - with open(source_path, "rb") as f: + with open(source_path, "rt") as f: source_data = f.read() - source_data_base64 = source_data.encode("base64") - inject_files["source_data_base64"] = source_data_base64 + inject_files["source_data_base64"] = source_data virtual_storages = self.model.getRequirementByName(node, 'virtual_storage') - ret['virtual_storages'] = map(functools.partial(self._trans_virtual_storage), virtual_storages) - ret['dependencies'] = map(lambda x: self.model.get_requirement_node_name(x), self.model.getNodeDependencys(node)) + ret['virtual_storages'] = list(map(functools.partial(self._trans_virtual_storage), virtual_storages)) + ret['dependencies'] = [self.model.get_requirement_node_name(x) for x in self.model.getNodeDependencys(node)] virtual_compute = self.model.getCapabilityByName(node, 'virtual_compute') if virtual_compute is not None and 'properties' in virtual_compute: ret['virtual_compute'] = virtual_compute['properties'] @@ -166,14 +164,14 @@ class VnfdSOLBase(): return vl_ids def _get_virtal_binding_cp_ids(self, node, nodeTemplates): - return map(lambda x: x['name'], self._get_virtal_binding_cps(node, nodeTemplates)) + return [x['name'] for x in self._get_virtal_binding_cps(node, nodeTemplates)] def _get_virtal_binding_cps(self, node, nodeTemplates): cps = [] for tmpnode in nodeTemplates: if 'requirements' in tmpnode: for item in tmpnode['requirements']: - for key, value in item.items(): + for key, value in list(item.items()): if key.upper().startswith('VIRTUAL_BINDING'): req_node_name = self.model.get_requirement_node_name(value) if req_node_name is not None and req_node_name == node['name']: @@ -181,19 +179,19 @@ class VnfdSOLBase(): return cps def _get_node_vdu_id(self, node): - vdu_ids = map(lambda x: self.model.get_requirement_node_name(x), self.model.getRequirementByName(node, 'virtual_binding')) + vdu_ids = [self.model.get_requirement_node_name(x) for x in self.model.getRequirementByName(node, 'virtual_binding')] if len(vdu_ids) > 0: return vdu_ids[0] return "" def _get_node_vl_id(self, node): - vl_ids = map(lambda x: self.model.get_requirement_node_name(x), self.model.getRequirementByName(node, 'virtual_link')) + vl_ids = [self.model.get_requirement_node_name(x) for x in self.model.getRequirementByName(node, 'virtual_link')] if len(vl_ids) > 0: return vl_ids[0] return "" def _buil_cp_vls(self, node): - return map(lambda x: self._build_cp_vl(x), self.model.getRequirementByName(node, 'virtual_link')) + return [self._build_cp_vl(x) for x in self.model.getRequirementByName(node, 'virtual_link')] def _build_cp_vl(self, req): cp_vl = {} @@ -202,7 +200,7 @@ class VnfdSOLBase(): if relationship is not None: properties = self.model.get_prop_from_obj(relationship, 'properties') if properties is not None and isinstance(properties, dict): - for key, value in properties.items(): + for key, value in list(properties.items()): cp_vl[key] = value return cp_vl @@ -210,14 +208,14 @@ class VnfdSOLBase(): external_cps = [] if vnf_requirements: if isinstance(vnf_requirements, dict): - for key, value in vnf_requirements.items(): + for key, value in list(vnf_requirements.items()): if isinstance(value, list) and len(value) > 0: external_cps.append({"key_name": key, "cpd_id": value[0]}) else: external_cps.append({"key_name": key, "cpd_id": value}) elif isinstance(vnf_requirements, list): for vnf_requirement in vnf_requirements: - for key, value in vnf_requirement.items(): + for key, value in list(vnf_requirement.items()): if isinstance(value, list) and len(value) > 0: external_cps.append({"key_name": key, "cpd_id": value[0]}) else: @@ -227,7 +225,7 @@ class VnfdSOLBase(): def _get_forward_cps(self, vnf_capabilities): forward_cps = [] if vnf_capabilities: - for key, value in vnf_capabilities.items(): + for key, value in list(vnf_capabilities.items()): if isinstance(value, list) and len(value) > 0: forward_cps.append({"key_name": key, "cpd_id": value[0]}) else: diff --git a/genericparser/pub/utils/values.py b/genericparser/pub/utils/values.py index 0fd2d1a..d02d544 100644 --- a/genericparser/pub/utils/values.py +++ b/genericparser/pub/utils/values.py @@ -22,3 +22,12 @@ def ignore_case_get(args, key, def_val=""): if old_key.upper() == key.upper(): return args[old_key] return def_val + + +def remove_none_key(data, none_list=None): + none_list = none_list if none_list else [None, '', 'NULL', 'None', [], {}] + if isinstance(data, dict): + data = dict([(k, remove_none_key(v, none_list)) for k, v in list(data.items()) if v not in none_list]) + if isinstance(data, list): + data = [remove_none_key(s, none_list) for s in data if s not in none_list] + return data |