summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Stringer <git@trstringer.com>2021-01-11 16:49:24 -0500
committerGitHub <noreply@github.com>2021-01-11 16:49:24 -0500
commit4f62ae8d01e8caca9039af067280ca2adad6ab6d (patch)
treed64a6046fadcaaf3fb48c6b1658445a8fb9edacc
parent88581e540728035c74af6173824e2cc517d13391 (diff)
downloadvyos-cloud-init-4f62ae8d01e8caca9039af067280ca2adad6ab6d.tar.gz
vyos-cloud-init-4f62ae8d01e8caca9039af067280ca2adad6ab6d.zip
Fix regression with handling of IMDS ssh keys (#760)
With the changes for SSH public keys to be retrieved from IMDS as a first option, when a key is passed through not in the raw SSH public key format it causes an issue and the key is not added to the user's authorized_keys file. This PR will temporarily disable this behavior until a permanent fix is put in place.
-rwxr-xr-xcloudinit/sources/DataSourceAzure.py8
-rw-r--r--tests/unittests/test_datasource/test_azure.py4
2 files changed, 11 insertions, 1 deletions
diff --git a/cloudinit/sources/DataSourceAzure.py b/cloudinit/sources/DataSourceAzure.py
index 8a0bf91d..090dd66b 100755
--- a/cloudinit/sources/DataSourceAzure.py
+++ b/cloudinit/sources/DataSourceAzure.py
@@ -651,6 +651,10 @@ class DataSourceAzure(sources.DataSource):
LOG.debug('Retrieving public SSH keys')
ssh_keys = []
try:
+ raise KeyError(
+ "Not using public SSH keys from IMDS"
+ )
+ # pylint:disable=unreachable
ssh_keys = [
public_key['keyData']
for public_key
@@ -1272,6 +1276,10 @@ class DataSourceAzure(sources.DataSource):
pubkey_info = None
try:
+ raise KeyError(
+ "Not using public SSH keys from IMDS"
+ )
+ # pylint:disable=unreachable
public_keys = self.metadata['imds']['compute']['publicKeys']
LOG.debug(
'Successfully retrieved %s key(s) from IMDS',
diff --git a/tests/unittests/test_datasource/test_azure.py b/tests/unittests/test_datasource/test_azure.py
index d64b538e..dc615309 100644
--- a/tests/unittests/test_datasource/test_azure.py
+++ b/tests/unittests/test_datasource/test_azure.py
@@ -1797,7 +1797,9 @@ scbus-1 on xpt0 bus 0
dsrc.get_data()
dsrc.setup(True)
ssh_keys = dsrc.get_public_ssh_keys()
- self.assertEqual(ssh_keys, ['key1'])
+ # Temporarily alter this test so that SSH public keys
+ # from IMDS are *not* going to be in use to fix a regression.
+ self.assertEqual(ssh_keys, [])
self.assertEqual(m_parse_certificates.call_count, 0)
@mock.patch(MOCKPATH + 'get_metadata_from_imds')