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] This is a refactored version of a previou

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] This is a refactored version of a previous patch that destroys external
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Tue, 21 Nov 2006 12:01:08 +0000
Delivery-date: Tue, 21 Nov 2006 04:00:57 -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 Ewan Mellor <ewan@xxxxxxxxxxxxx>
# Node ID 00ed59a6f043af31c584c5a78db2a6009f80df51
# Parent  e2d593dd1689f448329302868c2e64934e176236
This is a refactored version of a previous patch that destroys external
devices' state when a VM configuration file is destroyed. Currently only
the vTPM device's state needs to be explicitly destroyed.
I am also surrounding the saving of the managed domain's configuration
with a try-catch.

Signed-off-by: Stefan Berger <stefanb@xxxxxxxxxx>
---
 tools/python/xen/xend/XendAPI.py       |    9 ++++++---
 tools/python/xen/xend/XendConstants.py |    6 ++++++
 tools/python/xen/xend/XendDevices.py   |   10 ++++++++++
 tools/python/xen/xend/XendDomain.py    |    3 ++-
 tools/python/xen/xend/server/tpmif.py  |    8 ++++++--
 5 files changed, 30 insertions(+), 6 deletions(-)

diff -r e2d593dd1689 -r 00ed59a6f043 tools/python/xen/xend/XendAPI.py
--- a/tools/python/xen/xend/XendAPI.py  Tue Nov 21 10:21:00 2006 +0000
+++ b/tools/python/xen/xend/XendAPI.py  Tue Nov 21 10:22:19 2006 +0000
@@ -1391,9 +1391,12 @@ class XendAPI:
         xendom = XendDomain.instance()
         if xendom.is_valid_vm(vtpm_struct['VM']):
             dom = xendom.get_vm_by_uuid(vtpm_struct['VM'])
-            vtpm_ref = dom.create_vtpm(vtpm_struct)
-            xendom.managed_config_save(dom)
-            return xen_api_success(vtpm_ref)
+            try:
+                vtpm_ref = dom.create_vtpm(vtpm_struct)
+                xendom.managed_config_save(dom)
+                return xen_api_success(vtpm_ref)
+            except XendError:
+                return xen_api_error(XEND_ERROR_TODO)
         else:
             return xen_api_error(XEND_ERROR_DOMAIN_INVALID)
 
diff -r e2d593dd1689 -r 00ed59a6f043 tools/python/xen/xend/XendConstants.py
--- a/tools/python/xen/xend/XendConstants.py    Tue Nov 21 10:21:00 2006 +0000
+++ b/tools/python/xen/xend/XendConstants.py    Tue Nov 21 10:22:19 2006 +0000
@@ -89,6 +89,12 @@ DEV_MIGRATE_STEP3 = 3
 DEV_MIGRATE_STEP3 = 3
 
 #
+# VTPM-related constants
+#
+
+VTPM_DELETE_SCRIPT = '/etc/xen/scripts/vtpm-delete'
+
+#
 # Xenstore Constants
 #
 
diff -r e2d593dd1689 -r 00ed59a6f043 tools/python/xen/xend/XendDevices.py
--- a/tools/python/xen/xend/XendDevices.py      Tue Nov 21 10:21:00 2006 +0000
+++ b/tools/python/xen/xend/XendDevices.py      Tue Nov 21 10:22:19 2006 +0000
@@ -71,3 +71,13 @@ class XendDevices:
 
     make_controller = classmethod(make_controller)
 
+    def destroy_device_state(cls, domain):
+        """Destroy the state of (external) devices. This is necessary
+           to do when a VM's configuration is destroyed.
+        
+        @param domain: domain this controller is handling devices for.
+        @type domain: XendDomainInfo
+        """
+        tpmif.destroy_vtpmstate(domain.getName())
+
+    destroy_device_state = classmethod(destroy_device_state)
diff -r e2d593dd1689 -r 00ed59a6f043 tools/python/xen/xend/XendDomain.py
--- a/tools/python/xen/xend/XendDomain.py       Tue Nov 21 10:21:00 2006 +0000
+++ b/tools/python/xen/xend/XendDomain.py       Tue Nov 21 10:22:19 2006 +0000
@@ -37,6 +37,7 @@ from xen.xend.XendLogging import log
 from xen.xend.XendLogging import log
 from xen.xend.XendConstants import XS_VMROOT
 from xen.xend.XendConstants import DOM_STATE_HALTED, DOM_STATE_RUNNING
+from xen.xend.XendDevices import XendDevices
 
 from xen.xend.xenstore.xstransact import xstransact
 from xen.xend.xenstore.xswatch import xswatch
@@ -898,7 +899,7 @@ class XendDomain:
 
                 self._managed_domain_unregister(dominfo)
                 self._remove_domain(dominfo)
-                
+                XendDevices.destroy_device_state(dominfo)
             except Exception, ex:
                 raise XendError(str(ex))
         finally:
diff -r e2d593dd1689 -r 00ed59a6f043 tools/python/xen/xend/server/tpmif.py
--- a/tools/python/xen/xend/server/tpmif.py     Tue Nov 21 10:21:00 2006 +0000
+++ b/tools/python/xen/xend/server/tpmif.py     Tue Nov 21 10:22:19 2006 +0000
@@ -25,13 +25,17 @@ from xen.xend import XendRoot
 from xen.xend import XendRoot
 from xen.xend.XendLogging import log
 from xen.xend.XendError import XendError
-from xen.xend.XendConstants import DEV_MIGRATE_TEST
+from xen.xend.XendConstants import DEV_MIGRATE_TEST, VTPM_DELETE_SCRIPT
 from xen.xend.server.DevController import DevController
 
 import os
 import re
 
 xroot = XendRoot.instance()
+
+def destroy_vtpmstate(name):
+    if os.path.exists(VTPM_DELETE_SCRIPT):
+        os.system(VTPM_DELETE_SCRIPT + " " + name)
 
 class TPMifController(DevController):
     """TPM interface controller. Handles all TPM devices for a domain.
@@ -79,7 +83,7 @@ class TPMifController(DevController):
         if uuid:
             result['uuid'] = uuid
         if type:
-            result['type'] == type
+            result['type'] = type
 
         return result
 

_______________________________________________
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] This is a refactored version of a previous patch that destroys external, Xen patchbot-unstable <=