| 18 | |
| 19 | |
| 20 | class wvmNetworks(wvmConnect): |
| 21 | def get_networks_info(self): |
| 22 | get_networks = self.get_networks() |
| 23 | networks = [] |
| 24 | for network in get_networks: |
| 25 | net = self.get_network(network) |
| 26 | net_status = net.isActive() |
| 27 | net_bridge = net.bridgeName() |
| 28 | net_forwd = util.get_xml_path(net.XMLDesc(0), "/network/forward/@mode") |
| 29 | networks.append({'name': network, 'status': net_status, |
| 30 | 'device': net_bridge, 'forward': net_forwd}) |
| 31 | return networks |
| 32 | |
| 33 | def define_network(self, xml): |
| 34 | self.wvm.networkDefineXML(xml) |
| 35 | |
| 36 | def create_network(self, name, forward, gateway, mask, dhcp, bridge, openvswitch, fixed=False): |
| 37 | xml = """ |
| 38 | <network> |
| 39 | <name>%s</name>""" % name |
| 40 | if forward in ['nat', 'route', 'bridge']: |
| 41 | xml += """<forward mode='%s'/>""" % forward |
| 42 | xml += """<bridge """ |
| 43 | if forward in ['nat', 'route', 'none']: |
| 44 | xml += """stp='on' delay='0'""" |
| 45 | if forward == 'bridge': |
| 46 | xml += """name='%s'""" % bridge |
| 47 | xml += """/>""" |
| 48 | if openvswitch is True: |
| 49 | xml += """<virtualport type='openvswitch'/>""" |
| 50 | if forward != 'bridge': |
| 51 | xml += """ |
| 52 | <ip address='%s' netmask='%s'>""" % (gateway, mask) |
| 53 | if dhcp: |
| 54 | xml += """<dhcp> |
| 55 | <range start='%s' end='%s' />""" % (dhcp[0], dhcp[1]) |
| 56 | if fixed: |
| 57 | fist_oct = int(dhcp[0].strip().split('.')[3]) |
| 58 | last_oct = int(dhcp[1].strip().split('.')[3]) |
| 59 | for ip in range(fist_oct, last_oct + 1): |
| 60 | xml += """<host mac='%s' ip='%s.%s' />""" % (util.randomMAC(), gateway[:-2], ip) |
| 61 | xml += """</dhcp>""" |
| 62 | |
| 63 | xml += """</ip>""" |
| 64 | xml += """</network>""" |
| 65 | self.define_network(xml) |
| 66 | net = self.get_network(name) |
| 67 | net.create() |
| 68 | net.setAutostart(1) |
| 69 | |
| 70 | |
| 71 | class wvmNetwork(wvmConnect): |