diff options
-rw-r--r-- | dovetail/container.py | 16 | ||||
-rw-r--r-- | dovetail/userconfig/hosts.yaml.sample | 5 | ||||
-rw-r--r-- | dovetail/utils/dovetail_utils.py | 12 | ||||
-rw-r--r-- | requirements.txt | 1 |
4 files changed, 23 insertions, 11 deletions
diff --git a/dovetail/container.py b/dovetail/container.py index e8840de3..e1191094 100644 --- a/dovetail/container.py +++ b/dovetail/container.py @@ -167,13 +167,15 @@ class Container(object): 'hosts.yaml') if os.path.isfile(hosts_config_file): with open(hosts_config_file) as f: - hosts_info = yaml.safe_load(f) - if hosts_info['hosts_info']: - for host in hosts_info['hosts_info']: - dt_utils.add_hosts_info(host) - hosts_config += " --add-host " - hosts_config += str(host) - cls.logger.debug('Get hosts info {}.'.format(host)) + hosts_yaml = yaml.safe_load(f) + if hosts_yaml['hosts_info']: + for ip, hostnames in hosts_yaml['hosts_info'].iteritems(): + dt_utils.add_hosts_info(ip, hostnames) + names_str = ' '.join(hostname for hostname in hostnames) + hosts_config += ' --add-host=\'{}\':{} '.format(names_str, + ip) + cls.logger.debug('Get hosts info {}:{}.'.format(ip, + names_str)) config = "" if type.lower() == "functest": diff --git a/dovetail/userconfig/hosts.yaml.sample b/dovetail/userconfig/hosts.yaml.sample index e4687dfb..45f8db3e 100644 --- a/dovetail/userconfig/hosts.yaml.sample +++ b/dovetail/userconfig/hosts.yaml.sample @@ -1,2 +1,7 @@ --- hosts_info: + 192.168.141.101: + - ha-vip + <ip>: + - <hostname1> + - <hostname2> diff --git a/dovetail/utils/dovetail_utils.py b/dovetail/utils/dovetail_utils.py index 99d44484..87efa507 100644 --- a/dovetail/utils/dovetail_utils.py +++ b/dovetail/utils/dovetail_utils.py @@ -19,6 +19,7 @@ import urllib2 from datetime import datetime from distutils.version import LooseVersion import yaml +import python_hosts from dovetail_config import DovetailConfig as dt_cfg @@ -214,10 +215,13 @@ def check_docker_version(logger=None): "Docker client should be updated to at least 1.12.3.") -def add_hosts_info(hosts_info): - hosts_file = '/etc/hosts' - with open(hosts_file, 'a') as f: - f.write("{}\n".format(hosts_info)) +def add_hosts_info(ip, hostnames): + hosts = python_hosts.Hosts(path='/etc/hosts') + new_entry = python_hosts.HostsEntry(entry_type='ipv4', + address=ip, + names=hostnames) + hosts.add([new_entry]) + hosts.write() def get_hardware_info(logger=None): diff --git a/requirements.txt b/requirements.txt index 9eaaf3c3..58da19e6 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,3 +9,4 @@ python-openstackclient==3.9.0 requests==2.10.0 six==1.10.0 stevedore==1.20.0 +python-hosts==0.4.1
\ No newline at end of file |