Changed way we handle global properties (from /etc/kolla/globals.yml to
/usr/share/kolla/ansible/group_vars/__GLOBAL). Jira-Issue: OPENSTACK-742
This commit is contained in:
parent
9298bd1969
commit
2ed4290add
|
@ -106,10 +106,11 @@ DEFAULT_OVERRIDES = {
|
||||||
# these groups cannot be deleted, they are required by kolla
|
# these groups cannot be deleted, they are required by kolla
|
||||||
PROTECTED_GROUPS = [COMPUTE_GRP_NAME]
|
PROTECTED_GROUPS = [COMPUTE_GRP_NAME]
|
||||||
|
|
||||||
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class Host(object):
|
class Host(object):
|
||||||
class_version = 1
|
class_version = 1
|
||||||
log = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
def __init__(self, hostname):
|
def __init__(self, hostname):
|
||||||
self.name = hostname
|
self.name = hostname
|
||||||
|
@ -257,8 +258,6 @@ class SubService(object):
|
||||||
class Inventory(object):
|
class Inventory(object):
|
||||||
class_version = 2
|
class_version = 2
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
"""class version history
|
"""class version history
|
||||||
|
|
||||||
1: initial release
|
1: initial release
|
||||||
|
@ -482,11 +481,11 @@ class Inventory(object):
|
||||||
u._('Not all hosts were set up. : {reasons}')
|
u._('Not all hosts were set up. : {reasons}')
|
||||||
.format(reasons=summary))
|
.format(reasons=summary))
|
||||||
else:
|
else:
|
||||||
self.log.info(u._LI('All hosts were successfully set up.'))
|
LOG.info(u._LI('All hosts were successfully set up.'))
|
||||||
|
|
||||||
def setup_host(self, hostname, password, uname=None):
|
def setup_host(self, hostname, password, uname=None):
|
||||||
try:
|
try:
|
||||||
self.log.info(
|
LOG.info(
|
||||||
u._LI('Starting setup of host ({host}).')
|
u._LI('Starting setup of host ({host}).')
|
||||||
.format(host=hostname))
|
.format(host=hostname))
|
||||||
ssh_setup_host(hostname, password, uname)
|
ssh_setup_host(hostname, password, uname)
|
||||||
|
@ -494,8 +493,8 @@ class Inventory(object):
|
||||||
if not check_ok:
|
if not check_ok:
|
||||||
raise Exception(u._('Post-setup ssh check failed. {err}')
|
raise Exception(u._('Post-setup ssh check failed. {err}')
|
||||||
.format(err=msg))
|
.format(err=msg))
|
||||||
self.log.info(u._LI('Host ({host}) setup succeeded.')
|
LOG.info(u._LI('Host ({host}) setup succeeded.')
|
||||||
.format(host=hostname))
|
.format(host=hostname))
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise CommandError(
|
raise CommandError(
|
||||||
u._('Host ({host}) setup failed : {error}')
|
u._('Host ({host}) setup failed : {error}')
|
||||||
|
@ -576,7 +575,7 @@ class Inventory(object):
|
||||||
subservice.remove_groupname(groupname)
|
subservice.remove_groupname(groupname)
|
||||||
|
|
||||||
group_vars = os.path.join(get_group_vars_dir(), groupname)
|
group_vars = os.path.join(get_group_vars_dir(), groupname)
|
||||||
if os.path.exists(group_vars) and groupname != '__RESERVED__':
|
if os.path.exists(group_vars) and groupname != '__GLOBAL__':
|
||||||
os.remove(group_vars)
|
os.remove(group_vars)
|
||||||
|
|
||||||
if groupname in self._groups:
|
if groupname in self._groups:
|
||||||
|
@ -822,7 +821,7 @@ class Inventory(object):
|
||||||
|
|
||||||
# temporarily create group containing all hosts. this is needed for
|
# temporarily create group containing all hosts. this is needed for
|
||||||
# ansible commands that are performed on hosts not yet in groups.
|
# ansible commands that are performed on hosts not yet in groups.
|
||||||
group = self.add_group('__RESERVED__')
|
group = self.add_group('__GLOBAL__')
|
||||||
jdict[group.name] = {}
|
jdict[group.name] = {}
|
||||||
jdict[group.name]['hosts'] = deploy_hostnames
|
jdict[group.name]['hosts'] = deploy_hostnames
|
||||||
jdict[group.name]['vars'] = group.get_vars()
|
jdict[group.name]['vars'] = group.get_vars()
|
||||||
|
|
|
@ -22,7 +22,6 @@ from kollacli.common.inventory import Inventory
|
||||||
from kollacli.common.utils import change_property
|
from kollacli.common.utils import change_property
|
||||||
from kollacli.common.utils import get_group_vars_dir
|
from kollacli.common.utils import get_group_vars_dir
|
||||||
from kollacli.common.utils import get_host_vars_dir
|
from kollacli.common.utils import get_host_vars_dir
|
||||||
from kollacli.common.utils import get_kolla_etc
|
|
||||||
from kollacli.common.utils import get_kolla_home
|
from kollacli.common.utils import get_kolla_home
|
||||||
from kollacli.common.utils import sync_read_file
|
from kollacli.common.utils import sync_read_file
|
||||||
from kollacli.exceptions import CommandError
|
from kollacli.exceptions import CommandError
|
||||||
|
@ -30,7 +29,7 @@ from kollacli.exceptions import CommandError
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
ALLVARS_PATH = 'ansible/group_vars/all.yml'
|
ALLVARS_PATH = 'ansible/group_vars/all.yml'
|
||||||
GLOBALS_FILENAME = 'globals.yml'
|
GLOBALS_PATH = 'ansible/group_vars/__GLOBAL__'
|
||||||
ANSIBLE_ROLES_PATH = 'ansible/roles'
|
ANSIBLE_ROLES_PATH = 'ansible/roles'
|
||||||
ANSIBLE_DEFAULTS_PATH = 'defaults/main.yml'
|
ANSIBLE_DEFAULTS_PATH = 'defaults/main.yml'
|
||||||
|
|
||||||
|
@ -41,11 +40,14 @@ class AnsibleProperties(object):
|
||||||
load_hosts=True):
|
load_hosts=True):
|
||||||
"""initialize ansible property information
|
"""initialize ansible property information
|
||||||
|
|
||||||
property information is pulled from the following files:
|
property information is pulled from the following files
|
||||||
KOLLA_ETC/globals.yml
|
(from lowest to highest priority):
|
||||||
KOLLA_ETC/passwords.yml
|
|
||||||
KOLLA_HOME/group_vars/all.yml
|
|
||||||
KOLLA_HOME/ansible/roles/<service>/default/main.yml
|
KOLLA_HOME/ansible/roles/<service>/default/main.yml
|
||||||
|
KOLLA_HOME/ansible/group_vars/all.yml
|
||||||
|
KOLLA_HOME/ansible/group_vars/__GLOBAL__
|
||||||
|
KOLLA_HOME/ansible/group_vars/*
|
||||||
|
KOLLA_HOME/ansible/host_vars/*
|
||||||
|
KOLLA_ETC/passwords.yml
|
||||||
"""
|
"""
|
||||||
self.globals_path = ''
|
self.globals_path = ''
|
||||||
self.global_props = []
|
self.global_props = []
|
||||||
|
@ -93,7 +95,7 @@ class AnsibleProperties(object):
|
||||||
self.unique_global_props[key] = ansible_prop
|
self.unique_global_props[key] = ansible_prop
|
||||||
|
|
||||||
def _load_properties_global(self):
|
def _load_properties_global(self):
|
||||||
self.globals_path = os.path.join(get_kolla_etc(), GLOBALS_FILENAME)
|
self.globals_path = os.path.join(get_kolla_home(), GLOBALS_PATH)
|
||||||
globals_data = sync_read_file(self.globals_path)
|
globals_data = sync_read_file(self.globals_path)
|
||||||
globals_contents = yaml.safe_load(globals_data)
|
globals_contents = yaml.safe_load(globals_data)
|
||||||
for key, value in globals_contents.items():
|
for key, value in globals_contents.items():
|
||||||
|
@ -105,7 +107,7 @@ class AnsibleProperties(object):
|
||||||
override_flags.ovr_global = True
|
override_flags.ovr_global = True
|
||||||
orig_value = self.unique_global_props[key].value
|
orig_value = self.unique_global_props[key].value
|
||||||
ansible_prop = AnsibleProperty(key, value,
|
ansible_prop = AnsibleProperty(key, value,
|
||||||
GLOBALS_FILENAME,
|
'group_vars/__GLOBAL',
|
||||||
overrides, orig_value)
|
overrides, orig_value)
|
||||||
ansible_prop.override_flags = override_flags
|
ansible_prop.override_flags = override_flags
|
||||||
self.global_props.append(ansible_prop)
|
self.global_props.append(ansible_prop)
|
||||||
|
@ -145,8 +147,8 @@ class AnsibleProperties(object):
|
||||||
if (groupfile == 'all.yml'):
|
if (groupfile == 'all.yml'):
|
||||||
continue
|
continue
|
||||||
self.group_props[groupfile] = []
|
self.group_props[groupfile] = []
|
||||||
# don't load __RESERVED__ as a group property list as it is globals
|
# don't load __GLOBAL__ as a group property list as it is globals
|
||||||
if groupfile == '__RESERVED__':
|
if groupfile == '__GLOBAL__':
|
||||||
continue
|
continue
|
||||||
with open(os.path.join(group_dir, groupfile)) as group_data:
|
with open(os.path.join(group_dir, groupfile)) as group_data:
|
||||||
group_contents = yaml.safe_load(group_data)
|
group_contents = yaml.safe_load(group_data)
|
||||||
|
|
|
@ -47,7 +47,6 @@ def dump():
|
||||||
kolla_docs = os.path.join(kolla_home, 'docs')
|
kolla_docs = os.path.join(kolla_home, 'docs')
|
||||||
kolla_etc = get_kolla_etc()
|
kolla_etc = get_kolla_etc()
|
||||||
kolla_config = os.path.join(kolla_etc, 'config')
|
kolla_config = os.path.join(kolla_etc, 'config')
|
||||||
kolla_globals = os.path.join(kolla_etc, 'globals.yml')
|
|
||||||
kollacli_etc = get_kollacli_etc().rstrip('/')
|
kollacli_etc = get_kollacli_etc().rstrip('/')
|
||||||
ketc = 'kolla/etc/'
|
ketc = 'kolla/etc/'
|
||||||
kshare = 'kolla/share/'
|
kshare = 'kolla/share/'
|
||||||
|
@ -66,8 +65,6 @@ def dump():
|
||||||
# file is accessible by the kolla user only (not kolla group)
|
# file is accessible by the kolla user only (not kolla group)
|
||||||
tar.add(kolla_config,
|
tar.add(kolla_config,
|
||||||
arcname=ketc + os.path.basename(kolla_config))
|
arcname=ketc + os.path.basename(kolla_config))
|
||||||
tar.add(kolla_globals,
|
|
||||||
arcname=ketc + os.path.basename(kolla_globals))
|
|
||||||
tar.add(kollacli_etc,
|
tar.add(kollacli_etc,
|
||||||
arcname=ketc + os.path.basename(kollacli_etc))
|
arcname=ketc + os.path.basename(kollacli_etc))
|
||||||
|
|
||||||
|
|
|
@ -269,7 +269,7 @@ def safe_decode(text):
|
||||||
"""Convert bytes or string to unicode string"""
|
"""Convert bytes or string to unicode string"""
|
||||||
try:
|
try:
|
||||||
text = text.decode('utf-8')
|
text = text.decode('utf-8')
|
||||||
except AttributeError:
|
except AttributeError: # nosec
|
||||||
# py3 will raise if text is already a string
|
# py3 will raise if text is already a string
|
||||||
pass
|
pass
|
||||||
return text
|
return text
|
||||||
|
|
|
@ -20,7 +20,6 @@ import unittest
|
||||||
|
|
||||||
from kollacli.common.utils import get_group_vars_dir
|
from kollacli.common.utils import get_group_vars_dir
|
||||||
from kollacli.common.utils import get_host_vars_dir
|
from kollacli.common.utils import get_host_vars_dir
|
||||||
from kollacli.common.utils import get_kolla_etc
|
|
||||||
from kollacli.common.utils import get_kolla_home
|
from kollacli.common.utils import get_kolla_home
|
||||||
|
|
||||||
from kollacli.common.inventory import Inventory
|
from kollacli.common.inventory import Inventory
|
||||||
|
@ -29,7 +28,7 @@ from kollacli.common.inventory import Inventory
|
||||||
class TestFunctional(KollaCliTest):
|
class TestFunctional(KollaCliTest):
|
||||||
|
|
||||||
def test_properties(self):
|
def test_properties(self):
|
||||||
# test globals.yml properties
|
# test global properties
|
||||||
self._properties_test()
|
self._properties_test()
|
||||||
|
|
||||||
# test single group vars
|
# test single group vars
|
||||||
|
@ -146,7 +145,8 @@ class TestFunctional(KollaCliTest):
|
||||||
sizes[path] = [os.path.getsize(path)]
|
sizes[path] = [os.path.getsize(path)]
|
||||||
if not switch:
|
if not switch:
|
||||||
self.run_cli_cmd('property clear %s' % key)
|
self.run_cli_cmd('property clear %s' % key)
|
||||||
path = os.path.join(get_kolla_etc(), 'globals.yml')
|
path = os.path.join(get_kolla_home(),
|
||||||
|
'ansible/group_vars/__GLOBAL__')
|
||||||
sizes[path] = [os.path.getsize(path)]
|
sizes[path] = [os.path.getsize(path)]
|
||||||
|
|
||||||
# test append
|
# test append
|
||||||
|
@ -211,7 +211,7 @@ class TestFunctional(KollaCliTest):
|
||||||
prop['Property Value'] == value):
|
prop['Property Value'] == value):
|
||||||
ok = True
|
ok = True
|
||||||
if not ok:
|
if not ok:
|
||||||
error_msg = '%s:%s is missing in globals.yml'
|
error_msg = '%s:%s is missing in __GLOBAL__'
|
||||||
else:
|
else:
|
||||||
target_map = {}
|
target_map = {}
|
||||||
for target in targets:
|
for target in targets:
|
||||||
|
|
|
@ -46,7 +46,6 @@ class TestFunctional(KollaCliTest):
|
||||||
def test_dump(self):
|
def test_dump(self):
|
||||||
check_files = [
|
check_files = [
|
||||||
'var/log/kolla/kolla.log',
|
'var/log/kolla/kolla.log',
|
||||||
'kolla/etc/globals.yml',
|
|
||||||
'kolla/etc/config/nova/nova-api.conf',
|
'kolla/etc/config/nova/nova-api.conf',
|
||||||
'kolla/etc/kollacli/ansible/inventory.json',
|
'kolla/etc/kollacli/ansible/inventory.json',
|
||||||
'kolla/share/ansible/site.yml',
|
'kolla/share/ansible/site.yml',
|
||||||
|
|
Loading…
Reference in New Issue