@@ -773,19 +773,23 @@ def getrootdevID():
773773
774774
775775class APISession (contextlib .AbstractContextManager ):
776+ session = None
777+
776778 def __init__ (self , originator = "SM" ):
777779 self .originator = originator
778780 # First acquire a valid session
779781 self .session = self ._login ()
780- SMlog ("APISession [{}] login" .format (self .originator ), priority = LOG_DEBUG )
781782 atexit .register (self ._atexit )
782783
783784 def _login (self ):
785+ if self .session :
786+ return self .session
784787 session = XenAPI .xapi_local ()
785788 try :
786789 session .xenapi .login_with_password ('root' , '' , '' , self .originator )
787790 except Exception as exc :
788791 raise xs_errors .XenError (f"APISession [{ self .originator } ] Unable to open local XAPI session" ) from exc
792+ SMlog ("APISession [{}] login" .format (self .originator ), priority = LOG_DEBUG )
789793 return session
790794
791795 def _logout (self , log ):
@@ -810,8 +814,7 @@ def _atexit(self):
810814
811815 @override
812816 def __enter__ (self ):
813- if not self .session :
814- raise SyntaxError ("Session is already closed: wrong usage of context." )
817+ self .session = self ._login ()
815818 return self .session
816819
817820 @override
@@ -1488,7 +1491,7 @@ def is_active(self, name):
14881491 return os .path .exists ("/tmp/fist_%s" % name )
14891492
14901493 def mark_sr (self , name , sruuid , started ):
1491- with APISession ("SM-util-FistPoint-mark_sr " ) as session :
1494+ with APISession ("SM-sr-fist-point " ) as session :
14921495 sr = session .xenapi .SR .get_by_uuid (sruuid )
14931496 if started :
14941497 session .xenapi .SR .add_to_other_config (sr , name , "active" )
0 commit comments