def create_descriptor(self, descriptor_name, type_descriptor, new_data, data_type): """Creates a descriptor of a given type from a json or yaml representation Returns the descriptor id or False """ try: # utility = Util() current_data = json.loads(self.data_project) if data_type == 'json': new_descriptor = json.loads(new_data) elif data_type == 'yaml': # utility = Util() yaml_object = yaml.load(new_data) new_descriptor = json.loads(Util.yaml2json(yaml_object)) else: log.debug('Create descriptor: Unknown data type') return False # schema = cls.loadjsonfile("lib/etsi/schemas/"+type_descriptor+".json") reference_schema = self.get_json_schema_by_type(type_descriptor) # validate = Util.validate_json_schema(reference_schema, new_descriptor) validate = False new_descriptor_id = new_descriptor['vnfdId'] if type_descriptor != "nsd" else new_descriptor[ 'nsdIdentifier'] if not type_descriptor in current_data: current_data[type_descriptor] = {} current_data[type_descriptor][new_descriptor_id] = new_descriptor self.data_project = current_data self.validated = validate # TODO(stefano) not clear if this is the validation for the whole project self.update() result = new_descriptor_id except Exception as e: log.exception(e) result = False return result
def create_descriptor(self, descriptor_name, type_descriptor, new_data, data_type): """Creates a descriptor of a given type from a json or yaml representation Returns the descriptor id or False """ try: current_data = json.loads(self.data_project) if data_type == 'json': new_descriptor = json.loads(new_data) elif data_type == 'yaml': yaml_object = yaml.load(new_data) new_descriptor = json.loads(Util.yaml2json(yaml_object)) else: log.debug('Create descriptor: Unknown data type') return False # schema = cls.loadjsonfile("lib/cran/schemas/"+type_descriptor+".json") #reference_schema = self.get_json_schema_by_type(type_descriptor) # validate = Util.validate_json_schema(reference_schema, new_descriptor) validate = False new_descriptor_id = descriptor_name if not type_descriptor in current_data: current_data[type_descriptor] = {} current_data[type_descriptor][new_descriptor_id] = new_descriptor self.data_project = current_data self.validated = validate self.update() result = new_descriptor_id except Exception as e: log.exception(e) result = False return result
def edit_descriptor(self, type_descriptor, descriptor_id, new_data, data_type): try: ##FIXME questa parte va completamente rivista cosi' ha varie lacune #log.info('editing ',+ descriptor_id + ' ' + type_descriptor + ' ' + data_type) current_data = json.loads(self.data_project) new_descriptor = new_data if data_type == 'json': new_descriptor = json.loads(new_data) elif data_type == 'yaml': yaml_object = yaml.load(new_data) new_descriptor = json.loads(Util.yaml2json(yaml_object)) if type_descriptor != 'click' and type_descriptor != 'oshi' and type_descriptor != 'cran': reference_schema = self.get_json_schema_by_type( type_descriptor) Util.validate_json_schema(reference_schema, new_descriptor) current_data[type_descriptor][descriptor_id] = new_descriptor self.data_project = current_data self.update() result = True except Exception as e: log.debug(e) result = False return result
def create_descriptor(self, descriptor_name, type_descriptor, new_data, data_type): """Creates a descriptor of a given type from a json or yaml representation Returns the descriptor id or False """ try: current_data = json.loads(self.data_project) if data_type == 'json': new_descriptor = json.loads(new_data) elif data_type == 'yaml': yaml_object = yaml.load(new_data) new_descriptor = json.loads(Util.yaml2json(yaml_object)) elif data_type == 'click': new_descriptor = new_data elif data_type == 'k8s': new_descriptor = new_data elif data_type == 'resource': new_descriptor = new_data else: log.debug('Create descriptor: Unknown data type') return False validate = False new_descriptor_id = descriptor_name if type_descriptor not in current_data: current_data[type_descriptor] = {} current_data[type_descriptor][new_descriptor_id] = new_descriptor self.data_project = current_data self.validated = validate self.update() result = new_descriptor_id except Exception as e: log.exception(e) result = False return result
def import_kubernetes_from_dir_project(cls, dir_project): result = {} for k8s_filename in glob.glob( os.path.join(dir_project, 'K8S', '*.yaml')): log.info(k8s_filename) yaml_object = Util().loadyamlfile(k8s_filename) json_object = Util.json_loads_byteified( Util.yaml2json(yaml_object)) filename = os.path.splitext(os.path.basename(str(k8s_filename)))[0] result[filename] = json_object return result
def node_info(self, deployment_id, node_id): log.debug("get node info cRAN") log.debug("get node info") url = self.agent['base_url'] + "/deployments/" + str( deployment_id) + "/node/" + str(node_id) r = requests.get(url).json() # WARNING: expect openvim data if 'node_info' in r: splitted = r['node_info'].splitlines(True)[1:] joined = "".join(splitted) r['node_info'] = Util.yaml2json(yaml.load(joined)) return r
def get_descriptor_template(cls, type_descriptor): """Returns a descriptor template for a given descriptor type""" try: # schema = Util.loadjsonfile(PATH_TO_DESCRIPTORS_TEMPLATES+type_descriptor+DESCRIPTOR_TEMPLATE_SUFFIX) # print 'type_descriptor : '+type_descriptor # FixMe bisogna creare un template yaml_object = Util().loadyamlfile( 'toscaparser/extensions/nfv/tests/data/tosca_helloworld_nfv.yaml') toscajson = json.loads(Util.yaml2json(yaml_object)) return toscajson except Exception as e: # log.error('Exception in get descriptor template') #TODO(stefano) add logging print 'Exception in get descriptor template' return False
def get_descriptor_template(cls, type_descriptor): """Returns a descriptor template for a given descriptor type""" try: #schema = Util.loadjsonfile(PATH_TO_DESCRIPTORS_TEMPLATES+type_descriptor+DESCRIPTOR_TEMPLATE_SUFFIX) # print 'type_descriptor : '+type_descriptor #FixMe bisogna creare un template yaml_object = Util().loadyamlfile( 'usecases/TOSCA/One-Server-Three-Networks/YAML/tosca_one_server_three_networks.yaml' ) toscajson = json.loads(Util.yaml2json(yaml_object)) return toscajson except Exception as e: # log.error('Exception in get descriptor template') #TODO(stefano) add logging print 'Exception in get descriptor template' return False
def create_descriptor(self, descriptor_name, type_descriptor, new_data, data_type): """Creates a descriptor of a given type from a json or yaml representation Returns the descriptor id or False """ result = False try: print type_descriptor, data_type current_data = json.loads(self.data_project) if data_type == 'json': new_descriptor = json.loads(new_data) elif data_type == 'yaml': # utility = Util() yaml_object = yaml.load(new_data) new_descriptor = json.loads(Util.yaml2json(yaml_object)) else: print 'Unknown data type' return False if type_descriptor == 'toscayaml': if descriptor_name is None: new_descriptor_id = Util.get_unique_id() else: new_descriptor_id = descriptor_name if not type_descriptor in current_data: current_data[type_descriptor] = {} current_data[type_descriptor][ new_descriptor_id] = new_descriptor self.data_project = current_data #self.validated = validate #TODO(stefano) not clear if this is the validation for the whole project self.update() result = new_descriptor_id else: return False except Exception as e: print 'Exception in create descriptor', e return result
def importprojectfiles(cls, file_dict): """Imports descriptors (extracted from the new project POST) The keys in the dictionary are the file types """ project = {'nsd': {}, 'vnfd': {}, 'click': {}, 'k8s': {}} for desc_type in project: if desc_type in file_dict: files_desc_type = file_dict[desc_type] for file in files_desc_type: if desc_type != 'k8s': project[desc_type][os.path.splitext( file.name)[0]] = json.loads(file.read()) else: yaml_object = Util().loadyamlfile(file) json_object = Util.json_loads_byteified( Util.yaml2json(yaml_object)) filename = os.path.splitext(os.path.basename( str(file)))[0] project[desc_type][filename] = json_object return project