diff options
author | Zuul <zuul@review.opendev.org> | 2021-05-05 13:12:00 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2021-05-05 13:12:00 +0000 |
commit | 462969c68f2978b4b250ba99ef491ef6858437fe (patch) | |
tree | 3c1f6132acb60cac5f436a5d9861d2b35b13c735 /ironic | |
parent | b2449bf2c4de32b35fc6f62dcbb9d8820e2567b1 (diff) | |
parent | d97f0fb5ec366adf384966e65f4779149ed4c283 (diff) | |
download | ironic-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.py | 2 | ||||
-rw-r--r-- | ironic/objects/node.py | 10 | ||||
-rw-r--r-- | ironic/tests/unit/objects/test_node.py | 12 |
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) |