summaryrefslogtreecommitdiff
path: root/ironic/api/controllers/v1/volume_connector.py
diff options
context:
space:
mode:
Diffstat (limited to 'ironic/api/controllers/v1/volume_connector.py')
-rw-r--r--ironic/api/controllers/v1/volume_connector.py48
1 files changed, 33 insertions, 15 deletions
diff --git a/ironic/api/controllers/v1/volume_connector.py b/ironic/api/controllers/v1/volume_connector.py
index b3d342199..ede708f0a 100644
--- a/ironic/api/controllers/v1/volume_connector.py
+++ b/ironic/api/controllers/v1/volume_connector.py
@@ -117,35 +117,50 @@ class VolumeConnector(base.APIBase):
wtypes.Unset)
@staticmethod
- def _convert_with_links(connector, url, fields=None):
- # NOTE(lucasagomes): Since we are able to return a specified set of
- # fields the "uuid" can be unset, so we need to save it in another
- # variable to use when building the links
- connector_uuid = connector.uuid
- if fields is not None:
- connector.unset_fields_except(fields)
+ def _convert_with_links(connector, url):
- # never expose the node_id attribute
- connector.node_id = wtypes.Unset
connector.links = [link.Link.make_link('self', url,
'volume/connectors',
- connector_uuid),
+ connector.uuid),
link.Link.make_link('bookmark', url,
'volume/connectors',
- connector_uuid,
+ connector.uuid,
bookmark=True)
]
return connector
@classmethod
- def convert_with_links(cls, rpc_connector, fields=None):
+ def convert_with_links(cls, rpc_connector, fields=None, sanitize=True):
connector = VolumeConnector(**rpc_connector.as_dict())
if fields is not None:
api_utils.check_for_invalid_fields(fields, connector.as_dict())
- return cls._convert_with_links(connector, pecan.request.public_url,
- fields=fields)
+ connector = cls._convert_with_links(connector,
+ pecan.request.public_url)
+
+ if not sanitize:
+ return connector
+
+ connector.sanitize(fields)
+
+ return connector
+
+ def sanitize(self, fields=None):
+ """Removes sensitive and unrequested data.
+
+ Will only keep the fields specified in the ``fields`` parameter.
+
+ :param fields:
+ list of fields to preserve, or ``None`` to preserve them all
+ :type fields: list of str
+ """
+
+ if fields is not None:
+ self.unset_fields_except(fields)
+
+ # never expose the node_id attribute
+ self.node_id = wtypes.Unset
@classmethod
def sample(cls, expand=True):
@@ -181,11 +196,14 @@ class VolumeConnectorCollection(collection.Collection):
detail=None, **kwargs):
collection = VolumeConnectorCollection()
collection.connectors = [
- VolumeConnector.convert_with_links(p, fields=fields)
+ VolumeConnector.convert_with_links(p, fields=fields,
+ sanitize=False)
for p in rpc_connectors]
if detail:
kwargs['detail'] = detail
collection.next = collection.get_next(limit, url=url, **kwargs)
+ for connector in collection.connectors:
+ connector.sanitize(fields)
return collection
@classmethod