Пример #1
0
    def _items(self, request, tenant_id, network_id, port_details=False):
        """ Returns a list of ports.
        Ideally, the plugin would perform filtering,
        returning only the items matching filters specified
        on the request query string.
        However, plugins are not required to support filtering.
        In this case, this function will filter the complete list
        of ports returned by the plugin
        """
        filter_opts = {}
        filter_opts.update(request.GET)
        port_list = self._plugin.get_all_ports(tenant_id, network_id, filter_opts=filter_opts)

        builder = ports_view.get_view_builder(request, self.version)

        # Load extra data for ports if required.
        # This can be inefficient.
        # TODO(salvatore-orlando): the fix for bug #834012 should deal with it
        if port_details:
            port_list_detail = [
                self._plugin.get_port_details(tenant_id, network_id, port["port-id"]) for port in port_list
            ]
            port_list = port_list_detail

        # Perform manual filtering if not supported by plugin
        # Inefficient, API-layer filtering
        # will be performed only if the plugin does
        # not support filtering
        # NOTE(salvatore-orlando): the plugin is supposed to leave only filters
        # it does not implement in filter_opts
        port_list = filters.filter_ports(port_list, self._plugin, tenant_id, network_id, filter_opts)

        result = [builder.build(port, port_details)["port"] for port in port_list]
        return dict(ports=result)
Пример #2
0
 def _item(self, request, tenant_id, network_id, port_id,
           att_details=False):
     """ Returns a specific port. """
     port = self._plugin.get_port_details(tenant_id, network_id, port_id)
     builder = ports_view.get_view_builder(request)
     result = builder.build(
         port, port_details=True, att_details=att_details)['port']
     return dict(port=result)
Пример #3
0
    def create(self, request, tenant_id, network_id, body=None):
        """ Creates a new port for a given network
            The request body is optional for a port object.

        """
        body = self._prepare_request_body(body, self._port_ops_param_list)
        port = self._plugin.create_port(tenant_id, network_id, body["port"]["state"], **body)
        builder = ports_view.get_view_builder(request, self.version)
        result = builder.build(port)["port"]
        return dict(port=result)
Пример #4
0
    def create(self, request, tenant_id, network_id, body=None):
        """ Creates a new port for a given network
            The request body is optional for a port object.

        """
        body = self._prepare_request_body(body, self._port_ops_param_list)
        port = self._plugin.create_port(tenant_id, network_id,
                                        body['port']['state'], **body)
        builder = ports_view.get_view_builder(request, self.version)
        result = builder.build(port)['port']
        return dict(port=result)
Пример #5
0
 def _item(self,
           request,
           tenant_id,
           network_id,
           port_id,
           att_details=False):
     """ Returns a specific port. """
     port = self._plugin.get_port_details(tenant_id, network_id, port_id)
     builder = ports_view.get_view_builder(request, self.version)
     result = builder.build(port,
                            port_details=True,
                            att_details=att_details)['port']
     return dict(port=result)
Пример #6
0
 def create(self, request, tenant_id):
     """ Creates a new multiport for a given tenant """
     try:
         req_params = \
             self._parse_request_params(request,
                                        self._multiport_ops_param_list)
     except exc.HTTPError as exp:
         return faults.Fault(exp)
     multiports = self._plugin.\
                    create_multiport(tenant_id,
                                       req_params['net_id_list'],
                                       req_params['status'],
                                       req_params['ports_desc'])
     builder = port_view.get_view_builder(request)
     result = [builder.build(port)['port'] for port in multiports]
     return dict(ports=result)
Пример #7
0
    def _items(self, request, tenant_id, network_id,
               port_details=False):
        """ Returns a list of ports. """
        port_list = self._plugin.get_all_ports(tenant_id, network_id)
        builder = ports_view.get_view_builder(request, self.version)

        # Load extra data for ports if required.
        if port_details:
            port_list_detail = \
                [self._plugin.get_port_details(
                            tenant_id, network_id, port['port-id'])
                  for port in port_list]
            port_list = port_list_detail

        result = [builder.build(port, port_details)['port']
                  for port in port_list]
        return dict(ports=result)
Пример #8
0
    def _items(self, request, tenant_id, network_id, port_details=False):
        """ Returns a list of ports. """
        port_list = self._plugin.get_all_ports(tenant_id, network_id)
        builder = ports_view.get_view_builder(request, self.version)

        # Load extra data for ports if required.
        if port_details:
            port_list_detail = \
                [self._plugin.get_port_details(
                            tenant_id, network_id, port['port-id'])
                  for port in port_list]
            port_list = port_list_detail

        result = [
            builder.build(port, port_details)['port'] for port in port_list
        ]
        return dict(ports=result)
Пример #9
0
 def create(self, request, tenant_id):
     """ Creates a new multiport for a given tenant """
     try:
         req_params = \
             self._parse_request_params(request,
                                        self._multiport_ops_param_list)
     except exc.HTTPError as exp:
         return faults.Fault(exp)
     multiports = self._plugin.\
                    create_multiport(tenant_id,
                                       req_params['net_id_list'],
                                       req_params['status'],
                                       req_params['ports_desc'])
     builder = port_view.get_view_builder(request)
     result = [builder.build(port)['port']
                   for port in multiports]
     return dict(ports=result)
Пример #10
0
    def create(self, request, tenant_id):
        """ Creates a new multiport for a given tenant """
        try:
            body = self._deserialize(request.body, request.get_content_type())
            req_body = self._prepare_request_body(
                body, self._multiport_ops_param_list)
            req_params = req_body[self._resource_name]

        except exc.HTTPError as exp:
            return faults.Fault(exp)
        multiports = self._plugin.create_multiport(tenant_id,
                                                   req_params['net_id_list'],
                                                   req_params['status'],
                                                   req_params['ports_desc'])
        builder = port_view.get_view_builder(request, self.version)
        result = [builder.build(port)['port'] for port in multiports]
        return dict(ports=result)
Пример #11
0
    def create(self, request, tenant_id):
        """ Creates a new multiport for a given tenant """
        try:
            body = self._deserialize(request.body, request.get_content_type())
            req_body = self._prepare_request_body(
                body, self._multiport_ops_param_list)
            req_params = req_body[self._resource_name]

        except exc.HTTPError as exp:
            return faults.Fault(exp)
        multiports = self._plugin.create_multiport(tenant_id,
                                                   req_params['net_id_list'],
                                                   req_params['status'],
                                                   req_params['ports_desc'])
        builder = port_view.get_view_builder(request, self.version)
        result = [builder.build(port)['port'] for port in multiports]
        return dict(ports=result)
Пример #12
0
    def _items(self, request, tenant_id, network_id,
               port_details=False):
        """ Returns a list of ports. """
        try:
            port_list = self._plugin.get_all_ports(tenant_id, network_id)
            builder = ports_view.get_view_builder(request)

            # Load extra data for ports if required.
            if port_details:
                port_list_detail = \
                    [self._plugin.get_port_details(
                                tenant_id, network_id, port['port-id'])
                      for port in port_list]
                port_list = port_list_detail

            result = [builder.build(port, port_details)['port']
                      for port in port_list]
            return dict(ports=result)
        except exception.NetworkNotFound as e:
            return faults.Fault(faults.NetworkNotFound(e))
Пример #13
0
    def _items(self, request, tenant_id, network_id, port_details=False):
        """ Returns a list of ports.
        Ideally, the plugin would perform filtering,
        returning only the items matching filters specified
        on the request query string.
        However, plugins are not required to support filtering.
        In this case, this function will filter the complete list
        of ports returned by the plugin
        """
        filter_opts = {}
        filter_opts.update(request.GET)
        port_list = self._plugin.get_all_ports(tenant_id,
                                               network_id,
                                               filter_opts=filter_opts)

        builder = ports_view.get_view_builder(request, self.version)

        # Load extra data for ports if required.
        # This can be inefficient.
        # TODO(salvatore-orlando): the fix for bug #834012 should deal with it
        if port_details:
            port_list_detail = [
                self._plugin.get_port_details(tenant_id, network_id,
                                              port['port-id'])
                for port in port_list
            ]
            port_list = port_list_detail

        # Perform manual filtering if not supported by plugin
        # Inefficient, API-layer filtering
        # will be performed only if the plugin does
        # not support filtering
        # NOTE(salvatore-orlando): the plugin is supposed to leave only filters
        # it does not implement in filter_opts
        port_list = filters.filter_ports(port_list, self._plugin, tenant_id,
                                         network_id, filter_opts)

        result = [
            builder.build(port, port_details)['port'] for port in port_list
        ]
        return dict(ports=result)
Пример #14
0
 def create(self, request, tenant_id, network_id):
     """ Creates a new port for a given network """
     try:
         request_params = \
             self._parse_request_params(request, self._port_ops_param_list)
     except exc.HTTPError as e:
         return faults.Fault(e)
     try:
         port = self._plugin.create_port(tenant_id, network_id,
                                         request_params['state'],
                                         **request_params)
         builder = ports_view.get_view_builder(request)
         result = builder.build(port)['port']
         # Wsgi middleware allows us to build the response
         # before returning the call.
         # This will allow us to return a 200 status code.  NOTE: in v1.1
         # we will be returning a 202 status code.
         return self._build_response(request, dict(port=result), 200)
     except exception.NetworkNotFound as e:
         return faults.Fault(faults.NetworkNotFound(e))
     except exception.StateInvalid as e:
         return faults.Fault(faults.RequestedStateInvalid(e))