Commit 95ba3de2 authored by Thibault VINCENT's avatar Thibault VINCENT
Browse files

fix register/unregister calls not received by server

parent b3578f0e
Loading
Loading
Loading
Loading
+11 −6
Original line number Diff line number Diff line
@@ -118,9 +118,9 @@ class NodeHandler(RpcHandler):
            'disk*'     : self._tag_map_helper(self._helper_vm_disk),
        }
        
        # populate the server with running VMs
        # FIXME comment (populate the server with running VMs)
        self._register_vm = []
        self._register_timer = Timer(5.0, self._register)
        self._register()
    
    def __getitem__(self, name):
        '''
@@ -220,13 +220,14 @@ class NodeHandler(RpcHandler):
        return result
    
    def _register(self):
        #FIXME check is we are connected before
        #debug("register: begin")
        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')
                        self._connection.get_server().register(vm, 'vm')
                    except RpcError as e:
                        if e.exception == '#FIXME':
                            self._register_vm.append(vm)
@@ -238,7 +239,7 @@ class NodeHandler(RpcHandler):
            for vm in self._register_vm:
                if vm not in vm_current:
                    try:
                        self._connection.get_server().call('unregister', vm)
                        self._connection.get_server().unregister(vm)
                    except RpcError as e:
                        if e.exception == '#FIXME':
                            vm_current.pop(vm)
@@ -247,9 +248,13 @@ class NodeHandler(RpcHandler):
                    else:
                        vm_current.pop(vm)
        except Exception as e:
            raise e
            pass
        finally:
            #debug("register: finally 1")
            self._register_timer = Timer(1.0, self._register)
            self._register_timer.start()
            #debug("register: finally 2")
        #debug("register: end")
    
    @pure
    def get_tags(self, tags=None, resolve=True):