Cleanup and add test coverage for inventory without overcloud
This should generate an inventory containing just the Undercloud group. There are a few vars being set that do not make sense in this case e.g plan/plans and overcloud admin password. Clean this up and add unit tests. Change-Id: I98dbbaaea25a0d61674e989eca8d2daf6090ebc4 (cherry picked from commit43fa36d3c2
) (cherry picked from commit9d292a63e1
) (cherry picked from commit6be18f31ff
)
This commit is contained in:
parent
0630a76c69
commit
8b37b05ea8
|
@ -59,7 +59,8 @@ class TripleoInventories(object):
|
|||
|
||||
# save the plan for this stack in the plans list
|
||||
plan = inv['Undercloud']['vars']['plan']
|
||||
inventory['Undercloud']['vars']['plans'].append(plan)
|
||||
if plan is not None:
|
||||
inventory['Undercloud']['vars']['plans'].append(plan)
|
||||
|
||||
for key in inv.keys():
|
||||
if key != 'Undercloud':
|
||||
|
|
|
@ -149,6 +149,8 @@ class TripleoInventory(object):
|
|||
return alist
|
||||
|
||||
def _get_stack(self):
|
||||
if self.plan_name is None:
|
||||
return None
|
||||
try:
|
||||
stack = self.hclient.stacks.get(self.plan_name)
|
||||
except HTTPNotFound:
|
||||
|
@ -172,7 +174,7 @@ class TripleoInventory(object):
|
|||
'cacert': self.cacert,
|
||||
'os_auth_token':
|
||||
self.session.get_token() if self.session else None,
|
||||
'plan': self.plan_name,
|
||||
'plan': None,
|
||||
'project_name': self.project_name,
|
||||
'username': self.username,
|
||||
},
|
||||
|
@ -199,12 +201,6 @@ class TripleoInventory(object):
|
|||
ret['Undercloud']['vars']['undercloud_service_list'] = \
|
||||
self.get_undercloud_service_list()
|
||||
|
||||
admin_password = self.get_overcloud_environment().get(
|
||||
'parameter_defaults', {}).get('AdminPassword')
|
||||
if admin_password:
|
||||
ret['Undercloud']['vars']['overcloud_admin_password'] =\
|
||||
admin_password
|
||||
|
||||
if dynamic:
|
||||
# Prevent Ansible from repeatedly calling us to get empty host
|
||||
# details
|
||||
|
@ -213,6 +209,14 @@ class TripleoInventory(object):
|
|||
self.stack = self._get_stack()
|
||||
if not self.stack:
|
||||
return ret
|
||||
|
||||
ret['Undercloud']['vars']['plan'] = self.plan_name
|
||||
admin_password = self.get_overcloud_environment().get(
|
||||
'parameter_defaults', {}).get('AdminPassword')
|
||||
if admin_password:
|
||||
ret['Undercloud']['vars']['overcloud_admin_password'] =\
|
||||
admin_password
|
||||
|
||||
self.stack_outputs = StackOutputs(self.stack)
|
||||
|
||||
keystone_url = self.stack_outputs.get('KeystoneURL')
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
"_meta": {
|
||||
"hostvars": {}
|
||||
},
|
||||
"Undercloud": {
|
||||
"hosts": [
|
||||
"undercloud"
|
||||
],
|
||||
"vars": {
|
||||
"ansible_host": "localhost",
|
||||
"ansible_python_interpreter": "/usr/bin/python3",
|
||||
"ansible_connection": "local",
|
||||
"ansible_remote_tmp": "/tmp/ansible-${USER}",
|
||||
"auth_url": "https://192.168.24.2:13000",
|
||||
"cacert": null,
|
||||
"os_auth_token": "gAAAAABfyhfVBvn9GwTNPKCgjTLtBAMW4_8JVMUj4n9GTrt8Ns2_YrJiAK9E3E9V0ABixQ2TRICTgZtHGgl4qfIcJMvbbLjH84oL4QxuyQ4LfcNIF7WBcnvoo3qvkCYfTNbzEJChFYiId8W0lyXiTGE80Dhr13PXrHuYDeejs4jShuFGSP_8BeQ",
|
||||
"plan": null,
|
||||
"project_name": "admin",
|
||||
"username": "admin",
|
||||
"undercloud_swift_url": "https://192.168.24.2:13808/v1/AUTH_ad15d77254c94b03b1534a261059cd76",
|
||||
"undercloud_service_list": [
|
||||
"tripleo_nova_compute",
|
||||
"tripleo_heat_engine",
|
||||
"tripleo_ironic_conductor",
|
||||
"tripleo_swift_container_server",
|
||||
"tripleo_swift_object_server",
|
||||
"tripleo_mistral_engine"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
{
|
||||
"_meta": {
|
||||
"hostvars": {}
|
||||
},
|
||||
"Undercloud": {
|
||||
"hosts": [
|
||||
"undercloud"
|
||||
],
|
||||
"vars": {
|
||||
"ansible_host": "localhost",
|
||||
"ansible_python_interpreter": "/usr/bin/python3",
|
||||
"ansible_connection": "local",
|
||||
"ansible_remote_tmp": "/tmp/ansible-${USER}",
|
||||
"auth_url": "https://192.168.24.2:13000",
|
||||
"cacert": null,
|
||||
"os_auth_token": "gAAAAABfyhfVBvn9GwTNPKCgjTLtBAMW4_8JVMUj4n9GTrt8Ns2_YrJiAK9E3E9V0ABixQ2TRICTgZtHGgl4qfIcJMvbbLjH84oL4QxuyQ4LfcNIF7WBcnvoo3qvkCYfTNbzEJChFYiId8W0lyXiTGE80Dhr13PXrHuYDeejs4jShuFGSP_8BeQ",
|
||||
"plan": null,
|
||||
"plans": [],
|
||||
"project_name": "admin",
|
||||
"username": "admin",
|
||||
"undercloud_swift_url": "https://192.168.24.2:13808/v1/AUTH_ad15d77254c94b03b1534a261059cd76",
|
||||
"undercloud_service_list": [
|
||||
"tripleo_nova_compute",
|
||||
"tripleo_heat_engine",
|
||||
"tripleo_ironic_conductor",
|
||||
"tripleo_swift_container_server",
|
||||
"tripleo_swift_object_server",
|
||||
"tripleo_mistral_engine"
|
||||
]
|
||||
}
|
||||
},
|
||||
"overcloud": {
|
||||
"children": ["foobar"]
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
Undercloud:
|
||||
hosts:
|
||||
undercloud: {}
|
||||
vars:
|
||||
ansible_connection: local
|
||||
ansible_host: localhost
|
||||
ansible_python_interpreter: /usr/bin/python3
|
||||
ansible_remote_tmp: /tmp/ansible-${USER}
|
||||
auth_url: https://192.168.24.2:13000
|
||||
cacert: null
|
||||
os_auth_token: gAAAAABfyheSpP9F_O2zpn_zMgPANBpl10eMR4QWL3tfBDJYhDEP_iEoPBjP0H0kCfkoDBldnlmkf9LRIWqSRJ1Z6FJOQdMp--DjJE4lpvWk6_swo2NpSt3IGW9Kudc7xNm-WA9R7xBujF4DtZ_WjWw7H_Ue0VfF6eKfo2HLP6Y9VS2IY3m9HZQ
|
||||
plan: null
|
||||
project_name: admin
|
||||
undercloud_service_list: [tripleo_nova_compute, tripleo_heat_engine, tripleo_ironic_conductor,
|
||||
tripleo_swift_container_server, tripleo_swift_object_server, tripleo_mistral_engine]
|
||||
undercloud_swift_url: https://192.168.24.2:13808/v1/AUTH_ad15d77254c94b03b1534a261059cd76
|
||||
username: admin
|
|
@ -0,0 +1,21 @@
|
|||
Undercloud:
|
||||
hosts:
|
||||
undercloud: {}
|
||||
vars:
|
||||
ansible_connection: local
|
||||
ansible_host: localhost
|
||||
ansible_python_interpreter: /usr/bin/python3
|
||||
ansible_remote_tmp: /tmp/ansible-${USER}
|
||||
auth_url: https://192.168.24.2:13000
|
||||
cacert: null
|
||||
os_auth_token: gAAAAABfyheSpP9F_O2zpn_zMgPANBpl10eMR4QWL3tfBDJYhDEP_iEoPBjP0H0kCfkoDBldnlmkf9LRIWqSRJ1Z6FJOQdMp--DjJE4lpvWk6_swo2NpSt3IGW9Kudc7xNm-WA9R7xBujF4DtZ_WjWw7H_Ue0VfF6eKfo2HLP6Y9VS2IY3m9HZQ
|
||||
plan: null
|
||||
plans: []
|
||||
project_name: admin
|
||||
undercloud_service_list: [tripleo_nova_compute, tripleo_heat_engine, tripleo_ironic_conductor,
|
||||
tripleo_swift_container_server, tripleo_swift_object_server, tripleo_mistral_engine]
|
||||
undercloud_swift_url: https://192.168.24.2:13808/v1/AUTH_ad15d77254c94b03b1534a261059cd76
|
||||
username: admin
|
||||
overcloud:
|
||||
children:
|
||||
foobar: {}
|
|
@ -41,7 +41,10 @@ class _TestInventoriesBase(base.TestCase):
|
|||
'merged_static.yaml',
|
||||
'single_dynamic.json',
|
||||
'single_static.yaml',
|
||||
|
||||
'undercloud_dynamic.json',
|
||||
'undercloud_static.yaml',
|
||||
'undercloud_dynamic_merged.json',
|
||||
'undercloud_static_merged.yaml',
|
||||
):
|
||||
name = os.path.basename(datafile).split('.')[0]
|
||||
path = os.path.join(inventory_dir, datafile)
|
||||
|
@ -144,3 +147,39 @@ class TestInventorySingleDynamic(_TestInventoriesBase):
|
|||
actual = self.inventories.list()
|
||||
expected = self.inventory_data['single_dynamic']
|
||||
self.assertEqual(expected, actual)
|
||||
|
||||
|
||||
class TestInventoryUndercloudStatic(_TestInventoriesBase):
|
||||
def setUp(self):
|
||||
super(TestInventoryUndercloudStatic, self).setUp()
|
||||
mock_inv_undercloud = MagicMock()
|
||||
mock_inv_undercloud.list.return_value = self.inventory_data[
|
||||
'undercloud_static'
|
||||
]
|
||||
stack_to_inv_obj_map = {
|
||||
'foobar': mock_inv_undercloud
|
||||
}
|
||||
self.inventories = TripleoInventories(stack_to_inv_obj_map)
|
||||
|
||||
def test_list(self):
|
||||
actual = self.inventories.list(dynamic=False)
|
||||
expected = self.inventory_data['undercloud_static_merged']
|
||||
self.assertEqual(expected, actual)
|
||||
|
||||
|
||||
class TestInventoryUndercloudDynamic(_TestInventoriesBase):
|
||||
def setUp(self):
|
||||
super(TestInventoryUndercloudDynamic, self).setUp()
|
||||
mock_inv_undercloud = MagicMock()
|
||||
mock_inv_undercloud.list.return_value = self.inventory_data[
|
||||
'undercloud_dynamic'
|
||||
]
|
||||
stack_to_inv_obj_map = {
|
||||
'foobar': mock_inv_undercloud
|
||||
}
|
||||
self.inventories = TripleoInventories(stack_to_inv_obj_map)
|
||||
|
||||
def test_list(self):
|
||||
actual = self.inventories.list()
|
||||
expected = self.inventory_data['undercloud_dynamic_merged']
|
||||
self.assertEqual(expected, actual)
|
||||
|
|
|
@ -248,6 +248,38 @@ class TestInventory(base.TestCase):
|
|||
for k in expected:
|
||||
self.assertEqual(expected[k], inv_list[k])
|
||||
|
||||
def test_inventory_list_undercloud_only(self):
|
||||
self.inventory.plan_name = None
|
||||
self.inventory.undercloud_connection = 'local'
|
||||
expected = {
|
||||
'Undercloud': {
|
||||
'hosts': ['undercloud'],
|
||||
'vars': {
|
||||
'ansible_connection': 'local',
|
||||
'ansible_host': 'localhost',
|
||||
'ansible_python_interpreter': sys.executable,
|
||||
'ansible_remote_tmp': '/tmp/ansible-${USER}',
|
||||
'auth_url': 'xyz://keystone.local',
|
||||
'cacert': 'acacert',
|
||||
'os_auth_token': 'atoken',
|
||||
'project_name': 'admin',
|
||||
'plan': None,
|
||||
'undercloud_service_list': [
|
||||
'tripleo_nova_compute',
|
||||
'tripleo_heat_engine',
|
||||
'tripleo_ironic_conductor',
|
||||
'tripleo_swift_container_server',
|
||||
'tripleo_swift_object_server',
|
||||
'tripleo_mistral_engine'
|
||||
],
|
||||
'undercloud_swift_url': 'anendpoint',
|
||||
'username': 'admin'
|
||||
}
|
||||
},
|
||||
'_meta': {'hostvars': {}},
|
||||
}
|
||||
self.assertEqual(expected, self.inventory.list())
|
||||
|
||||
def test_ansible_ssh_user(self):
|
||||
self._try_alternative_args(
|
||||
ansible_ssh_user='my-custom-admin',
|
||||
|
|
Loading…
Reference in New Issue