From c11d733795b9d5b77df0dc775ebaa1d3e1202eed Mon Sep 17 00:00:00 2001 From: changzhi1990 Date: Thu, 24 Mar 2016 14:52:47 +0800 Subject: [PATCH] Fix batch of bugs Change-Id: I9ba66d72b867762bdaac68e10aca8cbd792a913f --- steth/stethclient/agent_api.py | 43 ++++++++++++++------------ steth/stethclient/constants.py | 13 ++++++++ steth/stethclient/drivers/iperf_api.py | 6 ++-- 3 files changed, 40 insertions(+), 22 deletions(-) diff --git a/steth/stethclient/agent_api.py b/steth/stethclient/agent_api.py index 50e88e6..a269859 100644 --- a/steth/stethclient/agent_api.py +++ b/steth/stethclient/agent_api.py @@ -19,6 +19,7 @@ import sys from cliff.command import Command from cliff.lister import Lister +from steth.stethclient import utils from steth.stethclient.utils import Logger from steth.stethclient.utils import setup_server @@ -43,10 +44,11 @@ class TearDownLink(Command): self.log.debug('Agent is %s' % parsed_args.agent) self.log.debug('Interface is %s' % parsed_args.interface) server = setup_server(parsed_args.agent) - try: - res = server.teardown_link(parsed_args.interface) - except Exception as e: - self.log.error('Error %s has occured because: %s' % (res, e)) + res = server.teardown_link(parsed_args.interface) + if not res['code']: + Logger.log_normal("Delete interface success.") + else: + Logger.log_fail(res['message']) class SetUpLink(Lister): @@ -161,6 +163,11 @@ class AgentPing(Lister): self.log.debug('Get parsed_args: %s' % parsed_args) server = setup_server(parsed_args.agent) dest = parsed_args.destination.split(',') + for ip in dest: + if utils.is_ip(ip): + Logger.log_fail("%s is invalid." % ip) + sys.exit() + Logger.log_normal("Ping start...") res = server.ping(ips=dest, count=parsed_args.count, timeout=parsed_args.timeout, @@ -190,22 +197,17 @@ class CheckPortsOnBr(Lister): def take_action(self, parsed_args): self.log.debug('Get parsed_args: %s' % parsed_args) server = setup_server(parsed_args.agent) - try: - res = server.check_ports_on_br(parsed_args.bridge, - [parsed_args.port]) - self.log.debug('Response is %s' % res) - if res['code'] == 1: - Logger.log_fail(res['message']) - sys.exit() - if res['code'] == 0: - return (('Port', 'Exists'), - ((k, v) for k, v in res['data'].items())) - except Exception as e: - self.log.error('Agent %s return error: %s!' % parsed_args.agent, e) + res = server.check_ports_on_br(parsed_args.bridge, + [parsed_args.port]) + self.log.debug('Response is %s' % res) + if res['code']: + Logger.log_fail(res['message']) sys.exit() + return (('Port', 'Is Exist'), + ((k, v) for k, v in res['data'].items())) -class CheckVlanInterface(Lister): +class CheckVlanInterface(Command): """Check vlan if exists in switch""" log = logging.getLogger(__name__) @@ -257,9 +259,10 @@ class CheckVlanInterface(Lister): if serverB_interface_existence['code']: resB = serverB.teardown_link(interface) if res['code'] == 0: - return (('Destination', 'Packet Loss (%)'), - ((k, v) for k, v in res['data'].items())) - return (['Error Mssage', ' '], [('message', res['message'])]) + Logger.log_normal("Packet loss is %s%%" % res['data'].values()[0]) + sys.exit() + msg = "Error happens because %s" % res['message'] + Logger.log_fail(msg) class PrintAgentsInfo(Lister): diff --git a/steth/stethclient/constants.py b/steth/stethclient/constants.py index b17e3ae..ed9dc78 100644 --- a/steth/stethclient/constants.py +++ b/steth/stethclient/constants.py @@ -27,6 +27,17 @@ OPTS = [ help="Prefix of every node."), ] +NEUTRON_CLIENT_OPTS = [ + cfg.StrOpt('username', default='admin', + help='To get neutronclient, you must specify a username'), + cfg.StrOpt('password', default='admin', + help='To get neutronclient, you must specify a password'), + cfg.StrOpt('tenant_name', default='admin', + help='To get neutronclient, you must specify a project'), + cfg.StrOpt('auth_url', default='http://127.0.0.1:5000/v2.0', + help='To get neutronclient, you must specify a auth_url'), +] + MGMT_AGENTS_INFOS = {} NET_AGENTS_INFOS = {} STORAGE_AGENTS_INFOS = {} @@ -43,6 +54,8 @@ def etcdir(*p): steth_config_file = etcdir('steth.conf') cfg.CONF.register_opts(OPTS) +cfg.CONF.register_opts(NEUTRON_CLIENT_OPTS, 'neutron_client') + try: cfg.CONF([], project='steth', default_config_files=['/etc/steth/steth.conf']) diff --git a/steth/stethclient/drivers/iperf_api.py b/steth/stethclient/drivers/iperf_api.py index 04e77f4..8e1d7d9 100644 --- a/steth/stethclient/drivers/iperf_api.py +++ b/steth/stethclient/drivers/iperf_api.py @@ -54,8 +54,10 @@ class CheckIperf(Lister): help='IPERF server will be started at this agent.') parser.add_argument('client_agent', default='bad', help='IPERF client will be started at this agent.') - parser.add_argument('iperf_server_type', default='mgmt', - help='Choose from "mgmt", "net" or "storage".') + parser.add_argument('--iperf_server_type', default='others', + help=("Choose from 'mgmt', 'net' or 'storage'." + "If you want to all of these types, " + "please choose 'others'.")) parser.add_argument('--server_protocol', nargs='?', default='TCP') parser.add_argument('--server_port', nargs='?', default='5001') parser.add_argument('--client_protocol', nargs='?', default='TCP')