[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] Improve xm sched-credit command for inactive managed domains



# HG changeset patch
# User kfraser@xxxxxxxxxxxxxxxxxxxxx
# Date 1183728894 -3600
# Node ID d6078c9423555d7ada248594114ff041893bade6
# Parent  7ac7f147241405af83e7a9d748cf7b01279734fc
Improve xm sched-credit command for inactive managed domains
Allows to change the scheduler parameters of inactive managed domains.
Signed-off-by: Masaki Kanno <kanno.masaki@xxxxxxxxxxxxxx>
---
 tools/python/xen/xend/XendDomain.py |   17 ++++++++++++-----
 tools/python/xen/xm/main.py         |   34 ++++++++++++++++++++++------------
 2 files changed, 34 insertions(+), 17 deletions(-)

diff -r 7ac7f1472414 -r d6078c942355 tools/python/xen/xend/XendDomain.py
--- a/tools/python/xen/xend/XendDomain.py       Fri Jul 06 14:22:59 2007 +0100
+++ b/tools/python/xen/xend/XendDomain.py       Fri Jul 06 14:34:54 2007 +0100
@@ -1399,10 +1399,15 @@ class XendDomain:
         dominfo = self.domain_lookup_nr(domid)
         if not dominfo:
             raise XendInvalidDomain(str(domid))
-        try:
-            return xc.sched_credit_domain_get(dominfo.getDomid())
-        except Exception, ex:
-            raise XendError(str(ex))
+        
+        if dominfo._stateGet() in (DOM_STATE_RUNNING, DOM_STATE_PAUSED):
+            try:
+                return xc.sched_credit_domain_get(dominfo.getDomid())
+            except Exception, ex:
+                raise XendError(str(ex))
+        else:
+            return {'weight' : dominfo.getWeight(),
+                    'cap'    : dominfo.getCap()} 
     
     def domain_sched_credit_set(self, domid, weight = None, cap = None):
         """Set credit scheduler parameters for a domain.
@@ -1436,7 +1441,9 @@ class XendDomain:
             assert type(weight) == int
             assert type(cap) == int
 
-            rc = xc.sched_credit_domain_set(dominfo.getDomid(), weight, cap)
+            rc = 0
+            if dominfo._stateGet() in (DOM_STATE_RUNNING, DOM_STATE_PAUSED):
+                rc = xc.sched_credit_domain_set(dominfo.getDomid(), weight, 
cap)
             if rc == 0:
                 if set_weight:
                     dominfo.setWeight(weight)
diff -r 7ac7f1472414 -r d6078c942355 tools/python/xen/xm/main.py
--- a/tools/python/xen/xm/main.py       Fri Jul 06 14:22:59 2007 +0100
+++ b/tools/python/xen/xm/main.py       Fri Jul 06 14:34:54 2007 +0100
@@ -1529,7 +1529,7 @@ def xm_sched_credit(args):
 
     doms = filter(lambda x : domid_match(domid, x),
                   [parse_doms_info(dom)
-                  for dom in getDomains(None, 'running')])
+                  for dom in getDomains(None, 'all')])
 
     if weight is None and cap is None:
         if domid is not None and doms == []: 
@@ -1545,7 +1545,7 @@ def xm_sched_credit(args):
                         server.xenapi.VM.get_metrics(
                             get_single_vm(d['name'])))
                 else:
-                    info = server.xend.domain.sched_credit_get(d['domid'])
+                    info = server.xend.domain.sched_credit_get(d['name'])
             except xmlrpclib.Fault:
                 pass
 
@@ -1557,8 +1557,8 @@ def xm_sched_credit(args):
             info['cap']    = int(info['cap'])
             
             info['name']  = d['name']
-            info['domid'] = int(d['domid'])
-            print( ("%(name)-32s %(domid)5d %(weight)6d %(cap)4d") % info)
+            info['domid'] = str(d['domid'])
+            print( ("%(name)-32s %(domid)5s %(weight)6d %(cap)4d") % info)
     else:
         if domid is None:
             # place holder for system-wide scheduler parameters
@@ -1566,14 +1566,24 @@ def xm_sched_credit(args):
             usage('sched-credit')
 
         if serverType == SERVER_XEN_API:
-            server.xenapi.VM.add_to_VCPUs_params_live(
-                get_single_vm(domid),
-                "weight",
-                weight)
-            server.xenapi.VM.add_to_VCPUs_params_live(
-                get_single_vm(domid),
-                "cap",
-                cap)            
+            if doms[0]['domid']:
+                server.xenapi.VM.add_to_VCPUs_params_live(
+                    get_single_vm(domid),
+                    "weight",
+                    weight)
+                server.xenapi.VM.add_to_VCPUs_params_live(
+                    get_single_vm(domid),
+                    "cap",
+                    cap)
+            else:
+                server.xenapi.VM.add_to_VCPUs_params(
+                    get_single_vm(domid),
+                    "weight",
+                    weight)
+                server.xenapi.VM.add_to_VCPUs_params(
+                    get_single_vm(domid),
+                    "cap",
+                    cap)
         else:
             result = server.xend.domain.sched_credit_set(domid, weight, cap)
             if result != 0:

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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.