71
72
device_from_node = staticmethod(device_from_node)
73
def __init__(self, conn, nodedev):
74
def __init__(self, conn, nodedev=None,
75
parsexml=None, parsexmlnode=None, caps=None):
75
77
@param conn: Connection the device/guest will be installed on
76
78
@type conn: libvirt.virConnect
78
80
attached to the guest
79
81
@type nodedev: L{virtinst.NodeDeviceParser.NodeDevice}
81
VirtualDevice.VirtualDevice.__init__(self, conn)
83
VirtualDevice.VirtualDevice.__init__(self, conn, parsexml,
89
self._nodedev = nodedev
86
101
self.managed = True
87
102
if _util.get_uri_driver(self.conn.getURI()).lower() == "xen":
88
103
self.managed = False
90
self._nodedev = nodedev
108
def set_mode(self, val):
110
mode = _xml_property(get_mode, set_mode,
115
def set_type(self, val):
117
type = _xml_property(get_type, set_type,
120
def get_managed(self):
122
def set_managed(self, val):
123
self._managed = bool(val)
124
managed = _xml_property(get_type, set_type,
125
get_converter=lambda s, x: bool(x == "yes"),
126
set_converter=lambda s, x: x and "yes" or "no",
129
def get_vendor(self):
131
def set_vendor(self, val):
133
vendor = _xml_property(get_vendor, set_vendor,
134
xpath="./source/vendor/@id")
136
def get_product(self):
138
def set_product(self, val):
140
product = _xml_property(get_product, set_product,
141
xpath="./source/product/@id")
143
def get_device(self):
145
def set_device(self, val):
147
device = _xml_property(get_device, set_device,
148
xpath="./source/address/@device")
152
def set_bus(self, val):
154
bus = _xml_property(get_bus, set_bus,
155
xpath="./source/address/@bus")
157
def get_function(self):
158
return self._function
159
def set_function(self, val):
161
function = _xml_property(get_function, set_function,
162
xpath="./source/address/@function")
164
def get_domain(self):
166
def set_domain(self, val):
168
domain = _xml_property(get_domain, set_domain,
169
xpath="./source/address/@domain")
173
def set_slot(self, val):
175
slot = _xml_property(get_slot, set_slot,
176
xpath="./source/address/@slot")
92
178
def _get_source_xml(self):
93
179
raise NotImplementedError("Must be implemented in subclass")
95
def setup(self, conn = None):
181
def setup(self, conn=None):
97
183
Perform DeviceDetach and DeviceReset calls if necessary
102
188
raise NotImplementedError
104
def get_xml_config(self):
105
xml = (" <hostdev mode='%s' type='%s' managed='%s'>\n" % \
190
def _get_xml_config(self):
191
xml = (" <hostdev mode='%s' type='%s' managed='%s'>\n" % \
106
192
(self.mode, self.type, self.managed and "yes" or "no"))
107
193
xml += " <source>\n"
108
194
xml += self._get_source_xml()