def _get_resource(self, context, model, id): try: return self._get_by_id(context, model, id) except orm_exc.NoResultFound: if issubclass(model, DeviceTemplate): raise vnfm.DeviceTemplateNotFound(device_tempalte_id=id) elif issubclass(model, ServiceType): raise vnfm.ServiceTypeNotFound(service_type_id=id) if issubclass(model, Device): raise vnfm.DeviceNotFound(device_id=id) else: raise
def _get_resource(self, context, model, id): try: return self._get_by_id(context, model, id) except orm_exc.NoResultFound: if issubclass(model, VNFD): raise vnfm.VNFDNotFound(vnfd_id=id) elif issubclass(model, ServiceType): raise vnfm.ServiceTypeNotFound(service_type_id=id) if issubclass(model, VNF): raise vnfm.VNFNotFound(vnf_id=id) else: raise
def _request(self, plugin, context, vnf_dict, maintenance, method='put', is_reply=True): client = self._get_openstack_clients(context, vnf_dict) if not self.endpoint: self.endpoint = client.keystone_session.get_endpoint( service_type='maintenance', region_name=client.region_name) if not self.endpoint: raise vnfm.ServiceTypeNotFound(service_type_id='maintenance') if 'reply_url' in maintenance: url = maintenance['reply_url'] elif 'url' in maintenance: url = "%s/%s" % (self.endpoint.rstrip('/'), maintenance['url'].strip('/')) else: return def create_headers(): return { 'X-Auth-Token': client.keystone_session.get_token(), 'Content-Type': 'application/json', 'Accept': 'application/json' } request_body = {} request_body['headers'] = create_headers() state = constants.ACK if vnf_dict['status'] == constants.ACTIVE \ else constants.NACK if method == 'put': data = maintenance.get('data', {}) if is_reply: data['session_id'] = maintenance.get('session_id', '') data['state'] = "%s_%s" % (state, maintenance['state']) request_body['data'] = jsonutils.dump_as_bytes(data) def request_wait(): retries = self.REQUEST_RETRIES while retries > 0: response = getattr(requests, method)(url, **request_body) if response.status_code == 200: break else: retries -= 1 time.sleep(self.REQUEST_RETRY_WAIT) plugin.spawn_n(request_wait)