diff options
author | dongwenjuan <dong.wenjuan@zte.com.cn> | 2018-03-19 17:12:03 +0800 |
---|---|---|
committer | dongwenjuan <dong.wenjuan@zte.com.cn> | 2018-03-20 10:33:46 +0800 |
commit | 6bd4e026fca92b281382a3f6b46f7ab7eeb31f45 (patch) | |
tree | 6284dfdbcd651476d72895e8b09d5e420b9b2fa2 /doctor_tests/installer/daisy.py | |
parent | 8dc884e35c1cbfb2181f2bf803e3dc0171cbdbe6 (diff) |
support MCP installer
1.support MCP installer
2.optimize the installer code
JIRA: DOCTOR-121
Change-Id: I8675c2652944575a8f73d0d1e2dafaad5a3e88e3
Signed-off-by: dongwenjuan <dong.wenjuan@zte.com.cn>
Diffstat (limited to 'doctor_tests/installer/daisy.py')
-rw-r--r-- | doctor_tests/installer/daisy.py | 62 |
1 files changed, 10 insertions, 52 deletions
diff --git a/doctor_tests/installer/daisy.py b/doctor_tests/installer/daisy.py index d8b6d863..52ccb7c8 100644 --- a/doctor_tests/installer/daisy.py +++ b/doctor_tests/installer/daisy.py @@ -6,14 +6,6 @@ # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## -import getpass -import grp -import os -import pwd -import stat -import subprocess - -from doctor_tests.common.utils import get_doctor_test_root_dir from doctor_tests.common.utils import SSHClient from doctor_tests.installer.base import BaseInstaller @@ -28,14 +20,12 @@ class DaisyInstaller(BaseInstaller): password='r00tme') self.key_file = None self.controllers = list() - self.servers = list() - self.test_dir = get_doctor_test_root_dir() def setup(self): self.log.info('Setup Daisy installer start......') - self.get_ssh_key_from_installer() - self.get_controller_ips() + self.key_file = self.get_ssh_key_from_installer() + self.controllers = self.get_controller_ips() self.create_flavor() self.setup_stunnel() @@ -44,38 +34,21 @@ class DaisyInstaller(BaseInstaller): server.terminate() def get_ssh_key_from_installer(self): - self.log.info('Get SSH keys from Daisy installer......') - - if self.key_file is not None: - self.log.info('Already have SSH keys from Daisy installer......') - return self.key_file - - ssh_key = '{0}/{1}'.format(self.test_dir, 'instack_key') - self.client.scp('/root/.ssh/id_dsa', ssh_key, method='get') - user = getpass.getuser() - uid = pwd.getpwnam(user).pw_uid - gid = grp.getgrnam(user).gr_gid - os.chown(ssh_key, uid, gid) - os.chmod(ssh_key, stat.S_IREAD) - self.key_file = ssh_key - return self.key_file + key_path = '/root/.ssh/id_dsa' + return self._get_ssh_key(self.client, key_path) def get_controller_ips(self): self.log.info('Get controller ips from Daisy installer......') command = "source daisyrc_admin; " \ "daisy host-list | grep 'CONTROLLER_LB' | cut -d '|' -f 3 " - ret, controllers = self.client.ssh(command) - if ret: - raise Exception('Exec command to get controller ips' - 'in Daisy installer failed' - 'ret=%s, output=%s' % (ret, controllers)) - controller_ips = [] - for controller in controllers: - controller_ips.append(self.get_host_ip_from_hostname(controller)) + controller_names = self._run_cmd_remote(self.client, command) + controllers = \ + [self.get_host_ip_from_hostname(controller) + for controller in controller_names] self.log.info('Get controller_ips:%s from Daisy installer' - % controller_ips) - self.controllers = controller_ips + % controllers) + return controllers def get_host_ip_from_hostname(self, hostname): self.log.info('Get host ip from host name......') @@ -85,18 +58,3 @@ class DaisyInstaller(BaseInstaller): self.log.info('Get host_ip:%s from host_name:%s' % (host_ip, hostname)) return host_ip - - def setup_stunnel(self): - self.log.info('Setup ssh stunnel in controller nodes' - 'in Daisy installer......') - for node_ip in self.controllers: - cmd = ("ssh -o UserKnownHostsFile=/dev/null" - " -o StrictHostKeyChecking=no" - " -i %s %s@%s -R %s:localhost:%s" - " sleep 600 > ssh_tunnel.%s 2>&1 < /dev/null &" - % (self.key_file, self.node_user_name, - node_ip, self.conf.consumer.port, - self.conf.consumer.port, node_ip)) - server = subprocess.Popen(cmd, shell=True) - self.servers.append(server) - server.communicate() |