summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dovetail/container.py16
-rw-r--r--dovetail/userconfig/hosts.yaml.sample5
-rw-r--r--dovetail/utils/dovetail_utils.py12
-rw-r--r--requirements.txt1
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