summaryrefslogtreecommitdiffstats
path: root/api/resources/env_action.py
diff options
context:
space:
mode:
Diffstat (limited to 'api/resources/env_action.py')
-rw-r--r--api/resources/env_action.py13
1 files changed, 8 insertions, 5 deletions
diff --git a/api/resources/env_action.py b/api/resources/env_action.py
index 2ea64ef1a..fed987063 100644
--- a/api/resources/env_action.py
+++ b/api/resources/env_action.py
@@ -18,6 +18,7 @@ import uuid
import glob
import yaml
import collections
+from subprocess import PIPE
from six.moves import configparser
from oslo_serialization import jsonutils
@@ -415,10 +416,12 @@ def update_hosts(hosts_ip):
if not isinstance(hosts_ip, dict):
return result_handler(consts.API_ERROR, 'Error, args should be a dict')
LOG.info('Writing hosts: Writing')
- hosts_list = ['\n{} {}'.format(ip, host_name)
- for host_name, ip in hosts_ip.items()]
- LOG.debug('Writing: %s', hosts_list)
- with open(consts.ETC_HOSTS, 'a') as f:
- f.writelines(hosts_list)
+ LOG.debug('Writing: %s', hosts_ip)
+ cmd = ["sudo", "python", "write_hosts.py"]
+ p = subprocess.Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE,
+ cwd = os.path.join(consts.REPOS_DIR, "api/resources"))
+ _, err = p.communicate(jsonutils.dumps(hosts_ip))
+ if p.returncode != 0 :
+ return result_handler(consts.API_ERROR, err)
LOG.info('Writing hosts: Done')
return result_handler(consts.API_SUCCESS, 'success')