Exemplo n.º 1
0
 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
Exemplo n.º 2
0
 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
Exemplo n.º 3
0
    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)