From e5c67478136e1942a981ee18785ceb26579d0041 Mon Sep 17 00:00:00 2001 From: Daniel Watkins Date: Wed, 6 Jan 2021 16:19:15 -0500 Subject: integration_tests: add SSH key selection settings (#754) This introduces PUBLIC_SSH_KEY, to configure what public SSH key should be used to access systems under test, and KEYPAIR_NAME, to configure the name used in clouds for that SSH key (or the default SSH key, in PUBLIC_SSH_KEY's absence). --- tests/integration_tests/clouds.py | 9 +++++++++ tests/integration_tests/integration_settings.py | 12 ++++++++++++ 2 files changed, 21 insertions(+) diff --git a/tests/integration_tests/clouds.py b/tests/integration_tests/clouds.py index 9f6a6380..8ae20442 100644 --- a/tests/integration_tests/clouds.py +++ b/tests/integration_tests/clouds.py @@ -91,6 +91,15 @@ class IntegrationCloud(ABC): def __init__(self, settings=integration_settings): self.settings = settings self.cloud_instance = self._get_cloud_instance() + if settings.PUBLIC_SSH_KEY is not None: + # If we have a non-default key, use it. + self.cloud_instance.use_key( + settings.PUBLIC_SSH_KEY, name=settings.KEYPAIR_NAME + ) + elif settings.KEYPAIR_NAME is not None: + # Even if we're using the default key, it may still have a + # different name in the clouds, so we need to set it separately. + self.cloud_instance.key_pair.name = settings.KEYPAIR_NAME self._released_image_id = self._get_initial_image() self.snapshot_id = None diff --git a/tests/integration_tests/integration_settings.py b/tests/integration_tests/integration_settings.py index d7e02f04..6cabf3d8 100644 --- a/tests/integration_tests/integration_settings.py +++ b/tests/integration_tests/integration_settings.py @@ -75,6 +75,18 @@ CLOUD_INIT_SOURCE = 'NONE' COLLECT_LOGS = 'ON_ERROR' LOCAL_LOG_PATH = '/tmp/cloud_init_test_logs' +################################################################## +# SSH KEY SETTINGS +################################################################## + +# A path to the public SSH key to use for test runs. (Defaults to pycloudlib's +# default behaviour, using ~/.ssh/id_rsa.pub.) +PUBLIC_SSH_KEY = None + +# For clouds which use named keypairs for SSH connection, the name that is used +# for the keypair. (Defaults to pycloudlib's default behaviour.) +KEYPAIR_NAME = None + ################################################################## # GCE SPECIFIC SETTINGS ################################################################## -- cgit v1.2.3