Skip to content

Commit 1adf31b

Browse files
Zuulopenstack-gerrit
authored andcommitted
Merge "Support alternate 'public-keys' format for NoCloud service."
2 parents 04c6424 + 14900bc commit 1adf31b

2 files changed

Lines changed: 13 additions & 0 deletions

File tree

cloudbaseinit/metadata/services/nocloudservice.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,9 @@ def get_public_keys(self):
307307
if not raw_ssh_keys:
308308
return []
309309

310+
if isinstance(raw_ssh_keys, list):
311+
return raw_ssh_keys
312+
310313
return [raw_ssh_keys[key].get('openssh-key') for key in raw_ssh_keys]
311314

312315
def get_network_details(self):

cloudbaseinit/tests/metadata/services/test_nocloudservice.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,16 @@ def test_get_public_keys(self, mock_get_metadata):
247247
result = self._config_drive.get_public_keys()
248248
self.assertEqual(result, expected_result)
249249

250+
@mock.patch(MODULE_PATH + '.NoCloudConfigDriveService._get_meta_data')
251+
def test_get_public_keys_alt_fmt(self, mock_get_metadata):
252+
fake_key = 'fake key'
253+
expected_result = [fake_key]
254+
mock_get_metadata.return_value = {
255+
'public-keys': [fake_key]
256+
}
257+
result = self._config_drive.get_public_keys()
258+
self.assertEqual(result, expected_result)
259+
250260
@ddt.data(('', ('V2 network metadata is empty', None)),
251261
('1', ('V2 network metadata is not a dictionary', None)),
252262
('{}', ('V2 network metadata is empty', None)),

0 commit comments

Comments
 (0)