예제 #1
0
파일: utils.py 프로젝트: hackerenRG/neutron
 def __init__(self, collection, resource, plugin=None):
     # Ensure dashes are always replaced with underscores
     self.collection = collection and collection.replace('-', '_')
     self.resource = resource and resource.replace('-', '_')
     self._resource_info = api_attributes.get_collection_info(
         self.collection)
     self._plugin = plugin
예제 #2
0
파일: utils.py 프로젝트: Jackwwg/neutron
 def __init__(self, collection, resource, plugin=None):
     # Ensure dashes are always replaced with underscores
     self.collection = collection and collection.replace('-', '_')
     self.resource = resource and resource.replace('-', '_')
     self._resource_info = api_attributes.get_collection_info(
         self.collection)
     self._plugin = plugin
     # Controllers for some resources that are not mapped to anything in
     # RESOURCE_ATTRIBUTE_MAP will not have anything in _resource_info
     if self._resource_info:
         self._mandatory_fields = set([field for (field, data) in
                                       self._resource_info.items() if
                                       data.get('required_by_policy')])
     else:
         self._mandatory_fields = set()
예제 #3
0
 def __init__(self, collection, resource, plugin=None):
     # Ensure dashes are always replaced with underscores
     self.collection = collection and collection.replace('-', '_')
     self.resource = resource and resource.replace('-', '_')
     self._resource_info = api_attributes.get_collection_info(
         self.collection)
     self._plugin = plugin
     # Controllers for some resources that are not mapped to anything in
     # RESOURCE_ATTRIBUTE_MAP will not have anything in _resource_info
     if self._resource_info:
         self._mandatory_fields = set([
             field for (field, data) in self._resource_info.items()
             if data.get('required_by_policy')
         ])
     else:
         self._mandatory_fields = set()
 def before(self, state):
     if state.request.method not in ('POST', 'PUT'):
         return
     resource = state.request.context.get('resource')
     collection = state.request.context.get('collection')
     neutron_context = state.request.context['neutron_context']
     is_create = state.request.method == 'POST'
     if not resource:
         return
     # Prepare data to be passed to the plugin from request body
     data = v2_base.Controller.prepare_request_body(
         neutron_context,
         state.request.json,
         is_create,
         resource,
         v2_attributes.get_collection_info(collection),
         allow_bulk=is_create)
     if collection in data:
         state.request.context['resources'] = [item[resource] for item in
                                               data[collection]]
     else:
         state.request.context['resources'] = [data[resource]]
예제 #5
0
    def before(self, state):
        if state.request.method not in ('POST', 'PUT'):
            return
        resource = state.request.context.get('resource')
        collection = state.request.context.get('collection')
        neutron_context = state.request.context['neutron_context']
        is_create = state.request.method == 'POST'
        if not resource:
            return

        try:
            json_data = jsonutils.loads(state.request.body)
        except ValueError:
            LOG.debug("No JSON Data in %(method)s request for %(collection)s",
                      {
                          'method': state.request.method,
                          'collections': collection
                      })
            return
        # Raw data are consumed by member actions such as add_router_interface
        state.request.context['request_data'] = json_data
        if not (resource in json_data or collection in json_data):
            # there is no resource in the request. This can happen when a
            # member action is being processed.
            return
        # Prepare data to be passed to the plugin from request body
        data = v2_base.Controller.prepare_request_body(
            neutron_context,
            json_data,
            is_create,
            resource,
            v2_attributes.get_collection_info(collection),
            allow_bulk=is_create)
        if collection in data:
            state.request.context['resources'] = [
                item[resource] for item in data[collection]
            ]
        else:
            state.request.context['resources'] = [data[resource]]
 def before(self, state):
     if state.request.method not in ('POST', 'PUT'):
         return
     resource = state.request.context.get('resource')
     collection = state.request.context.get('collection')
     neutron_context = state.request.context['neutron_context']
     is_create = state.request.method == 'POST'
     if not resource:
         return
     # Prepare data to be passed to the plugin from request body
     data = v2_base.Controller.prepare_request_body(
         neutron_context,
         state.request.json,
         is_create,
         resource,
         v2_attributes.get_collection_info(collection),
         allow_bulk=is_create)
     if collection in data:
         state.request.context['resources'] = [
             item[resource] for item in data[collection]
         ]
     else:
         state.request.context['resources'] = [data[resource]]
예제 #7
0
    def before(self, state):
        if state.request.method not in ('POST', 'PUT'):
            return
        resource = state.request.context.get('resource')
        collection = state.request.context.get('collection')
        neutron_context = state.request.context['neutron_context']
        is_create = state.request.method == 'POST'
        if not resource:
            return

        try:
            json_data = jsonutils.loads(state.request.body)
        except ValueError:
            LOG.debug("No JSON Data in %(method)s request for %(collection)s",
                      {'method': state.request.method,
                       'collections': collection})
            return
        # Raw data are consumed by member actions such as add_router_interface
        state.request.context['request_data'] = json_data
        if not (resource in json_data or collection in json_data):
            # there is no resource in the request. This can happen when a
            # member action is being processed.
            return
        # Prepare data to be passed to the plugin from request body
        data = v2_base.Controller.prepare_request_body(
            neutron_context,
            json_data,
            is_create,
            resource,
            v2_attributes.get_collection_info(collection),
            allow_bulk=is_create)
        if collection in data:
            state.request.context['resources'] = [item[resource] for item in
                                                  data[collection]]
        else:
            state.request.context['resources'] = [data[resource]]
예제 #8
0
 def test_get_collection_info_missing(self):
     self.assertFalse(attributes.get_collection_info('meh'))
예제 #9
0
 def test_get_collection_info(self):
     attrs = attributes.get_collection_info('ports')
     self._verify_port_attributes(attrs)
예제 #10
0
파일: utils.py 프로젝트: andreitira/neutron
 def resource_info(self):
     if not self._resource_info:
         self._resource_info = api_attributes.get_collection_info(
             self.collection)
     return self._resource_info
예제 #11
0
 def resource_info(self):
     if not self._resource_info:
         self._resource_info = api_attributes.get_collection_info(
             self.collection)
     return self._resource_info
예제 #12
0
 def test_get_collection_info_missing(self):
     self.assertFalse(attributes.get_collection_info('meh'))
예제 #13
0
 def test_get_collection_info(self):
     attrs = attributes.get_collection_info('ports')
     self._verify_port_attributes(attrs)
예제 #14
0
 def __init__(self, collection, resource):
     # Ensure dashes are always replaced with underscores
     self.collection = collection and collection.replace('-', '_')
     self.resource = resource and resource.replace('-', '_')
     self._resource_info = api_attributes.get_collection_info(collection)
     self._plugin = None