Esempio n. 1
0
 def create_ns(self, context, ns):
     LOG.debug('ns %s', ns)
     ns = ns['ns']
     tenant_id = self._get_tenant_id_for_create(context, ns)
     nsd_id = ns['nsd_id']
     vim_id = ns['vim_id']
     name = ns.get('name')
     ns_id = uuidutils.generate_uuid()
     try:
         with context.session.begin(subtransactions=True):
             nsd_db = self._get_resource(context, NSD, nsd_id)
             ns_db = NS(id=ns_id,
                        tenant_id=tenant_id,
                        name=name,
                        description=nsd_db.description,
                        vnf_ids=None,
                        status=constants.PENDING_CREATE,
                        mgmt_urls=None,
                        nsd_id=nsd_id,
                        vim_id=vim_id,
                        error_reason=None,
                        deleted_at=datetime.min)
             context.session.add(ns_db)
     except DBDuplicateEntry as e:
         raise exceptions.DuplicateEntity(_type="ns", entry=e.columns)
     evt_details = "NS UUID assigned."
     self._cos_db_plg.create_event(
         context,
         res_id=ns_id,
         res_type=constants.RES_TYPE_NS,
         res_state=constants.PENDING_CREATE,
         evt_type=constants.RES_EVT_CREATE,
         tstamp=ns_db[constants.RES_EVT_CREATED_FLD],
         details=evt_details)
     return self._make_ns_dict(ns_db)
Esempio n. 2
0
    def create_vim(self, context, vim):
        self._validate_default_vim(context, vim)
        vim_cred = vim['auth_cred']

        try:
            with context.session.begin(subtransactions=True):
                vim_db = Vim(id=vim.get('id'),
                             type=vim.get('type'),
                             tenant_id=vim.get('tenant_id'),
                             name=vim.get('name'),
                             description=vim.get('description'),
                             placement_attr=vim.get('placement_attr'),
                             is_default=vim.get('is_default'),
                             status=vim.get('status'))
                context.session.add(vim_db)
                vim_auth_db = VimAuth(id=str(uuid.uuid4()),
                                      vim_id=vim.get('id'),
                                      password=vim_cred.pop('password'),
                                      vim_project=vim.get('vim_project'),
                                      auth_url=vim.get('auth_url'),
                                      auth_cred=vim_cred)
                context.session.add(vim_auth_db)
        except DBDuplicateEntry as e:
            raise exceptions.DuplicateEntity(_type="vim", entry=e.columns)
        vim_dict = self._make_vim_dict(vim_db)
        self._cos_db_plg.create_event(context,
                                      res_id=vim_dict['id'],
                                      res_type=constants.RES_TYPE_VIM,
                                      res_state=vim_dict['status'],
                                      evt_type=constants.RES_EVT_CREATE,
                                      tstamp=vim_dict['created_at'])
        return vim_dict
Esempio n. 3
0
    def create_vnfd(self, context, vnfd):
        vnfd = vnfd['vnfd']
        LOG.debug(_('vnfd %s'), vnfd)
        tenant_id = self._get_tenant_id_for_create(context, vnfd)
        service_types = vnfd.get('service_types')
        mgmt_driver = vnfd.get('mgmt_driver')
        template_source = vnfd.get("template_source")

        if (not attributes.is_attr_set(service_types)):
            LOG.debug(_('service types unspecified'))
            raise vnfm.ServiceTypesNotSpecified()

        try:
            with context.session.begin(subtransactions=True):
                vnfd_id = str(uuid.uuid4())
                vnfd_db = VNFD(
                    id=vnfd_id,
                    tenant_id=tenant_id,
                    name=vnfd.get('name'),
                    description=vnfd.get('description'),
                    mgmt_driver=mgmt_driver,
                    template_source=template_source,
                    deleted_at=None)
                context.session.add(vnfd_db)
                for (key, value) in vnfd.get('attributes', {}).items():
                    attribute_db = VNFDAttribute(
                        id=str(uuid.uuid4()),
                        vnfd_id=vnfd_id,
                        key=key,
                        value=value)
                    context.session.add(attribute_db)
                for service_type in (item['service_type']
                                     for item in vnfd['service_types']):
                    service_type_db = ServiceType(
                        id=str(uuid.uuid4()),
                        tenant_id=tenant_id,
                        vnfd_id=vnfd_id,
                        service_type=service_type)
                    context.session.add(service_type_db)
        except DBDuplicateEntry as e:
            raise exceptions.DuplicateEntity(
                _type="vnfd",
                entry=e.columns)
        LOG.debug(_('vnfd_db %(vnfd_db)s %(attributes)s '),
                  {'vnfd_db': vnfd_db,
                   'attributes': vnfd_db.attributes})
        vnfd_dict = self._make_vnfd_dict(vnfd_db)
        LOG.debug(_('vnfd_dict %s'), vnfd_dict)
        self._cos_db_plg.create_event(
            context, res_id=vnfd_dict['id'],
            res_type=constants.RES_TYPE_VNFD,
            res_state=constants.RES_EVT_ONBOARDED,
            evt_type=constants.RES_EVT_CREATE,
            tstamp=vnfd_dict[constants.RES_EVT_CREATED_FLD])
        return vnfd_dict
Esempio n. 4
0
    def _create_vnf_pre(self, context, vnf):
        LOG.debug(_('vnf %s'), vnf)
        tenant_id = self._get_tenant_id_for_create(context, vnf)
        vnfd_id = vnf['vnfd_id']
        name = vnf.get('name')
        vnf_id = str(uuid.uuid4())
        attributes = vnf.get('attributes', {})
        vim_id = vnf.get('vim_id')
        placement_attr = vnf.get('placement_attr', {})

        try:
            with context.session.begin(subtransactions=True):
                vnfd_db = self._get_resource(context, VNFD, vnfd_id)
                vnf_db = VNF(id=vnf_id,
                             tenant_id=tenant_id,
                             name=name,
                             description=vnfd_db.description,
                             instance_id=None,
                             vnfd_id=vnfd_id,
                             vim_id=vim_id,
                             placement_attr=placement_attr,
                             status=constants.PENDING_CREATE,
                             error_reason=None,
                             server_id=cfg.CONF.uuid)
                context.session.add(vnf_db)
                for key, value in attributes.items():
                    arg = VNFAttribute(id=str(uuid.uuid4()),
                                       vnf_id=vnf_id,
                                       key=key,
                                       value=value)
                    context.session.add(arg)
        except DBDuplicateEntry as e:
            raise exceptions.DuplicateEntity(_type="vnf", entry=e.columns)

        evt_details = "VNF UUID assigned."
        self._cos_db_plg.create_event(
            context,
            res_id=vnf_id,
            res_type=constants.RES_TYPE_VNF,
            res_state=constants.PENDING_CREATE,
            evt_type=constants.RES_EVT_CREATE,
            tstamp=vnf_db[constants.RES_EVT_CREATED_FLD],
            details=evt_details)
        return self._make_vnf_dict(vnf_db)
Esempio n. 5
0
    def create_nsd(self, context, nsd):
        vnfds = nsd['vnfds']
        nsd = nsd['nsd']
        LOG.debug('nsd %s', nsd)
        tenant_id = self._get_tenant_id_for_create(context, nsd)
        template_source = nsd.get('template_source')

        try:
            with context.session.begin(subtransactions=True):
                nsd_id = uuidutils.generate_uuid()
                nsd_db = NSD(id=nsd_id,
                             tenant_id=tenant_id,
                             name=nsd.get('name'),
                             vnfds=vnfds,
                             description=nsd.get('description'),
                             deleted_at=datetime.min,
                             template_source=template_source)
                context.session.add(nsd_db)
                for (key, value) in nsd.get('attributes', {}).items():
                    attribute_db = NSDAttribute(id=uuidutils.generate_uuid(),
                                                nsd_id=nsd_id,
                                                key=key,
                                                value=value)
                    context.session.add(attribute_db)
        except DBDuplicateEntry as e:
            raise exceptions.DuplicateEntity(_type="nsd", entry=e.columns)
        LOG.debug('nsd_db %(nsd_db)s %(attributes)s ', {
            'nsd_db': nsd_db,
            'attributes': nsd_db.attributes
        })
        nsd_dict = self._make_nsd_dict(nsd_db)
        LOG.debug('nsd_dict %s', nsd_dict)
        self._cos_db_plg.create_event(
            context,
            res_id=nsd_dict['id'],
            res_type=constants.RES_TYPE_NSD,
            res_state=constants.RES_EVT_ONBOARDED,
            evt_type=constants.RES_EVT_CREATE,
            tstamp=nsd_dict[constants.RES_EVT_CREATED_FLD])
        return nsd_dict