/usr/share/virt-manager/virtManager/interface.py is in virt-manager 1:1.3.2-3ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 | #
# Copyright (C) 2009, 2013 Red Hat, Inc.
# Copyright (C) 2009 Cole Robinson <crobinso@redhat.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301 USA.
#
from virtinst import Interface
from .libvirtobject import vmmLibvirtObject
class vmmInterface(vmmLibvirtObject):
def __init__(self, conn, backend, key):
vmmLibvirtObject.__init__(self, conn, backend, key, Interface)
##########################
# Required class methods #
##########################
# Routines from vmmLibvirtObject
def _conn_tick_poll_param(self):
return "polliface"
def class_name(self):
return "interface"
def _XMLDesc(self, flags):
return self._backend.XMLDesc(flags)
def _define(self, xml):
return self.conn.define_interface(xml)
def _check_supports_isactive(self):
return self.conn.check_support(
self.conn.SUPPORT_INTERFACE_ISACTIVE, self._backend)
def _get_backend_status(self):
return self._backend_get_active()
def tick(self, stats_update=True):
ignore = stats_update
self._refresh_status()
def _init_libvirt_state(self):
(self._inactive_xml_flags,
self._active_xml_flags) = self.conn.get_interface_flags(self._backend)
self.tick()
#####################
# Object operations #
#####################
@vmmLibvirtObject.lifecycle_action
def start(self):
self._backend.create(0)
@vmmLibvirtObject.lifecycle_action
def stop(self):
self._backend.destroy(0)
@vmmLibvirtObject.lifecycle_action
def delete(self, force=True):
self._backend.undefine()
################
# XML routines #
################
def get_mac(self):
return self.get_xmlobj().macaddr
def is_bridge(self):
typ = self.get_type()
return typ == "bridge"
def get_type(self):
return self.get_xmlobj().type
def get_pretty_type(self):
itype = self.get_type()
if itype == Interface.INTERFACE_TYPE_VLAN:
return "VLAN"
elif itype:
return str(itype).capitalize()
else:
return "Interface"
def get_startmode(self):
return self.get_xmlobj(inactive=True).start_mode or "none"
def set_startmode(self, newmode):
xmlobj = self._make_xmlobj_to_define()
xmlobj.start_mode = newmode
self._redefine_xmlobj(xmlobj)
def get_slaves(self):
return [[obj.name, obj.type or "Unknown"] for obj in
self.get_xmlobj().interfaces]
def get_slave_names(self):
# Returns a list of names of all enslaved interfaces
return [x[0] for x in self.get_slaves()]
def _get_ip(self, iptype):
obj = self.get_xmlobj()
found = None
for protocol in obj.protocols:
if protocol.family == iptype:
found = protocol
break
if not found:
return None, []
ret = []
for ip in found.ips:
ipstr = ip.address
if not ipstr:
continue
if ip.prefix:
ipstr += "/%s" % ip.prefix
ret.append(ipstr)
return found, ret
def get_ipv4(self):
proto, ips = self._get_ip("ipv4")
if proto is None:
return []
ipstr = None
if ips:
ipstr = ips[0]
return [proto.dhcp, ipstr]
def get_ipv6(self):
proto, ips = self._get_ip("ipv6")
if proto is None:
return []
return [proto.dhcp, proto.autoconf, ips]
def get_protocol_xml(self, inactive=False):
return self.get_xmlobj(inactive=inactive).protocols[:]
|