xm,xend: Add commands to hotplug usb devices to hvm guests

Signed-off-by: James Song Wei <jsong@novell.com>
This commit is contained in:
Keir Fraser committed 2009-10-19 10:48:47 +01:00
1 parent c288a6ff89
commit d1c22b7f83
3 files changed
+70

No files matched your search

+39
View File
@@ -1522,6 +1522,45 @@ class XendDomain:
raise XendError("can't write guest state file %s: %s" %
(dst, ex[1]))
def domain_usb_add(self, domid, dev_id):
dominfo = self.domain_lookup_nr(domid)
if not dominfo:
raise XendInvalidDomain(str(domid))
usb = dominfo.info['platform'].get('usb')
if not usb:
raise XendError("Can't add usb device to a guest with usb disabled in configure file")
hvm = dominfo.info.is_hvm()
if not hvm:
raise XendError("Can't add usb device to a non-hvm guest")
if dominfo._stateGet() != DOM_STATE_HALTED:
dominfo.image.signalDeviceModel("usb-add",
"usb-added", dev_id)
else:
log.debug("error: Domain is not running!")
def domain_usb_del(self, domid, dev_id):
dominfo = self.domain_lookup_nr(domid)
if not dominfo:
raise XendInvalidDomain(str(domid))
usb = dominfo.info['platform'].get('usb')
if not usb:
raise XendError("Can't add usb device to a guest with usb disabled in configure file")
hvm = dominfo.info.is_hvm()
if not hvm:
raise XendError("Can't del usb to a non-hvm guest")
if dominfo._stateGet() != DOM_STATE_HALTED:
dominfo.image.signalDeviceModel("usb-del",
"usb-deleted", dev_id)
else:
log.debug("error: Domain is not running!")
def domain_pincpu(self, domid, vcpu, cpumap):
"""Set which cpus vcpu can use
+13
View File
@@ -225,6 +225,19 @@ class SrvDomain(SrvDir):
self.acceptCommand(req)
return self.xd.domain_reset(self.dom.getName())
def op_usb_add(self, op, req):
self.acceptCommand(req)
return req.threadRequest(self.do_usb_add, op, req)
def do_usb_add(self, _, req):
return self.xd.domain_usb_add(self.dom.getName(), req)
def op_usb_del(self, op, req):
self.acceptCommand(req)
return req.threadRequest(self.do_usb_add, op, req)
def do_usb_del(self, _, req):
return self.xd.domain_usb_add(self.dom.getName(), req)
def render_POST(self, req):
return self.perform(req)
+18
View File
@@ -161,6 +161,9 @@ SUBCOMMAND_HELP = {
'vcpu-set' : ('<Domain> <vCPUs>',
'Set the number of active VCPUs for allowed for the'
' domain.'),
#usb
'usb-add' : ('<domain> <[host:bus.addr] [host:vendor_id:product_id]>','Add the usb device to FV VM.'),
'usb-del' : ('<domain> <[host:bus.addr] [host:vendor_id:product_id]>','Delete the usb device to FV VM.'),
# device commands
@@ -351,6 +354,8 @@ common_commands = [
"top",
"unpause",
"uptime",
"usb-add",
"usb-del",
"vcpu-set",
]
@@ -383,6 +388,8 @@ domain_commands = [
"top",
"unpause",
"uptime",
"usb-add",
"usb-del",
"vcpu-list",
"vcpu-pin",
"vcpu-set",
@@ -1474,6 +1481,14 @@ def xm_mem_set(args):
else:
mem_target = int_unit(args[1], 'm')
server.xend.domain.setMemoryTarget(dom, mem_target)
def xm_usb_add(args):
arg_check(args, "usb-add", 2)
server.xend.domain.usb_add(args[0],args[1])
def xm_usb_del(args):
arg_check(args, "usb-del", 2)
server.xend.domain.usb_del(args[0],args[1])
def xm_vcpu_set(args):
arg_check(args, "vcpu-set", 2)
@@ -3312,6 +3327,9 @@ commands = {
"tmem-set": xm_tmem_set,
"tmem-freeable": xm_tmem_freeable_mb,
"tmem-shared-auth": xm_tmem_shared_auth,
#usb
"usb-add": xm_usb_add,
"usb-del": xm_usb_del,
}
## The commands supported by a separate argument parser in xend.xm.
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.