summaryrefslogtreecommitdiff
path: root/ironic
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2021-05-05 13:12:00 +0000
committerGerrit Code Review <review@openstack.org>2021-05-05 13:12:00 +0000
commit462969c68f2978b4b250ba99ef491ef6858437fe (patch)
tree3c1f6132acb60cac5f436a5d9861d2b35b13c735 /ironic
parentb2449bf2c4de32b35fc6f62dcbb9d8820e2567b1 (diff)
parentd97f0fb5ec366adf384966e65f4779149ed4c283 (diff)
downloadironic-462969c68f2978b4b250ba99ef491ef6858437fe.tar.gz
Merge "Do not mask configdrive when executing in-band deploy steps"
Diffstat (limited to 'ironic')
-rw-r--r--ironic/drivers/modules/agent_client.py2
-rw-r--r--ironic/objects/node.py10
-rw-r--r--ironic/tests/unit/objects/test_node.py12
3 files changed, 20 insertions, 4 deletions
diff --git a/ironic/drivers/modules/agent_client.py b/ironic/drivers/modules/agent_client.py
index 5ca93a3b1..5f3b2172f 100644
--- a/ironic/drivers/modules/agent_client.py
+++ b/ironic/drivers/modules/agent_client.py
@@ -561,7 +561,7 @@ class AgentClient(object):
"""
params = {
'step': step,
- 'node': node.as_dict(secure=True),
+ 'node': node.as_dict(secure=True, mask_configdrive=False),
'ports': [port.as_dict() for port in ports],
'deploy_version': node.driver_internal_info.get(
'hardware_manager_version')
diff --git a/ironic/objects/node.py b/ironic/objects/node.py
index 013d1b50d..c8f79f286 100644
--- a/ironic/objects/node.py
+++ b/ironic/objects/node.py
@@ -168,13 +168,17 @@ class Node(base.IronicObject, object_base.VersionedObjectDictCompat):
'network_data': object_fields.FlexibleDictField(nullable=True),
}
- def as_dict(self, secure=False):
+ def as_dict(self, secure=False, mask_configdrive=True):
d = super(Node, self).as_dict()
if secure:
d['driver_info'] = strutils.mask_dict_password(
d.get('driver_info', {}), "******")
- d['instance_info'] = strutils.mask_dict_password(
- d.get('instance_info', {}), "******")
+ iinfo = d.pop('instance_info', {})
+ if not mask_configdrive:
+ configdrive = iinfo.pop('configdrive', None)
+ d['instance_info'] = strutils.mask_dict_password(iinfo, "******")
+ if not mask_configdrive and configdrive:
+ d['instance_info']['configdrive'] = configdrive
d['driver_internal_info'] = strutils.mask_dict_password(
d.get('driver_internal_info', {}), "******")
return d
diff --git a/ironic/tests/unit/objects/test_node.py b/ironic/tests/unit/objects/test_node.py
index dd23995b9..a9dd2684b 100644
--- a/ironic/tests/unit/objects/test_node.py
+++ b/ironic/tests/unit/objects/test_node.py
@@ -61,6 +61,18 @@ class TestNodeObject(db_base.DbTestCase, obj_utils.SchemasTestMixIn):
# Ensure the node can be serialised.
jsonutils.dumps(d)
+ def test_as_dict_secure_with_configdrive(self):
+ self.node.driver_info['ipmi_password'] = 'fake'
+ self.node.instance_info['configdrive'] = 'data'
+ self.node.driver_internal_info['agent_secret_token'] = 'abc'
+ d = self.node.as_dict(secure=True, mask_configdrive=False)
+ self.assertEqual('******', d['driver_info']['ipmi_password'])
+ self.assertEqual('data', d['instance_info']['configdrive'])
+ self.assertEqual('******',
+ d['driver_internal_info']['agent_secret_token'])
+ # Ensure the node can be serialised.
+ jsonutils.dumps(d)
+
def test_as_dict_with_traits(self):
self.fake_node['traits'] = ['CUSTOM_1']
self.node = obj_utils.get_test_node(self.ctxt, **self.fake_node)