[ovs-discuss] [master integration 3/6] xenserver: Factor out XAPI interactions in interface-reconfigure.

Ben Pfaff blp at nicira.com
Thu Aug 6 21:45:54 UTC 2009


From: Ian Campbell <Ian.Campbell at citrix.com>

Currently interface-reconfigure stores a copy of the XAPI database using
python's pickling functionality. Since the XenServer host installer also needs
to write this file (so it is present after slave upgrade) we would like to
switch to something more explicitly under our control.

Begin by factoring out XAPI interactions.
---
 .../opt_xensource_libexec_interface-reconfigure    |   20 ++++++++++++++++----
 1 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/xenserver/opt_xensource_libexec_interface-reconfigure b/xenserver/opt_xensource_libexec_interface-reconfigure
index 2a32fad..6f2b5bc 100755
--- a/xenserver/opt_xensource_libexec_interface-reconfigure
+++ b/xenserver/opt_xensource_libexec_interface-reconfigure
@@ -249,6 +249,18 @@ def interface_exists(i):
     return os.path.exists("/sys/class/net/" + i)
 
 class DatabaseCache(object):
+    def __get_pif_records_from_xapi(self, session):
+        self.__pifs = session.xenapi.PIF.get_all_records()
+    
+    def __get_vlan_records_from_xapi(self, session):
+        self.__vlans = session.xenapi.VLAN.get_all_records()
+    
+    def __get_bond_records_from_xapi(self, session):
+        self.__bonds = session.xenapi.Bond.get_all_records()
+    
+    def __get_network_records_from_xapi(self, session):
+        self.__networks = session.xenapi.network.get_all_records()
+    
     def __init__(self, session_ref=None, cache_file=None):
         if session_ref and cache_file:
             raise Error("can't specify session reference and cache file")
@@ -263,10 +275,10 @@ class DatabaseCache(object):
                 session._session = session_ref
 
             try:
-                self.__vlans = session.xenapi.VLAN.get_all_records()
-                self.__bonds = session.xenapi.Bond.get_all_records()
-                self.__pifs = session.xenapi.PIF.get_all_records()
-                self.__networks = session.xenapi.network.get_all_records()
+                self.__get_pif_records_from_xapi(session)
+                self.__get_vlan_records_from_xapi(session)
+                self.__get_bond_records_from_xapi(session)
+                self.__get_network_records_from_xapi(session)
             finally:
                 if not session_ref:
                     session.xenapi.session.logout()
-- 
1.6.3.3





More information about the discuss mailing list