def is_agent_active(self, agent): server = setup_server(agent) try: server.say_hello() return 0 except utils.TimeoutError: # If this agent is down, "Connection timed out" will happen. # So we return 1 to set this agent is down. return 1
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) 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) 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) if not utils.is_uuid_like(parsed_args.port_id): utils.Logger.log_fail("Port id: %s is not like" "uuid." % parsed_args.port_id) sys.exit() # get network_type network_type = parsed_args.network_type if network_type != 'vlan' and network_type != 'vxlan': utils.Logger.log_fail("Network type %s not support!" "Please choose from 'vlan' and 'vxlan'." % network_type) sys.exit() LOG.debug("network_type is %s" % network_type) # get port's address port_mac_address = neutron.get_port_attr(parsed_args.port_id, 'mac_address') if not port_mac_address: utils.Logger.log_fail("Get port mac_address fails." "Please check this port.") sys.exit() LOG.debug("port mac address is %s" % port_mac_address) # get port's host info host_id = neutron.get_port_attr(parsed_args.port_id, 'binding:host_id') if not host_id: utils.Logger.log_fail("Port %s doesn't attach to any vms." % parsed_args.port_id) sys.exit() LOG.debug("port host id is %s" % host_id) # setup steth server try: server = utils.setup_server(host_id) LOG.debug("setup server: %s" % host_id) except: utils.Logger.log_fail("Setup server fail in: %s." % server) sys.exit() # get physical interface name physical_interface = parsed_args.physical_interface LOG.debug("Physical interface is %s" % physical_interface) res = server.check_dhcp_on_comp(port_id=parsed_args.port_id, port_mac=port_mac_address, phy_iface=physical_interface, net_type=network_type) LOG.debug("Response is %s" % res) data = res['data'] return (['Device Name', 'Result'], (['qvo', data['qvo']], ['qvb', data['qvb']], ['qbr', data['qbr']], ['tap', data['tap']]))
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.get_interface(parsed_args.interface) LOG.debug('Response is %s' % res) 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('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) 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): 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) if not utils.is_uuid_like(parsed_args.port_id): utils.Logger.log_fail("Port id: %s is not like" "uuid." % parsed_args.port_id) sys.exit() # get network_type network_type = parsed_args.network_type if network_type != 'vlan' and network_type != 'vxlan': utils.Logger.log_fail("Network type %s not support!" "Please choose from 'vlan' and 'vxlan'." % network_type) sys.exit() LOG.debug("network_type is %s" % network_type) # get port's network_id and ip address port_network_id = neutron.get_port_attr(parsed_args.port_id, 'network_id') if not port_network_id: utils.Logger.log_fail("Get port network_id fails." "Please check this port.") sys.exit() LOG.debug("port network id is %s" % port_network_id) port_ip_addr = neutron.get_port_attr(parsed_args.port_id, 'fixed_ips')[0]['ip_address'] if not port_ip_addr: utils.Logger.log_fail("Get port ip_addr fails." "Please check this port.") sys.exit() LOG.debug("port ip addr is %s" % port_ip_addr) # choose one network agent host_id = neutron.choose_one_network_agent(port_network_id) if not host_id: utils.Logger.log_fail("Network %s has no dhcp services." % port_network_id) sys.exit() LOG.debug("Get host %s" % host_id) # setup steth server try: server = utils.setup_server(host_id) LOG.debug("setup server: %s" % host_id) except: utils.Logger.log_fail("Setup server fail in: %s." % server) sys.exit() # get physical interface name physical_interface = parsed_args.physical_interface LOG.debug("Physical interface is %s" % physical_interface) res = server.check_dhcp_on_net(net_id=port_network_id, port_ip=port_ip_addr, phy_iface=physical_interface, net_type=network_type) LOG.debug("Response is %s" % res) if res['code'] == 0: data = res['data'] return (['Device Name', 'Result'], (['br-int', data['br-int']], ['ovsbr3', data['ovsbr3']], [physical_interface, data[physical_interface]])) 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()