summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xhot/software-config/elements/heat-config-ansible/install.d/hook-ansible.py5
-rw-r--r--tests/software_config/test_hook_ansible.py41
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)