diff options
author | Steven Hardy <shardy@redhat.com> | 2016-11-03 17:42:51 +0000 |
---|---|---|
committer | Steven Hardy <shardy@redhat.com> | 2016-11-03 17:43:51 +0000 |
commit | 06205231a332ba942f07a7a07c6a546391d86dc4 (patch) | |
tree | 97c135ad96d34215daf99958d2e9f7accb63c85c | |
parent | 40a4ed0841789b8980e3161bd18490fb8b4bca7e (diff) | |
download | heat-templates-06205231a332ba942f07a7a07c6a546391d86dc4.tar.gz |
Add option to pass tags to the ansible hook
Currently we don't support options for the ansible hook, but it would
be useful to enable passing tags, like we already do for the puppet
hook.
Change-Id: Idf7e3aa520fd40a2c4c00b2d26c3c608059bb51d
-rwxr-xr-x | hot/software-config/elements/heat-config-ansible/install.d/hook-ansible.py | 5 | ||||
-rw-r--r-- | tests/software_config/test_hook_ansible.py | 41 |
2 files changed, 35 insertions, 11 deletions
diff --git a/hot/software-config/elements/heat-config-ansible/install.d/hook-ansible.py b/hot/software-config/elements/heat-config-ansible/install.d/hook-ansible.py index b1dbddc..37a3ad4 100755 --- a/hot/software-config/elements/heat-config-ansible/install.d/hook-ansible.py +++ b/hot/software-config/elements/heat-config-ansible/install.d/hook-ansible.py @@ -49,6 +49,8 @@ def main(argv=sys.argv): for input in c['inputs']: variables[input['name']] = input.get('value', '') + tags = c['options'].get('tags') + fn = os.path.join(WORKING_DIR, '%s_playbook.yaml' % c['id']) vars_filename = os.path.join(WORKING_DIR, '%s_variables.json' % c['id']) heat_outputs_path = os.path.join(OUTPUTS_DIR, c['id']) @@ -74,6 +76,9 @@ def main(argv=sys.argv): '--extra-vars', '@%s' % vars_filename ] + if tags: + cmd.insert(-1, '--tags') + cmd.insert(-1, tags) log.debug('Running %s' % (' '.join(cmd),)) try: subproc = subprocess.Popen(cmd, stdout=subprocess.PIPE, diff --git a/tests/software_config/test_hook_ansible.py b/tests/software_config/test_hook_ansible.py index 5b75182..e4fb36a 100644 --- a/tests/software_config/test_hook_ansible.py +++ b/tests/software_config/test_hook_ansible.py @@ -27,6 +27,19 @@ class HookAnsibleTest(common.RunScriptTest): 'id': '1234', 'name': 'fake_resource_name', 'group': 'ansible', + 'options': {}, + 'inputs': [ + {'name': 'foo', 'value': 'bar'}, + {'name': 'another', 'value': 'input'} + ], + 'config': 'the ansible playbook' + } + + data_tags = { + 'id': '1234', + 'name': 'fake_resource_name_tags', + 'group': 'ansible', + 'options': {'tags': 'abc,def'}, 'inputs': [ {'name': 'foo', 'value': 'bar'}, {'name': 'another', 'value': 'input'} @@ -59,6 +72,12 @@ class HookAnsibleTest(common.RunScriptTest): }) def test_hook(self): + self._hook_run() + + def test_hook_tags(self): + self._hook_run(data=self.data_tags, options=['--tags', 'abc,def']) + + def _hook_run(self, data=None, options=None): self.env.update({ 'TEST_RESPONSE': json.dumps({ @@ -67,7 +86,7 @@ class HookAnsibleTest(common.RunScriptTest): }), }) returncode, stdout, stderr = self.run_cmd( - [self.hook_path], self.env, json.dumps(self.data)) + [self.hook_path], self.env, json.dumps(data or self.data)) self.assertEqual(0, returncode, stderr) self.assertEqual({ @@ -80,16 +99,16 @@ class HookAnsibleTest(common.RunScriptTest): ansible_playbook = self.working_dir.join('1234_playbook.yaml') vars_filename = self.working_dir.join('1234_variables.json') - self.assertEqual( - [ - self.fake_tool_path, - '-i', - 'localhost,', - ansible_playbook, - '--extra-vars', - '@%s' % vars_filename - ], - state['args']) + expected_args = [ + self.fake_tool_path, + '-i', + 'localhost,', + ansible_playbook, + '--extra-vars'] + if options: + expected_args += options + expected_args.append('@%s' % vars_filename) + self.assertEqual(expected_args, state['args']) # Write 'variables' to file variables = self.json_from_file(vars_filename) |