Loading ccnode/ccnode.py +6 −0 Original line number Diff line number Diff line Loading @@ -46,3 +46,9 @@ class CCNode(object): return False else: return True def get_manager(self): return self.manager def get_server(self): return self.server No newline at end of file ccnode/handlers.py +38 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,8 @@ from logging import debug, info from fnmatch import fnmatchcase from exceptions import FeatureNotImplemented from common import LocalHost from threading import Timer from sjrpc.core import RpcError _MOD_KVM = True try: Loading Loading @@ -116,6 +118,10 @@ class NodeHandler(RpcHandler): 'disk*' : self._tag_map_helper(self._helper_vm_disk), } # populate the server with running VMs self._register_vm = [] self._register_timer = Timer(5.0, self._register) def __getitem__(self, name): ''' ''' Loading Loading @@ -213,6 +219,38 @@ class NodeHandler(RpcHandler): result = None return result def _register(self): try: vm_current = self._host_handle.vm_list() for vm in vm_current: if vm not in self._register_vm: try: self._connection.get_server().call('register', vm, 'vm') except RpcError as e: if e.exception == '#FIXME': self._register_vm.append(vm) else: raise e else: self._register_vm.append(vm) for vm in self._register_vm: if vm not in vm_current: try: self._connection.get_server().call('unregister', vm) except RpcError as e: if e.exception == '#FIXME': vm_current.pop(vm) else: raise e else: vm_current.pop(vm) except Exception as e: raise e finally: self._register_timer = Timer(1.0, self._register) @pure def node_tags(self, tags=None): ''' Loading Loading
ccnode/ccnode.py +6 −0 Original line number Diff line number Diff line Loading @@ -46,3 +46,9 @@ class CCNode(object): return False else: return True def get_manager(self): return self.manager def get_server(self): return self.server No newline at end of file
ccnode/handlers.py +38 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,8 @@ from logging import debug, info from fnmatch import fnmatchcase from exceptions import FeatureNotImplemented from common import LocalHost from threading import Timer from sjrpc.core import RpcError _MOD_KVM = True try: Loading Loading @@ -116,6 +118,10 @@ class NodeHandler(RpcHandler): 'disk*' : self._tag_map_helper(self._helper_vm_disk), } # populate the server with running VMs self._register_vm = [] self._register_timer = Timer(5.0, self._register) def __getitem__(self, name): ''' ''' Loading Loading @@ -213,6 +219,38 @@ class NodeHandler(RpcHandler): result = None return result def _register(self): try: vm_current = self._host_handle.vm_list() for vm in vm_current: if vm not in self._register_vm: try: self._connection.get_server().call('register', vm, 'vm') except RpcError as e: if e.exception == '#FIXME': self._register_vm.append(vm) else: raise e else: self._register_vm.append(vm) for vm in self._register_vm: if vm not in vm_current: try: self._connection.get_server().call('unregister', vm) except RpcError as e: if e.exception == '#FIXME': vm_current.pop(vm) else: raise e else: vm_current.pop(vm) except Exception as e: raise e finally: self._register_timer = Timer(1.0, self._register) @pure def node_tags(self, tags=None): ''' Loading