def parse_graph(self):
"""
Parse the xml graph file
"""
deviceinfo = {}
deviceroot = self.root.find(self.pngtag).find('Devices')
devices = deviceroot.findall('Device')
if devices is not None:
for dev in devices:
hostname = dev.attrib['Hostname']
if hostname is not None:
deviceinfo[hostname] = {}
hwsku = dev.attrib['HwSku']
devtype = dev.attrib['Type']
deviceinfo[hostname]['HwSku'] = hwsku
deviceinfo[hostname]['Type'] = devtype
self.links[hostname] = {}
devicel2info = {}
devicel3s = self.root.find(self.dpgtag).findall('DevicesL3Info')
devicel2s = self.root.find(self.dpgtag).findall('DevicesL2Info')
if devicel2s is not None:
for l2info in devicel2s:
hostname = l2info.attrib['Hostname']
if hostname is not None:
devicel2info[hostname] = {}
vlans = l2info.findall('InterfaceVlan')
for vlan in vlans:
portname = vlan.attrib['portname']
portmode = vlan.attrib['mode']
portvlanid = vlan.attrib['vlanids']
portvlanlist = self.port_vlanlist(portvlanid)
devicel2info[hostname][portname] = {'mode': portmode, 'vlanids': portvlanid, 'vlanlist': portvlanlist}
if devicel3s is not None:
for l3info in devicel3s:
hostname = l3info.attrib['Hostname']
if hostname is not None:
management_ip = l3info.find('ManagementIPInterface').attrib['Prefix']
deviceinfo[hostname]['ManagementIp'] = management_ip
mgmtip = ipaddress.IPNetwork(management_ip)
deviceinfo[hostname]['mgmtip'] = str(mgmtip.ip)
management_gw = str(mgmtip.network+1)
deviceinfo[hostname]['ManagementGw'] = management_gw
allinks = self.root.find(self.pngtag).find('DeviceInterfaceLinks').findall('DeviceInterfaceLink')
if allinks is not None:
for link in allinks:
start_dev = link.attrib['StartDevice']
end_dev = link.attrib['EndDevice']
if start_dev:
self.links[start_dev][link.attrib['StartPort']] = {'peerdevice':link.attrib['EndDevice'], 'peerport': link.attrib['EndPort']}
if end_dev:
self.links[end_dev][link.attrib['EndPort']] = {'peerdevice': link.attrib['StartDevice'], 'peerport': link.attrib['StartPort']}
self.devices = deviceinfo
self.vlanport = devicel2info
评论列表
文章目录