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-changelog

[Xen-changelog] [xen-unstable] [XEND] XendVDI saves configuration on cha

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] [XEND] XendVDI saves configuration on change.
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Thu, 02 Nov 2006 22:08:59 +0000
Delivery-date: Thu, 02 Nov 2006 21:42:15 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Alastair Tse <atse@xxxxxxxxxxxxx>
# Node ID 0a8b854697ad77bb16cc87739a89975655086c71
# Parent  91c7ee18c978f7327487b831b9b07428bae80675
[XEND] XendVDI saves configuration on change.

Added a base class called AutoSaveObject that will attempt to call
save_config() if any attribute in the object changes. It isn't
particularly efficient, but we do not expect VDI to change much.

Signed-off-by: Alastair Tse <atse@xxxxxxxxxxxxx>
---
 tools/python/scripts/xapi.py     |   12 ++++++++++++
 tools/python/xen/xend/XendVDI.py |   26 +++++++++++++++++++++++---
 2 files changed, 35 insertions(+), 3 deletions(-)

diff -r 91c7ee18c978 -r 0a8b854697ad tools/python/scripts/xapi.py
--- a/tools/python/scripts/xapi.py      Fri Oct 13 15:13:21 2006 +0100
+++ b/tools/python/scripts/xapi.py      Fri Oct 13 15:34:01 2006 +0100
@@ -37,6 +37,7 @@ COMMANDS = {
     'sr-list':   ('', 'List all SRs'),
     'vbd-create': ('<domname> <pycfg>', 'Create VBD attached to domname'),
     'vdi-list'  : ('', 'List all VDI'),
+    'vdi-rename': ('<vdi_uuid> <new_name>', 'Rename VDI'),
     'vdi-delete': ('<vdi_uuid>', 'Delete VDI'),
     'vif-create': ('<domname> <pycfg>', 'Create VIF attached to domname'),
 
@@ -303,6 +304,17 @@ def xapi_vdi_delete(*args):
     print 'Deleting VDI %s' % vdi_uuid
     result = execute(server.VDI.destroy, session, vdi_uuid)
     print 'Done.'
+
+def xapi_vdi_rename(*args):
+    server, session = _connect()
+    if len(args) < 2:
+        raise OptionError('Not enough arguments')
+
+    vdi_uuid = args[0]
+    vdi_name = args[1]
+    print 'Renaming VDI %s to %s' % (vdi_uuid, vdi_name)
+    result = execute(server.VDI.set_name_label, session, vdi_uuid, vdi_name)
+    print 'Done.'
     
         
 #
diff -r 91c7ee18c978 -r 0a8b854697ad tools/python/xen/xend/XendVDI.py
--- a/tools/python/xen/xend/XendVDI.py  Fri Oct 13 15:13:21 2006 +0100
+++ b/tools/python/xen/xend/XendVDI.py  Fri Oct 13 15:34:01 2006 +0100
@@ -27,7 +27,25 @@ KB = 1024
 KB = 1024
 MB = 1024 * 1024
 
-class XendVDI:
+class AutoSaveObject(object):
+    
+    def __init__(self):
+        self.cfg_path = None
+        self.auto_save = True
+        object
+
+    def save_config(self, cfg_file = None):
+        raise NotImplementedError()
+    
+    def __setattr__(self, name, value):
+        """A very simple way of making sure all attribute changes are
+        flushed to disk.
+        """
+        object.__setattr__(self, name, value)
+        if name != 'auto_save' and getattr(self, 'auto_save', False):
+            self.save_config()
+
+class XendVDI(AutoSaveObject):
     """Generic Xen API compatible VDI representation.
 
     @cvar SAVED_CFG: list of configuration attributes to save.
@@ -60,20 +78,20 @@ class XendVDI:
         self.read_only = False
         self.type = "system"
 
-        self.cfg_path = None
-
     def load_config_dict(self, cfg):
         """Loads configuration into the object from a dict.
 
         @param cfg: configuration dict
         @type  cfg: dict
         """
+        self.auto_save = False
         for key in self.SAVED_CFG:
             if key in cfg:
                 if key in self.SAVED_CFG_INT:
                     setattr(self, key, int(cfg[key]))
                 else:
                     setattr(self, key, cfg[key])
+        self.auto_save = True
 
     def load_config(self, cfg_path):
         """Loads configuration from an XMLRPC parameter format.
@@ -128,10 +146,12 @@ class XendQCOWVDI(XendVDI):
     def __init__(self, uuid, sr_uuid, qcow_path, image_path, cfg_path,
                  vsize, psize):
         XendVDI.__init__(self, uuid, sr_uuid)
+        self.auto_save = False
         self.qcow_path = qcow_path
         self.image_path = image_path
         self.cfg_path = cfg_path
         self.physical_utilisation = psize
         self.virtual_size = vsize
         self.sector_size = 1
+        self.auto_save = True
 

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] [XEND] XendVDI saves configuration on change., Xen patchbot-unstable <=