[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-3.4-testing] xm, xend: Add commands to hotplug usb devices to hvm guests
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1256828520 0 # Node ID 4174e32f7c891f51e2f8791389dae63d273ec4ec # Parent d75eedba68848ef82ae5758988e2059ac148f2a1 xm,xend: Add commands to hotplug usb devices to hvm guests Signed-off-by: James Song Wei <jsong@xxxxxxxxxx> xen-unstable changeset: 20332:b84064697e4d xen-unstable date: Mon Oct 19 10:48:47 2009 +0100 --- tools/python/xen/xend/XendDomain.py | 39 ++++++++++++++++++++++++++++++ tools/python/xen/xend/server/SrvDomain.py | 13 ++++++++++ tools/python/xen/xm/main.py | 18 +++++++++++++ 3 files changed, 70 insertions(+) diff -r d75eedba6884 -r 4174e32f7c89 tools/python/xen/xend/XendDomain.py --- a/tools/python/xen/xend/XendDomain.py Thu Oct 29 15:01:37 2009 +0000 +++ b/tools/python/xen/xend/XendDomain.py Thu Oct 29 15:02:00 2009 +0000 @@ -1421,6 +1421,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 diff -r d75eedba6884 -r 4174e32f7c89 tools/python/xen/xend/server/SrvDomain.py --- a/tools/python/xen/xend/server/SrvDomain.py Thu Oct 29 15:01:37 2009 +0000 +++ b/tools/python/xen/xend/server/SrvDomain.py Thu Oct 29 15:02:00 2009 +0000 @@ -224,6 +224,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) diff -r d75eedba6884 -r 4174e32f7c89 tools/python/xen/xm/main.py --- a/tools/python/xen/xm/main.py Thu Oct 29 15:01:37 2009 +0000 +++ b/tools/python/xen/xm/main.py Thu Oct 29 15:02:00 2009 +0000 @@ -160,6 +160,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 @@ -309,6 +312,8 @@ common_commands = [ "top", "unpause", "uptime", + "usb-add", + "usb-del", "vcpu-set", ] @@ -341,6 +346,8 @@ domain_commands = [ "top", "unpause", "uptime", + "usb-add", + "usb-del", "vcpu-list", "vcpu-pin", "vcpu-set", @@ -1420,6 +1427,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) @@ -2903,6 +2918,9 @@ commands = { "scsi-attach": xm_scsi_attach, "scsi-detach": xm_scsi_detach, "scsi-list": xm_scsi_list, + #usb + "usb-add": xm_usb_add, + "usb-del": xm_usb_del, } ## The commands supported by a separate argument parser in xend.xm. _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |