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)
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
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
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)
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