From 2e7d36a3f969b31570d7ee34e3f1f971c5c586a9 Mon Sep 17 00:00:00 2001 From: Matt Clay Date: Wed, 7 Aug 2019 18:32:30 -0700 Subject: [PATCH] Fix placement and handling of ansible-test cloud config (#60253) * Move cloud templates. * Update paths for cloud config templates. * Fix cloud config paths. * Fix cloud-config classification. --- .../ansible_test/_internal/classification.py | 17 +++++++++-------- .../ansible_test/_internal/cloud/__init__.py | 16 +++++++++++----- test/lib/ansible_test/_internal/util.py | 1 + .../config}/cloud-config-aws.ini.template | 0 .../config}/cloud-config-azure.ini.template | 0 .../cloud-config-cloudscale.ini.template | 0 .../config}/cloud-config-cs.ini.template | 0 .../config}/cloud-config-gcp.ini.template | 0 .../config}/cloud-config-hcloud.ini.template | 0 .../cloud-config-opennebula.ini.template | 0 .../cloud-config-openshift.kubeconfig.template | 0 .../config}/cloud-config-scaleway.ini.template | 0 .../config}/cloud-config-tower.ini.template | 0 .../config}/cloud-config-vcenter.ini.template | 0 .../config}/cloud-config-vultr.ini.template | 0 15 files changed, 21 insertions(+), 13 deletions(-) rename test/{integration => lib/ansible_test/config}/cloud-config-aws.ini.template (100%) rename test/{integration => lib/ansible_test/config}/cloud-config-azure.ini.template (100%) rename test/{integration => lib/ansible_test/config}/cloud-config-cloudscale.ini.template (100%) rename test/{integration => lib/ansible_test/config}/cloud-config-cs.ini.template (100%) rename test/{integration => lib/ansible_test/config}/cloud-config-gcp.ini.template (100%) rename test/{integration => lib/ansible_test/config}/cloud-config-hcloud.ini.template (100%) rename test/{integration => lib/ansible_test/config}/cloud-config-opennebula.ini.template (100%) rename test/{integration => lib/ansible_test/config}/cloud-config-openshift.kubeconfig.template (100%) rename test/{integration => lib/ansible_test/config}/cloud-config-scaleway.ini.template (100%) rename test/{integration => lib/ansible_test/config}/cloud-config-tower.ini.template (100%) rename test/{integration => lib/ansible_test/config}/cloud-config-vcenter.ini.template (100%) rename test/{integration => lib/ansible_test/config}/cloud-config-vultr.ini.template (100%) diff --git a/test/lib/ansible_test/_internal/classification.py b/test/lib/ansible_test/_internal/classification.py index 17d598b5356..1ae4f72ed2b 100644 --- a/test/lib/ansible_test/_internal/classification.py +++ b/test/lib/ansible_test/_internal/classification.py @@ -681,14 +681,6 @@ class PathMapper: command: self.integration_all_target, } - if name.startswith('cloud-config-'): - cloud_target = 'cloud/%s/' % name.split('-')[2].split('.')[0] - - if cloud_target in self.integration_targets_by_alias: - return { - 'integration': cloud_target, - } - return { 'integration': self.integration_all_target, 'windows-integration': self.integration_all_target, @@ -723,6 +715,15 @@ class PathMapper: test_path = os.path.dirname(test_path) + if path.startswith('test/lib/ansible_test/config/'): + if name.startswith('cloud-config-'): + cloud_target = 'cloud/%s/' % name.split('-')[2].split('.')[0] + + if cloud_target in self.integration_targets_by_alias: + return { + 'integration': cloud_target, + } + if path.startswith('test/lib/ansible_test/_data/completion/'): if path == 'test/lib/ansible_test/_data/completion/docker.txt': return all_tests(self.args, force=True) # force all tests due to risk of breaking changes in new test environment diff --git a/test/lib/ansible_test/_internal/cloud/__init__.py b/test/lib/ansible_test/_internal/cloud/__init__.py index b7ef15731a4..dea1439ab82 100644 --- a/test/lib/ansible_test/_internal/cloud/__init__.py +++ b/test/lib/ansible_test/_internal/cloud/__init__.py @@ -24,6 +24,7 @@ from ..util import ( ABC, to_bytes, make_dirs, + ANSIBLE_TEST_CONFIG_ROOT, ) from ..target import ( @@ -188,7 +189,12 @@ class CloudBase(ABC): def config_callback(files): # type: (t.List[t.Tuple[str, str]]) -> None """Add the config file to the payload file list.""" if self._get_cloud_config(self._CONFIG_PATH, ''): - pair = (self.config_path, os.path.relpath(self.config_path, data_context().content.root)) + if data_context().content.collection: + working_path = data_context().content.collection.directory + else: + working_path = '' + + pair = (self.config_path, os.path.join(working_path, os.path.relpath(self.config_path, data_context().content.root))) if pair not in files: display.info('Including %s config: %s -> %s' % (self.platform, pair[0], pair[1]), verbosity=3) @@ -283,8 +289,9 @@ class CloudProvider(CloudBase): super(CloudProvider, self).__init__(args) self.remove_config = False - self.config_static_path = '%s/cloud-config-%s%s' % (self.TEST_DIR, self.platform, config_extension) - self.config_template_path = '%s.template' % self.config_static_path + self.config_static_name = 'cloud-config-%s%s' % (self.platform, config_extension) + self.config_static_path = os.path.join(self.TEST_DIR, self.config_static_name) + self.config_template_path = os.path.join(ANSIBLE_TEST_CONFIG_ROOT, '%s.template' % self.config_static_name) self.config_extension = config_extension def filter(self, targets, exclude): @@ -349,9 +356,8 @@ class CloudProvider(CloudBase): with tempfile.NamedTemporaryFile(dir=self.TEST_DIR, prefix=prefix, suffix=self.config_extension, delete=False) as config_fd: filename = os.path.join(self.TEST_DIR, os.path.basename(config_fd.name)) - self.config_path = config_fd.name + self.config_path = filename self.remove_config = True - self._set_cloud_config('config_path', filename) display.info('>>> Config: %s\n%s' % (filename, content.strip()), verbosity=3) diff --git a/test/lib/ansible_test/_internal/util.py b/test/lib/ansible_test/_internal/util.py index da86c8ad404..7c23f156b7f 100644 --- a/test/lib/ansible_test/_internal/util.py +++ b/test/lib/ansible_test/_internal/util.py @@ -65,6 +65,7 @@ COVERAGE_OUTPUT_PATH = 'coverage' ANSIBLE_ROOT = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))) ANSIBLE_TEST_ROOT = os.path.join(ANSIBLE_ROOT, 'test', 'lib', 'ansible_test') ANSIBLE_TEST_DATA_ROOT = os.path.join(ANSIBLE_TEST_ROOT, '_data') +ANSIBLE_TEST_CONFIG_ROOT = os.path.join(ANSIBLE_TEST_ROOT, 'config') # Modes are set to allow all users the same level of access. # This permits files to be used in tests that change users. diff --git a/test/integration/cloud-config-aws.ini.template b/test/lib/ansible_test/config/cloud-config-aws.ini.template similarity index 100% rename from test/integration/cloud-config-aws.ini.template rename to test/lib/ansible_test/config/cloud-config-aws.ini.template diff --git a/test/integration/cloud-config-azure.ini.template b/test/lib/ansible_test/config/cloud-config-azure.ini.template similarity index 100% rename from test/integration/cloud-config-azure.ini.template rename to test/lib/ansible_test/config/cloud-config-azure.ini.template diff --git a/test/integration/cloud-config-cloudscale.ini.template b/test/lib/ansible_test/config/cloud-config-cloudscale.ini.template similarity index 100% rename from test/integration/cloud-config-cloudscale.ini.template rename to test/lib/ansible_test/config/cloud-config-cloudscale.ini.template diff --git a/test/integration/cloud-config-cs.ini.template b/test/lib/ansible_test/config/cloud-config-cs.ini.template similarity index 100% rename from test/integration/cloud-config-cs.ini.template rename to test/lib/ansible_test/config/cloud-config-cs.ini.template diff --git a/test/integration/cloud-config-gcp.ini.template b/test/lib/ansible_test/config/cloud-config-gcp.ini.template similarity index 100% rename from test/integration/cloud-config-gcp.ini.template rename to test/lib/ansible_test/config/cloud-config-gcp.ini.template diff --git a/test/integration/cloud-config-hcloud.ini.template b/test/lib/ansible_test/config/cloud-config-hcloud.ini.template similarity index 100% rename from test/integration/cloud-config-hcloud.ini.template rename to test/lib/ansible_test/config/cloud-config-hcloud.ini.template diff --git a/test/integration/cloud-config-opennebula.ini.template b/test/lib/ansible_test/config/cloud-config-opennebula.ini.template similarity index 100% rename from test/integration/cloud-config-opennebula.ini.template rename to test/lib/ansible_test/config/cloud-config-opennebula.ini.template diff --git a/test/integration/cloud-config-openshift.kubeconfig.template b/test/lib/ansible_test/config/cloud-config-openshift.kubeconfig.template similarity index 100% rename from test/integration/cloud-config-openshift.kubeconfig.template rename to test/lib/ansible_test/config/cloud-config-openshift.kubeconfig.template diff --git a/test/integration/cloud-config-scaleway.ini.template b/test/lib/ansible_test/config/cloud-config-scaleway.ini.template similarity index 100% rename from test/integration/cloud-config-scaleway.ini.template rename to test/lib/ansible_test/config/cloud-config-scaleway.ini.template diff --git a/test/integration/cloud-config-tower.ini.template b/test/lib/ansible_test/config/cloud-config-tower.ini.template similarity index 100% rename from test/integration/cloud-config-tower.ini.template rename to test/lib/ansible_test/config/cloud-config-tower.ini.template diff --git a/test/integration/cloud-config-vcenter.ini.template b/test/lib/ansible_test/config/cloud-config-vcenter.ini.template similarity index 100% rename from test/integration/cloud-config-vcenter.ini.template rename to test/lib/ansible_test/config/cloud-config-vcenter.ini.template diff --git a/test/integration/cloud-config-vultr.ini.template b/test/lib/ansible_test/config/cloud-config-vultr.ini.template similarity index 100% rename from test/integration/cloud-config-vultr.ini.template rename to test/lib/ansible_test/config/cloud-config-vultr.ini.template