Пример #1
0
    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
Пример #2
0
    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
Пример #3
0
    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
Пример #4
0
    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
Пример #5
0
 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
Пример #6
0
 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
Пример #7
0
    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
Пример #8
0
    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
Пример #9
0
    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
Пример #10
0
    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