diff options
author | Harry Huang <huangxiangyu5@huawei.com> | 2018-01-22 12:12:08 +0800 |
---|---|---|
committer | Harry Huang <huangxiangyu5@huawei.com> | 2018-02-07 10:41:57 +0800 |
commit | bb9f83caad0d76277144d53caabe43fd317ce268 (patch) | |
tree | ef745000d2289ff1b497433c020bd8da8c88bf5b /deploy/ansible_plugins/lookup/yamlfile.py | |
parent | 26f656961306239075612ac75a92b79db44e1539 (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.py | 55 |
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 |