Merge "Upload check dhcp on network node"
This commit is contained in:
commit
7efce52296
@ -93,3 +93,84 @@ class CheckDHCPonComputeNodes(Lister):
|
||||
['qvb', data['qvb']],
|
||||
['qbr', data['qbr']],
|
||||
['tap', data['tap']]))
|
||||
|
||||
|
||||
class CheckDHCPonNetworkNodes(Lister):
|
||||
"Check DHCP on network nodes."
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
def get_parser(self, prog_name):
|
||||
parser = super(CheckDHCPonNetworkNodes, self).get_parser(prog_name)
|
||||
parser.add_argument('port_id', default='bad',
|
||||
help='ID of port to look up.')
|
||||
parser.add_argument('physical_interface', default='bad',
|
||||
help=('Name of physical interface.'
|
||||
'We catch packets at this interface'))
|
||||
parser.add_argument('network_type', default='vlan',
|
||||
help='Network type, you want to check.')
|
||||
return parser
|
||||
|
||||
def take_action(self, parsed_args):
|
||||
self.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()
|
||||
self.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()
|
||||
self.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()
|
||||
self.log.debug("port ip addr is %s" % port_ip_addr)
|
||||
|
||||
# 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()
|
||||
self.log.debug("port host id is %s" % host_id)
|
||||
|
||||
# setup steth server
|
||||
try:
|
||||
server = utils.setup_server(host_id)
|
||||
self.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
|
||||
self.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)
|
||||
self.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']],
|
||||
['eth0', data['eth0']]))
|
||||
return (['Error Mssage', ' '], [('message', res['message'])])
|
||||
|
@ -39,6 +39,7 @@ COMMAND_V1 = {
|
||||
'check-vlan-interface': agent_api.CheckVlanInterface,
|
||||
'check-iperf': iperf_api.CheckIperf,
|
||||
'check-dhcp-on-comp': dhcp.CheckDHCPonComputeNodes,
|
||||
'check-dhcp-on-network': dhcp.CheckDHCPonNetworkNodes,
|
||||
'print-agents-info': agent_api.PrintAgentsInfo,
|
||||
}
|
||||
|
||||
|
@ -123,3 +123,31 @@ class TestStethClientMethods(unittest.TestCase):
|
||||
'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa',
|
||||
'eth0', 'vlan'])
|
||||
self.assertEqual(self.server.check_dhcp_on_comp.called, True)
|
||||
|
||||
@mock.patch('neutronclient.v2_0.client.Client.show_port')
|
||||
def test_check_dhcp_on_net(self, show_port):
|
||||
show_port.return_value = {
|
||||
'port': {
|
||||
'mac_address': 'aa:bb:cc:dd:ee:ff',
|
||||
'binding:host_id': 'server-9',
|
||||
'network_id': '0912af24-4525-4737-beb7-c77aa14e0567',
|
||||
'fixed_ips': [
|
||||
{
|
||||
'subnet_id': '73b19b70-c469-473a-b589-459524f2c6a6',
|
||||
'ip_address': u'10.0.0.3'
|
||||
}]
|
||||
}
|
||||
}
|
||||
device = "tapaaaaaaaa-aa"
|
||||
msg = device + "No such device exists (SIOCGIFHWADDR: No such device)"
|
||||
check_dhcp_on_net_r = {
|
||||
'message': msg,
|
||||
'code': 1,
|
||||
'data': {}
|
||||
}
|
||||
self.server.check_dhcp_on_net = mock.Mock(
|
||||
return_value=check_dhcp_on_net_r)
|
||||
shell.main(['check-dhcp-on-net',
|
||||
'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa',
|
||||
'eth0', 'vlan'])
|
||||
self.assertEqual(self.server.check_dhcp_on_net.called, True)
|
||||
|
Loading…
x
Reference in New Issue
Block a user