summaryrefslogtreecommitdiffstats
path: root/deploy/ansible_plugins/lookup/yamlfile.py
diff options
context:
space:
mode:
authorHarry Huang <huangxiangyu5@huawei.com>2018-01-22 12:12:08 +0800
committerHarry Huang <huangxiangyu5@huawei.com>2018-02-07 10:41:57 +0800
commitbb9f83caad0d76277144d53caabe43fd317ce268 (patch)
treeef745000d2289ff1b497433c020bd8da8c88bf5b /deploy/ansible_plugins/lookup/yamlfile.py
parent26f656961306239075612ac75a92b79db44e1539 (diff)
Add workaround for horizon image upload issue
JIRA: COMPASS-573 1. With HORIZON_IMAGES_UPLOAD_MODE set to direct Horizon provides the endpoint for Glance based on OPENSTACK_ENDPOINT_TYPE. If OPENSTACK_ENDPOINT_TYPE is set to internalURL any browser outside the internal network is unable to upload image. Add ansible task to set HORIZON_IMAGES_UPLOAD_MODE to legacy as a workaround. 2. Add ansible lookup plugin to get openstack release 3. set openstack_release into group_vars/all in config-osa to make this variable readable for other tasks Change-Id: I9ef358e1f4acb0c329a032e18359de12284f3b56 Signed-off-by: Harry Huang <huangxiangyu5@huawei.com>
Diffstat (limited to 'deploy/ansible_plugins/lookup/yamlfile.py')
-rw-r--r--deploy/ansible_plugins/lookup/yamlfile.py55
1 files changed, 55 insertions, 0 deletions
diff --git a/deploy/ansible_plugins/lookup/yamlfile.py b/deploy/ansible_plugins/lookup/yamlfile.py
new file mode 100644
index 00000000..c915adc7
--- /dev/null
+++ b/deploy/ansible_plugins/lookup/yamlfile.py
@@ -0,0 +1,55 @@
+#!/bin/venv python
+
+import yaml
+import sys
+
+compass_bin = "/opt/compass/bin"
+sys.path.append(compass_bin)
+import switch_virtualenv # noqa: F401
+
+from ansible.errors import AnsibleError # noqa: E402
+from ansible.plugins.lookup import LookupBase # noqa: E402
+
+
+class LookupModule(LookupBase):
+
+ def read_yaml(self, yaml_path, key, default=None):
+ if not key:
+ return None
+
+ with open(yaml_path) as fd:
+ yaml_data = yaml.safe_load(fd)
+
+ if key in yaml_data:
+ return yaml_data[key]
+ else:
+ return default
+
+ def run(self, terms, variables=None, **kwargs):
+ res = []
+ if not isinstance(terms, list):
+ terms = [terms]
+
+ for term in terms:
+ params = term.split()
+ yaml_path = params[0]
+
+ param_dict = {
+ 'key': None,
+ 'default': None
+ }
+
+ try:
+ for param in params[1:]:
+ key, value = param.split('=')
+ assert(key in param_dict)
+ param_dict[key] = value
+ except (AttributeError, AssertionError), e:
+ raise AnsibleError(e)
+
+ data = self.read_yaml(yaml_path,
+ param_dict['key'],
+ param_dict['default'])
+ res.append(data)
+
+ return res