WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] [PATCH] add a command to get the state of VMs

 
sorry, Ian, I resend the patch and attach it here. thank you very much!
 
 
 
 
Signed-off-by: James (Song Wei) <jsong@xxxxxxxxxx>
 
diff -r b622e411eef8 tools/python/xen/xend/XendDomain.py
--- a/tools/python/xen/xend/XendDomain.py Thu Jun 24 21:56:03 2010 +0100
+++ b/tools/python/xen/xend/XendDomain.py Tue Jun 29 11:06:56 2010 +0800
@@ -250,6 +250,18 @@
         @return: path to config file.
         """
         return os.path.join(self._managed_path(domuuid), CACHED_CONFIG_FILE)
+    def domain_setpauseflag(self, dom, flag=False):
+        try:
+            dominfo = self.domain_lookup_nr(dom)
+            dominfo.paused_by_admin = flag
+        except Exception, err:
+            log.debug("error in in setpauseflag")
+    def domain_getpauseflag(self, dom):
+        try:
+            dominfo = self.domain_lookup_nr(dom)
+            return dominfo.paused_by_admin
+        except Exception, err:
+            log.debug("error in in getpauseflag")
 
     def _managed_check_point_path(self, domuuid):
         """Returns absolute path to check point file for managed domain.
diff -r b622e411eef8 tools/python/xen/xend/XendDomainInfo.py
--- a/tools/python/xen/xend/XendDomainInfo.py Thu Jun 24 21:56:03 2010 +0100
+++ b/tools/python/xen/xend/XendDomainInfo.py Tue Jun 29 11:06:56 2010 +0800
@@ -329,6 +329,8 @@
     @type info: dictionary
     @ivar domid: Domain ID (if VM has started)
     @type domid: int or None
+    @ivar paused_by_admin: Is this Domain paused by command or API
+    @type paused_by_admin: bool
     @ivar guest_bitsize: the bitsize of guest
     @type guest_bitsize: int or None
     @ivar alloc_mem: the memory domain allocated when booting
@@ -392,6 +394,7 @@
             self.domid = domid
         self.guest_bitsize = None
         self.alloc_mem = None
+        self.paused_by_admin = False
 
         maxmem = self.info.get('memory_static_max', 0)
         memory = self.info.get('memory_dynamic_max', 0)
diff -r b622e411eef8 tools/python/xen/xend/server/SrvDomain.py
--- a/tools/python/xen/xend/server/SrvDomain.py Thu Jun 24 21:56:03 2010 +0100
+++ b/tools/python/xen/xend/server/SrvDomain.py Tue Jun 29 11:06:56 2010 +0800
@@ -238,6 +238,20 @@
     def op_reset(self, _, req):
         self.acceptCommand(req)
         return self.xd.domain_reset(self.dom.getName())
+
+    def op_do_get_pauseflag(self, op, req):
+        self.acceptCommand(req)
+        return req.threadRequest(self.do_get_pauseflag, op, req)
+
+    def do_get_pauseflag(self, _, req):
+        return self.xd.domain_getpauseflag(self.dom.getName(), req)
+
+    def op_do_set_pauseflag(self, op, req):
+        self.acceptCommand(req)
+        return req.threadRequest(self.do_set_pauseflag, op, req)
+
+    def do_set_pauseflag(self, _, req):
+        return self.xd.domain_setpauseflag(self.dom.getName(), req)
 
     def op_usb_add(self, op, req):
         self.acceptCommand(req)
diff -r b622e411eef8 tools/python/xen/xm/main.py
--- a/tools/python/xen/xm/main.py Thu Jun 24 21:56:03 2010 +0100
+++ b/tools/python/xen/xm/main.py Tue Jun 29 11:06:56 2010 +0800
@@ -169,6 +169,8 @@
     #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.'),
+    #domstate
+    'domstate'  : ('<domain> ', 'get the state of a domain'),
 
     # device commands
 
@@ -401,6 +403,7 @@
     "uptime",
     "usb-add",
     "usb-del",
+    "domstate",
     "vcpu-set",
     ]
 
@@ -435,6 +438,7 @@
     "uptime",
     "usb-add",
     "usb-del",
+    "domstate",
     "vcpu-list",
     "vcpu-pin",
     "vcpu-set",
@@ -948,7 +952,6 @@
                     return "-"
             state_str = "".join([state_on_off(state)
                                  for state in states])
-           
             dom_rec.update({'name':     dom_rec['name_label'],
                             'memory_actual': int(dom_metrics_rec['memory_actual'])/1024,
                             'vcpus':    dom_metrics_rec['VCPUs_number'],
@@ -1457,8 +1460,10 @@
 
     if serverType == SERVER_XEN_API:
         server.xenapi.VM.pause(get_single_vm(dom))
+        server.xenapi.VM.set_pauseflag(get_single_vm(dom), True)
     else:
         server.xend.domain.pause(dom)
+        server.xend.domain.setpauseflag(dom, True)
 
 def xm_unpause(args):
     arg_check(args, "unpause", 1)
@@ -1466,8 +1471,10 @@
 
     if serverType == SERVER_XEN_API:
         server.xenapi.VM.unpause(get_single_vm(dom))
+        server.xenapi.VM.set_pauseflag(get_single_vm(dom), False)
     else:
         server.xend.domain.unpause(dom)
+        server.xend.domain.setpauseflag(dom, False)
 
 def xm_dump_core(args):
     live = False
@@ -1579,6 +1586,32 @@
     arg_check(args, "usb-add", 2)
     server.xend.domain.usb_add(args[0],args[1])
 
+def xm_domstate(args):
+    arg_check(args, "domstate", 1)
+    (opitons, params) = getopt.gnu_getopt(args, 's',  ['domname='])
+    doms = getDomains(params, 'all')
+    d = parse_doms_info(doms[0])
+    state =  d['state']
+    if state:
+        if   state.find('s') > 0:
+            print 'shutoff' 
+        elif state.find('b') > 0:
+            print 'idle' 
+        elif state.find('d') > 0:
+            print 'shutdown' 
+        elif state.find('r') > 0:
+            print 'running' 
+        elif state.find('c') > 0:
+            print 'crashed'
+        elif state.find('p') > 0:
+            if server.xend.domain.getpauseflag(args[0]):
+                print 'paused by admin'
+            else:
+                print 'paused'
+    else:
+        print 'shutoff'
+    return
+
 def xm_usb_del(args):
     arg_check(args, "usb-del", 2)
     server.xend.domain.usb_del(args[0],args[1])
@@ -3861,6 +3894,8 @@
     #usb
     "usb-add": xm_usb_add,
     "usb-del": xm_usb_del,
+    #domstate
+    "domstate": xm_domstate,
     }
 
 ## The commands supported by a separate argument parser in xend.xm.


>>> Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx> 2010-6-25 22:21 >>>
I wrote:
> James (song wei) writes ("[Xen-devel] [PATCH] add a command to get the state of VMs"):
> > add a command "domstate" to get the state of Vms, which may have one state of
> > {'shutoff', 'idle','shutdown','running','crashed','paused' or 'paused by
> > admin"}.
>
> I'm going to apply this patch, but:

I'm afraid that the patch has been mangled by your email client; it
has been wordwrapped.

Can you submit it again, please ?  If you can't manage to stop your
email program mangling it, try sending it as an attachment (although
if you do this please send a copy in the body of the message too as
otherwise it can be hard for people to review it).

Thanks,
Ian.

Attachment: Add_command_domstate.patch
Description: Text document

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel