add new --predeploy option to host check
Jira-Issue: OPENSTACK-663
This commit is contained in:
parent
ea7f0915dc
commit
301c5d9ed6
@ -168,12 +168,14 @@ class HostList(Lister):
|
|||||||
|
|
||||||
|
|
||||||
class HostCheck(Command):
|
class HostCheck(Command):
|
||||||
"""Check if openstack-kollacli is setup"""
|
"""Check configuration of host(s)"""
|
||||||
|
|
||||||
def get_parser(self, prog_name):
|
def get_parser(self, prog_name):
|
||||||
parser = super(HostCheck, self).get_parser(prog_name)
|
parser = super(HostCheck, self).get_parser(prog_name)
|
||||||
parser.add_argument('hostname', metavar='<hostname>',
|
parser.add_argument('hostname', metavar='<hostname>',
|
||||||
help=u._('Host name or "all"'))
|
help=u._('Host name or "all"'))
|
||||||
|
parser.add_argument('--predeploy', action='store_true',
|
||||||
|
help=u._('Run pre-deploy host checks.'))
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
@ -184,7 +186,29 @@ class HostCheck(Command):
|
|||||||
inventory = Inventory.load()
|
inventory = Inventory.load()
|
||||||
if not inventory.get_host(hostname):
|
if not inventory.get_host(hostname):
|
||||||
_host_not_found(hostname)
|
_host_not_found(hostname)
|
||||||
precheck(hostname)
|
|
||||||
|
if parsed_args.predeploy:
|
||||||
|
# run pre-deploy checks
|
||||||
|
precheck(hostname)
|
||||||
|
else:
|
||||||
|
# run ssh checks
|
||||||
|
all_ok = True
|
||||||
|
hostnames = [hostname]
|
||||||
|
if hostname == 'all':
|
||||||
|
inventory = Inventory.load()
|
||||||
|
hostnames = inventory.get_hostnames()
|
||||||
|
summary = inventory.ssh_check_hosts(hostnames)
|
||||||
|
for hostname, info in summary.items():
|
||||||
|
status = 'success'
|
||||||
|
msg = ''
|
||||||
|
if not info['success']:
|
||||||
|
status = 'failed- '
|
||||||
|
msg = info['msg']
|
||||||
|
all_ok = False
|
||||||
|
LOG.info('Host (%s): %s %s' % (hostname, status, msg))
|
||||||
|
|
||||||
|
if not all_ok:
|
||||||
|
raise CommandError('Host check failed.')
|
||||||
except CommandError as e:
|
except CommandError as e:
|
||||||
raise e
|
raise e
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
@ -496,6 +496,20 @@ class Inventory(object):
|
|||||||
.format(host=hostname, error=str(e)))
|
.format(host=hostname, error=str(e)))
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def ssh_check_hosts(self, hostnames):
|
||||||
|
"""ssh check for hosts
|
||||||
|
|
||||||
|
return {hostname: {'success': True|False,
|
||||||
|
'msg': message}}
|
||||||
|
"""
|
||||||
|
summary = {}
|
||||||
|
for hostname in hostnames:
|
||||||
|
is_ok, msg = self.ssh_check_host(hostname)
|
||||||
|
summary[hostname] = {}
|
||||||
|
summary[hostname]['success'] = is_ok
|
||||||
|
summary[hostname]['msg'] = msg
|
||||||
|
return summary
|
||||||
|
|
||||||
def ssh_check_host(self, hostname):
|
def ssh_check_host(self, hostname):
|
||||||
command_string = '/usr/bin/sudo -u %s %s -vvv ' % \
|
command_string = '/usr/bin/sudo -u %s %s -vvv ' % \
|
||||||
(get_admin_user(), get_ansible_command())
|
(get_admin_user(), get_ansible_command())
|
||||||
|
@ -105,12 +105,8 @@ class TestFunctional(KollaCliTest):
|
|||||||
# setup the host
|
# setup the host
|
||||||
self.run_cli_cmd('host setup %s --insecure %s'
|
self.run_cli_cmd('host setup %s --insecure %s'
|
||||||
% (hostname, pwd))
|
% (hostname, pwd))
|
||||||
msg = self.run_cli_cmd('host check %s' % hostname, True)
|
self.run_cli_cmd('host check %s' % hostname)
|
||||||
self.assertNotIn('ERROR:', msg, 'Check after setup failed on ' +
|
self.run_cli_cmd('host check --predeploy %s' % hostname)
|
||||||
'host: (%s)' % hostname)
|
|
||||||
|
|
||||||
# check again using all
|
|
||||||
self.run_cli_cmd('host check all')
|
|
||||||
|
|
||||||
def test_hosts_setup(self):
|
def test_hosts_setup(self):
|
||||||
"""test multi-host setup"""
|
"""test multi-host setup"""
|
||||||
@ -143,6 +139,7 @@ class TestFunctional(KollaCliTest):
|
|||||||
|
|
||||||
# run check with 'all'
|
# run check with 'all'
|
||||||
self.run_cli_cmd('host check all')
|
self.run_cli_cmd('host check all')
|
||||||
|
self.run_cli_cmd('host check all --predeploy')
|
||||||
|
|
||||||
# failure paths
|
# failure paths
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user