summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzhihui wu <wu.zhihui1@zte.com.cn>2017-04-20 09:57:06 +0800
committerzhihui wu <wu.zhihui1@zte.com.cn>2017-04-20 11:10:16 +0800
commite37805bda96bd54a6c0108e6fb2e67298bbda280 (patch)
tree027418884e44bc3e5766ae34ffb8498a97694a7c
parent973f0287b44b3bcac193bc069bd474fc252232db (diff)
fix apex integration
I didnot find a right way to source Openstack rc file via ansible module python api. Without openstack rc fiel, openstack cli command can not be executed. So I move this part to ansible playbook. Change-Id: I44439560f8ffa1b41890c4e94c9657ab2cc43241 Signed-off-by: zhihui wu <wu.zhihui1@zte.com.cn>
-rw-r--r--qtip/ansible_library/modules/apex_generate_inventory.py (renamed from qtip/ansible_library/modules/apex.py)44
-rw-r--r--tests/integration/setup.yaml21
-rw-r--r--tests/unit/ansible_library/modules/apex_generate_inventory_test.py (renamed from tests/unit/ansible_library/modules/apex_test.py)4
3 files changed, 33 insertions, 36 deletions
diff --git a/qtip/ansible_library/modules/apex.py b/qtip/ansible_library/modules/apex_generate_inventory.py
index 218440b2..9621ba6e 100644
--- a/qtip/ansible_library/modules/apex.py
+++ b/qtip/ansible_library/modules/apex_generate_inventory.py
@@ -10,7 +10,6 @@
##############################################################################
from collections import defaultdict
-import json
import re
from ansible.module_utils.basic import AnsibleModule
@@ -70,10 +69,7 @@ EXAMPLES = '''
def generate_inventory(baremetal_info, server_info):
- """Generate ansible inventory from node list in json format
-
- Modified from https://github.com/martineg/ansible-apex-inventory/blob/master/apex.py
- """
+ """Generate ansible inventory in json format"""
hosts = defaultdict(list)
hosts_meta = {}
@@ -95,37 +91,17 @@ def generate_inventory(baremetal_info, server_info):
def main():
- module = AnsibleModule(argument_spec=dict())
-
- (rc, out, err) = module.run_command(['source ~/stackrc'])
-
- if rc is not None and rc != 0:
- return module.fail_json(msg=err)
-
- cmd = [module.get_bin_path('openstack', True),
- 'baremetal',
- 'list',
- '--fields instance_uuid properties provision_state',
- '--format json']
- (rc, out, err) = module.run_command(cmd)
-
- if rc is not None and rc != 0:
- return module.fail_json(msg=err)
-
- baremetal_info = json.loads(out)
-
- cmd = [module.get_bin_path('openstack', True),
- 'server',
- 'list',
- '--format json']
- (rc, out, err) = module.run_command(cmd)
-
- if rc is not None and rc != 0:
- return module.fail_json(msg=err)
+ module = AnsibleModule(
+ argument_spec=dict(
+ baremetal_info=dict(type='list'),
+ server_info=dict(type='list')
+ )
+ )
- server_info = json.loads(out)
+ baremetal_info = module.params['baremetal_info']
+ server_info = module.params['server_info']
- module.exit_json(changed=False,
+ module.exit_json(changed=True,
ansible_facts=generate_inventory(baremetal_info, server_info))
diff --git a/tests/integration/setup.yaml b/tests/integration/setup.yaml
index 8d055c23..fed5e9d9 100644
--- a/tests/integration/setup.yaml
+++ b/tests/integration/setup.yaml
@@ -20,6 +20,27 @@
template: src={{ qtip_resources }}/template/ssh.cfg.j2 dest=./ssh.cfg
delegate_to: localhost
+- hosts: apex-undercloud
+ gather_facts: no
+
+ tasks:
+ - name: collect overcloud baremetal info
+ shell: . /root/stackrc && openstack baremetal list --fields instance_uuid properties provision_state --format json
+ register: baremetal_info
+ - name: collect overcloud server info
+ shell: . /root/stackrc && openstack server list --format json
+ register: server_info
+ - name: generate inventory
+ apex_generate_inventory:
+ baremetal_info: "{{ baremetal_info.stdout | from_json }}"
+ server_info: "{{ server_info.stdout | from_json }}"
+ - name: update inventory file
+ template: src={{ qtip_resources }}/template/hosts.j2 dest=./hosts
+ delegate_to: localhost
+ - name: update ssh.cfg file
+ template: src={{ qtip_resources }}/template/ssh.cfg.j2 dest=./ssh.cfg
+ delegate_to: localhost
+
# Initialize testapi database
- hosts: localhost
tasks:
diff --git a/tests/unit/ansible_library/modules/apex_test.py b/tests/unit/ansible_library/modules/apex_generate_inventory_test.py
index 8a1d0673..7df9d35c 100644
--- a/tests/unit/ansible_library/modules/apex_test.py
+++ b/tests/unit/ansible_library/modules/apex_generate_inventory_test.py
@@ -10,7 +10,7 @@
import json
import os
-from qtip.ansible_library.modules import apex
+from qtip.ansible_library.modules import apex_generate_inventory
def test_generate_inventory(data_root):
@@ -18,7 +18,7 @@ def test_generate_inventory(data_root):
'apex', 'baremetal_info.json')))
server_info = json.load(open(os.path.join(data_root, 'external',
'apex', 'server_info.json')))
- inventory = apex.generate_inventory(baremetal_info, server_info)
+ inventory = apex_generate_inventory.generate_inventory(baremetal_info, server_info)
assert dict(inventory['hosts']) == {
u'compute': [u'192.0.2.5', u'192.0.2.6'],
u'control': [u'192.0.2.7', u'192.0.2.8', u'192.0.2.9']}