def take_action(self, parsed_args): LOG.debug('Get parsed_args: %s' % parsed_args) server = setup_server(parsed_args.agent) res = server.check_ports_on_br(parsed_args.bridge, [parsed_args.port]) 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()))
def take_action(self, parsed_args): LOG.debug('Get parsed_args: %s' % parsed_args) LOG.debug('Agent is %s' % parsed_args.agent) LOG.debug('Interface is %s' % parsed_args.interface) server = setup_server(parsed_args.agent) res = server.teardown_link(parsed_args.interface) if not res['code']: Logger.log_normal("Delete interface success.") else: Logger.log_fail(res['message'])
def take_action(self, parsed_args): LOG.debug('Get parsed_args: %s' % parsed_args) LOG.debug('Agent is %s' % parsed_args.agent) LOG.debug('Interface is %s' % parsed_args.interface) LOG.debug('Cidr is %s' % parsed_args.cidr) server = setup_server(parsed_args.agent) # Setup Link server.setup_link(parsed_args.interface, parsed_args.cidr) # Get Link info res = server.get_interface(parsed_args.interface) LOG.debug('Response is %s' % res) if res['code'] == 1: Logger.log_fail(res['message']) sys.exit() if res['code'] == 0: return (('Field', 'Value'), ((k, v) for k, v in res['data'].items())) return (['Error Mssage', ' '], [('message', res['message'])])
def take_action(self, parsed_args): LOG.debug('Get parsed_args: %s' % parsed_args) LOG.debug('Agent is %s' % parsed_args.agent) LOG.debug('Interface is %s' % parsed_args.interface) LOG.debug('Vlan_id is %s' % parsed_args.vlan_id) server = setup_server(parsed_args.agent) try: # Setup Link server.add_vlan_to_interface(parsed_args.interface, parsed_args.vlan_id) # Get Link info new_interface = parsed_args.interface + '.' + parsed_args.vlan_id res = server.get_interface(new_interface) LOG.debug('Response is %s' % res) if res['code'] == 1: Logger.log_fail(res['message']) sys.exit() if res['code'] == 0: return (('Field', 'Value'), ((k, v) for k, v in res['data'].items())) except Exception as e: LOG.error('Agent %s return error: %s!' % parsed_args.agent, e) sys.exit()
def take_action(self, parsed_args): LOG.debug('Get parsed_args: %s' % parsed_args) serverA = setup_server(parsed_args.agentA) serverB = setup_server(parsed_args.agentB) interface = parsed_args.interface + '.' + parsed_args.vlan_id # First of all, check the interface existence serverA_interface_existence = serverA.get_interface(interface) serverB_interface_existence = serverB.get_interface(interface) if serverA_interface_existence['code'] == 1: msg = ("Agent: %s has no interface named %s!" "This interface will be created." % (parsed_args.agentA, interface)) Logger.log_fail(msg) resA = serverA.add_vlan_to_interface(parsed_args.interface, parsed_args.vlan_id) LOG.debug('Create interface success for %s' % resA) if serverB_interface_existence['code'] == 1: msg = ("Agent: %s has no interface named %s!" "This interface will be created." % (parsed_args.agentB, interface)) Logger.log_fail(msg) resB = serverB.add_vlan_to_interface(parsed_args.interface, parsed_args.vlan_id) LOG.debug('Create interface success for %s' % resB) # setup link in each agent ipA = SETUP_LINK_IP_PRE + parsed_args.agentA.split('-')[1] + '/24' resA = serverA.setup_link(interface, ipA) LOG.debug('Response is %s' % resA) ipB = SETUP_LINK_IP_PRE + parsed_args.agentB.split('-')[1] + '/24' resB = serverB.setup_link(interface, ipB) LOG.debug('Response is %s' % resB) # ping a agent from exists IP to check connectivity res = serverA.ping(ips=[ipB]) # teardown the interface if steth created it. if serverA_interface_existence['code']: resA = serverA.teardown_link(interface) if serverB_interface_existence['code']: resB = serverB.teardown_link(interface) if res['code'] == 0: Logger.log_normal("Packet loss is %s%%" % res['data'].values()[0]) sys.exit() msg = "Error happens because %s" % res['message'] Logger.log_fail(msg)
def take_action(self, parsed_args): 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, interface=parsed_args.interface) LOG.debug('Response is %s' % res) if res['code'] == 1: Logger.log_fail(res['message']) sys.exit() if res['code'] == 0: return (('Destination', 'Packet Loss (%)'), ((k, v) for k, v in res['data'].items())) return (['Error Mssage', ' '], [('message', res['message'])])
def take_action(self, parsed_args): self.log.debug('Get parsed_args: %s' % parsed_args) server = setup_server(parsed_args.server_agent) client = setup_server(parsed_args.client_agent) iperf_server_pdid = None # setup iperf server res = server.setup_iperf_server(protocol=parsed_args.server_protocol, port=parsed_args.server_port) self.log.debug('Response is %s' % res) if res['code'] != 0: Logger.log_fail(res['message']) sys.exit() if res['code'] == 0: msg = (('Iperf server setup success and runs in ' 'pid:%s') % (res['data']['pid'])) self.log.debug(msg) iperf_server_pdid = res['data']['pid'] if parsed_args.iperf_server_type == MGMT_TYPE or \ parsed_args.iperf_server_type == NET_TYPE or \ parsed_args.iperf_server_type == STORAGE_TYPE: host = utils.get_ip_from_agent(parsed_args.server_agent, parsed_args.iperf_server_type) bandwidth = parsed_args.client_bandwidth # setup iperf client res = self.take_iperf_client(client=client, protocol=parsed_args.client_protocol, host=host, timeout=parsed_args.client_timeout, parallel=parsed_args.client_parallel, bandwidth=bandwidth, port=parsed_args.client_port) self.log.debug('Response is %s' % res) # kill iperf server r = server.teardown_iperf_server(iperf_server_pdid) if r['code'] == 1: Logger.log_fail(r['message']) if r['code'] == 0: msg = (('Iperf server delete success and ' 'pid:%s') % (iperf_server_pdid)) self.log.debug(msg) return (('Field', 'Value'), ((k, v) for k, v in res['data'].items())) elif parsed_args.iperf_server_type == 'others': mgmt_host = MGMT_AGENTS_CONFIG[parsed_args.server_agent] net_host = NET_AGENTS_CONFIG[parsed_args.server_agent] storage_host = STORAGE_AGENTS_CONFIG[parsed_args.server_agent] bandwidth = parsed_args.client_bandwidth mgmt_res = self.take_iperf_client( client=client, protocol=parsed_args.client_protocol, host=mgmt_host, timeout=parsed_args.client_timeout, parallel=parsed_args.client_parallel, bandwidth=bandwidth, port=parsed_args.client_port) msg = ("Start iperf client from MGMT network success. " "Begain network iperf...") Logger.log_normal(msg) net_res = self.take_iperf_client( client=client, protocol=parsed_args.client_protocol, host=net_host, timeout=parsed_args.client_timeout, parallel=parsed_args.client_parallel, bandwidth=bandwidth, port=parsed_args.client_port) msg = ("Start iperf client from NET network success. " "Begain storage iperf...") Logger.log_normal(msg) storage_res = self.take_iperf_client( client=client, protocol=parsed_args.client_protocol, host=storage_host, timeout=parsed_args.client_timeout, parallel=parsed_args.client_parallel, bandwidth=bandwidth, port=parsed_args.client_port) # kill iperf server r = server.teardown_iperf_server(iperf_server_pdid) if r['code'] == 1: Logger.log_fail(r['message']) if r['code'] == 0: msg = (('Iperf server delete success and ' 'pid:%s') % (iperf_server_pdid)) self.log.debug(msg) if mgmt_res['code'] == 0 and \ net_res['code'] == 0 and \ storage_res['code'] == 0: mgmt_data = [(k, v) for k, v in mgmt_res['data'].items()] net_data = [(k, v) for k, v in net_res['data'].items()] storage_data = [(k, v) for k, v in storage_res['data'].items()] return (('Field', 'Value'), [('Mgmt Result', ' ')] + mgmt_data + [('Net Result', ' ')] + net_data + [('Storage Result', ' ')] + storage_data) msg = ("One of start iperf clients error. Please check.") return (['Error Mssage', ' '], [('message', msg)]) else: msg = ("Get unsupport iperf server type: %s. " "Please choose from 'net', 'mgmt', 'storage', 'others'. " % parsed_args.iperf_server_type) Logger.log_fail(msg) sys.exit()
def program_exits_by_invalid_config(): msg = ("Program exits because of invalid config.") Logger.log_high(msg) sys.exit()
import sys from cliff.lister import Lister from steth.stethclient import utils from steth.stethclient.constants import MGMT_TYPE from steth.stethclient.constants import NET_TYPE from steth.stethclient.constants import STORAGE_TYPE from steth.stethclient.utils import Logger from steth.stethclient.utils import setup_server try: from steth.stethclient.constants import MGMT_AGENTS_CONFIG from steth.stethclient.constants import NET_AGENTS_CONFIG from steth.stethclient.constants import STORAGE_AGENTS_CONFIG except: Logger.log_fail("Import configure file fail.") MGMT_AGENTS_CONFIG = NET_AGENTS_CONFIG = STORAGE_AGENTS_CONFIG = { 'agent-64': "127.0.0.1", 'agent-65': "127.0.0.1", } def get_ip_by_hostname(hostname): # TODO(changzhi): DNS resolve return socket.gethostbyname(hostname) class CheckIperf(Lister): "Setup Iperf server in agent" log = logging.getLogger(__name__)