예제 #1
0
 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
예제 #2
0
 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()))
예제 #3
0
 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
예제 #4
0
    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)
예제 #5
0
    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)
예제 #6
0
 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'])
예제 #7
0
 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'])
예제 #8
0
파일: dhcp.py 프로젝트: openstack/steth
    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']]))
예제 #9
0
 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'])])
예제 #10
0
 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'])])
예제 #11
0
 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()))
예제 #12
0
    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']]))
예제 #13
0
 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'])])
예제 #14
0
 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'])])
예제 #15
0
 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'])])
예제 #16
0
 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'])])
예제 #17
0
 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()
예제 #18
0
 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()
예제 #19
0
파일: dhcp.py 프로젝트: openstack/steth
    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'])])
예제 #20
0
    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'])])
예제 #21
0
 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()
예제 #22
0
 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()