Merge branch 'openstack_inventory_support' into upstream_master

* openstack_inventory_support:
  Use inventory_source source_vars to control what address we use for ansible_ssh_host
  Some small changes to tower openstack work
This commit is contained in:
Matthew Jones 2015-04-23 11:09:41 -04:00
commit 405be7edd8
4 changed files with 22 additions and 5 deletions

View File

@ -938,7 +938,8 @@ class RunInventoryUpdate(BaseTask):
username=credential.username,
password=decrypt_field(credential, "password"),
project_name=credential.project)
openstack_data = {"clouds": {"devstack": {"auth": openstack_auth}}}
private_state = str(inventory_update.source_vars_dict.get("private", "true"))
openstack_data = {"clouds": {"devstack": {"private": private_state, "auth": openstack_auth}}}
return yaml.safe_dump(openstack_data, default_flow_style=False, allow_unicode=True)
cp = ConfigParser.ConfigParser()

View File

@ -1898,3 +1898,19 @@ class InventoryUpdatesTest(BaseTransactionTest):
other_inv_src_opts = {'source': 'custom', 'source_script': script_data['id']}
with self.current_user(self.super_django_user):
self.put(other_inv_src, other_inv_src_opts, expect=400)
def test_update_from_openstack(self):
api_url = getattr(settings, 'TEST_OPENSTACK_HOST', '')
api_user = getattr(settings, 'TEST_OPENSTACK_USER', '')
api_password = getattr(settings, 'TEST_OPENSTACK_PASSWORD', '')
api_project = getattr(settings, 'TEST_OPENSTACK_PROJECT', '')
if not all([api_url, api_user, api_password, api_project]):
self.skipTest("No test openstack credentials defined")
self.create_test_license_file()
credential = Credential.objects.create(kind='openstack',
host=api_url,
username=api_user,
password=api_password,
project=api_project)
inventory_source = self.update_inventory_source(self.group, source='openstack', credential=credential)
self.check_inventory_source(inventory_source)

View File

@ -56,7 +56,7 @@ class OpenStackInventory(object):
self.openstack_config = os_client_config.config.OpenStackConfig(
config_files)
self.clouds = shade.openstack_clouds(self.openstack_config)
self.refresh = refresh
self.refresh = True
self.cache_max_age = self.openstack_config.get_cache_max_age()
cache_path = self.openstack_config.get_cache_path()
@ -101,9 +101,9 @@ class OpenStackInventory(object):
continue
server_vars = meta['server_vars']
hostvars[server.name][
'ansible_ssh_host'] = server_vars['interface_ip']
hostvars[server.name]['ansible_ssh_host'] = server_vars['interface_ip']
hostvars[server.name]['openstack'] = server_vars
hostvars[server.name]['hostId'] = server_vars['hostId']
for group in meta['groups']:
groups[group].append(server.name)

View File

@ -531,7 +531,7 @@ OPENSTACK_ENABLED_VALUE = 'ACTIVE'
OPENSTACK_GROUP_FILTER = r'^.+$'
OPENSTACK_HOST_FILTER = r'^.+$'
OPENSTACK_EXCLUDE_EMPTY_GROUPS = True
OPENSTACK_INSTANCE_ID_VAR = None
OPENSTACK_INSTANCE_ID_VAR = "hostId"
# ---------------------
# -- Activity Stream --