| 69 | |
| 70 | |
| 71 | class wvmNetwork(wvmConnect): |
| 72 | def __init__(self, host, login, passwd, conn, net): |
| 73 | wvmConnect.__init__(self, host, login, passwd, conn) |
| 74 | self.net = self.get_network(net) |
| 75 | |
| 76 | def get_name(self): |
| 77 | return self.net.name() |
| 78 | |
| 79 | def _XMLDesc(self, flags): |
| 80 | return self.net.XMLDesc(flags) |
| 81 | |
| 82 | def get_autostart(self): |
| 83 | return self.net.autostart() |
| 84 | |
| 85 | def set_autostart(self, value): |
| 86 | self.net.setAutostart(value) |
| 87 | |
| 88 | def is_active(self): |
| 89 | return self.net.isActive() |
| 90 | |
| 91 | def get_uuid(self): |
| 92 | return self.net.UUIDString() |
| 93 | |
| 94 | def get_bridge_device(self): |
| 95 | try: |
| 96 | return self.net.bridgeName() |
| 97 | except: |
| 98 | return None |
| 99 | |
| 100 | def start(self): |
| 101 | self.net.create() |
| 102 | |
| 103 | def stop(self): |
| 104 | self.net.destroy() |
| 105 | |
| 106 | def delete(self): |
| 107 | self.net.undefine() |
| 108 | |
| 109 | def get_ipv4_network(self): |
| 110 | xml = self._XMLDesc(0) |
| 111 | if util.get_xml_path(xml, "/network/ip") is None: |
| 112 | return None |
| 113 | addrStr = util.get_xml_path(xml, "/network/ip/@address") |
| 114 | netmaskStr = util.get_xml_path(xml, "/network/ip/@netmask") |
| 115 | prefix = util.get_xml_path(xml, "/network/ip/@prefix") |
| 116 | |
| 117 | if prefix: |
| 118 | prefix = int(prefix) |
| 119 | binstr = ((prefix * "1") + ((32 - prefix) * "0")) |
| 120 | netmaskStr = str(IP(int(binstr, base=2))) |
| 121 | |
| 122 | if netmaskStr: |
| 123 | netmask = IP(netmaskStr) |
| 124 | gateway = IP(addrStr) |
| 125 | network = IP(gateway.int() & netmask.int()) |
| 126 | ret = IP(str(network) + "/" + netmaskStr) |
| 127 | else: |
| 128 | ret = IP(str(addrStr)) |