def update_redis_uve_list(self, redis_uve_list): newlist = set(redis_uve_list) chg = False # if some redis instances are gone, remove them from our map for test_elem in self._redis_uve_map.keys(): if test_elem not in newlist: chg = True r_ip = test_elem[0] r_port = test_elem[1] del self._redis_uve_map[test_elem] ConnectionState.delete(ConnectionType.REDIS_UVE,\ r_ip+":"+str(r_port)) # new redis instances need to be inserted into the map for test_elem in newlist: if test_elem not in self._redis_uve_map: chg = True r_ip = test_elem[0] r_port = test_elem[1] self._redis_uve_map[test_elem] = None ConnectionState.update(ConnectionType.REDIS_UVE,\ r_ip+":"+str(r_port), ConnectionStatus.INIT) if chg: self._logger.error("updated redis_uve_list %s" % str(self._redis_uve_map)) # Exercise redis connections to update health if len(newlist): self.get_uve("ObjectCollectorInfo:__NONE__", False, None)
def update_redis_uve_list(self, redis_uve_list): newlist = set(redis_uve_list) chg = False # if some redis instances are gone, remove them from our map for test_elem in self._redis_uve_map.keys(): if test_elem not in newlist: chg = True r_ip = test_elem[0] r_port = test_elem[1] del self._redis_uve_map[test_elem] ConnectionState.delete(ConnectionType.REDIS_UVE,\ r_ip+":"+str(r_port)) # new redis instances need to be inserted into the map for test_elem in newlist: if test_elem not in self._redis_uve_map: chg = True r_ip = test_elem[0] r_port = test_elem[1] self._redis_uve_map[test_elem] = None ConnectionState.update(ConnectionType.REDIS_UVE,\ r_ip+":"+str(r_port), ConnectionStatus.INIT) if chg: self._logger.error("updated redis_uve_list %s" % str(self._redis_uve_map)) # Exercise redis connections to update health if len(newlist): self.get_uve("ObjectCollectorInfo:__NONE__", False, None)
def run(self): exitrun = False while not exitrun: for rkey in self._redis_uve_map.keys(): rinst = self._redis_uve_map[rkey] old_pid = rinst.collector_pid try: # check if it is marked as deleted during sighup handling if rinst.deleted == True: r_ip = rkey[0] r_port = rkey[1] del self._redis_uve_map[rkey] ConnectionState.delete(ConnectionType.REDIS_UVE,\ r_ip+":"+str(r_port)) continue if rinst.redis_handle is None: rinst.redis_handle = StrictRedisWrapper( host=rkey.ip, port=rkey.port, password=self._redis_password, db=1, socket_timeout=30) rinst.collector_pid = None # check for known collector pid string # if there's a mismatch, we must read it again if rinst.collector_pid is not None: if not rinst.redis_handle.sismember( "NGENERATORS", rinst.collector_pid): rinst.collector_pid = None # read the collector pid string if rinst.collector_pid is None: for gen in rinst.redis_handle.smembers("NGENERATORS"): module = gen.split(':')[2] if module == "contrail-collector": rinst.collector_pid = gen except gevent.GreenletExit: self._logger.error('UVEServer Exiting on gevent-kill') exitrun = True break except Exception as e: self._logger.error("redis/collector healthcheck failed %s for %s" \ % (str(e), str(rkey))) rinst.redis_handle = None rinst.collector_pid = None finally: # Update redis/collector health if old_pid is None and rinst.collector_pid is not None: ConnectionState.update(ConnectionType.REDIS_UVE,\ rkey.ip + ":" + str(rkey.port), ConnectionStatus.UP, [rkey.ip+":"+str(rkey.port)]) if old_pid is not None and rinst.collector_pid is None: ConnectionState.update(ConnectionType.REDIS_UVE,\ rkey.ip + ":" + str(rkey.port), ConnectionStatus.DOWN, [rkey.ip+":"+str(rkey.port)]) if not exitrun: gevent.sleep(self._freq)
def run(self): exitrun = False while not exitrun: for rkey in self._redis_uve_map.keys(): rinst = self._redis_uve_map[rkey] old_pid = rinst.collector_pid try: # check if it is marked as deleted during sighup handling if rinst.deleted == True: r_ip = rkey[0] r_port = rkey[1] del self._redis_uve_map[rkey] ConnectionState.delete(ConnectionType.REDIS_UVE,\ r_ip+":"+str(r_port)) continue if rinst.redis_handle is None: rinst.redis_handle = StrictRedisWrapper( host=rkey.ip, port=rkey.port, password=self._redis_password, db=1, socket_timeout=30) rinst.collector_pid = None # check for known collector pid string # if there's a mismatch, we must read it again if rinst.collector_pid is not None: if not rinst.redis_handle.sismember("NGENERATORS", rinst.collector_pid): rinst.collector_pid = None # read the collector pid string if rinst.collector_pid is None: for gen in rinst.redis_handle.smembers("NGENERATORS"): module = gen.split(':')[2] if module == "contrail-collector": rinst.collector_pid = gen except gevent.GreenletExit: self._logger.error('UVEServer Exiting on gevent-kill') exitrun = True break except Exception as e: self._logger.error("redis/collector healthcheck failed %s for %s" \ % (str(e), str(rkey))) rinst.redis_handle = None rinst.collector_pid = None finally: # Update redis/collector health if old_pid is None and rinst.collector_pid is not None: ConnectionState.update(ConnectionType.REDIS_UVE,\ rkey.ip + ":" + str(rkey.port), ConnectionStatus.UP, [rkey.ip+":"+str(rkey.port)]) if old_pid is not None and rinst.collector_pid is None: ConnectionState.update(ConnectionType.REDIS_UVE,\ rkey.ip + ":" + str(rkey.port), ConnectionStatus.DOWN, [rkey.ip+":"+str(rkey.port)]) if not exitrun: gevent.sleep(self._freq)
def update_redis_uve_list(self, redis_uve_list): newlist = set(redis_uve_list) # if some redis instances are gone, remove them from our map for test_elem in self._redis_uve_map.keys(): if test_elem not in newlist: r_ip = test_elem[0] r_port = test_elem[1] del self._redis_uve_map[test_elem] ConnectionState.delete(ConnectionType.REDIS_UVE,\ r_ip+":"+str(r_port)) # new redis instances need to be inserted into the map for test_elem in newlist: if test_elem not in self._redis_uve_map: r_ip = test_elem[0] r_port = test_elem[1] self._redis_uve_map[test_elem] = None ConnectionState.update(ConnectionType.REDIS_UVE,\ r_ip+":"+str(r_port), ConnectionStatus.INIT) # Exercise redis connections to update health if len(newlist): self.get_uve_list("ObjectCollectorInfo")
def update_redis_uve_list(self, redis_uve_list): newlist = set(redis_uve_list) # if some redis instances are gone, remove them from our map for test_elem in self._redis_uve_map.keys(): if test_elem not in newlist: r_ip = test_elem[0] r_port = test_elem[1] del self._redis_uve_map[test_elem] ConnectionState.delete(ConnectionType.REDIS_UVE,\ r_ip+":"+str(r_port)) # new redis instances need to be inserted into the map for test_elem in newlist: if test_elem not in self._redis_uve_map: r_ip = test_elem[0] r_port = test_elem[1] self._redis_uve_map[test_elem] = None ConnectionState.update(ConnectionType.REDIS_UVE,\ r_ip+":"+str(r_port), ConnectionStatus.INIT) # Exercise redis connections to update health if len(newlist): self.get_uve_list("ObjectCollectorInfo")
def run(self): exitrun = False while not exitrun: for rkey in list(self._redis_uve_map.keys()): rinst = self._redis_uve_map[rkey] old_pid = rinst.collector_pid try: # check if it is marked as deleted during sighup handling if rinst.deleted == True: r_ip = rkey[0] r_port = rkey[1] del self._redis_uve_map[rkey] ConnectionState.delete(ConnectionType.REDIS_UVE,\ r_ip+":"+str(r_port)) continue if rinst.redis_handle is None: rinst.redis_handle = StrictRedisWrapper( host=rkey.ip, port=rkey.port, password=self._redis_password, db=1, socket_timeout=30, **self._redis_ssl_params) rinst.collector_pid = None # check for known collector pid string # if there's a mismatch, we must read it again if rinst.collector_pid is not None: if not rinst.redis_handle.sismember( "NGENERATORS", rinst.collector_pid): rinst.collector_pid = None # read the collector pid string if rinst.collector_pid is None: for gen in rinst.redis_handle.smembers("NGENERATORS"): module = convert_to_string(gen).split(':')[2] if module == "contrail-collector": rinst.collector_pid = gen except gevent.GreenletExit: self._logger.error('UVEServer Exiting on gevent-kill') exitrun = True break except Exception as e: self._logger.debug("redis/collector healthcheck failed %s for %s" \ % (str(e), str(rkey))) rinst.redis_handle = None rinst.collector_pid = None finally: # Update redis/collector health ''' when rinst.redis_handle is none, redis down when rkey.ip not in collectors, collector down if redis and collector are up or down, state should be up if redis is up, state should be up if redis is down but collector is up, the state shoue be down ''' if rkey in list(self._redis_uve_map.keys()): if rinst.redis_handle is None: if rkey.ip != '127.0.0.1': rkey_fqdn = socket.getfqdn(rkey.ip) else: rkey_fqdn = socket.getfqdn() if (self._active_collectors is not None and rkey_fqdn not in self._active_collectors): ConnectionState.update(ConnectionType.REDIS_UVE,\ rkey.ip + ":" + str(rkey.port), ConnectionStatus.UP, [rkey.ip+":"+str(rkey.port)],"Redis Instance is Up") else: ConnectionState.update(ConnectionType.REDIS_UVE,\ rkey.ip + ":" + str(rkey.port), ConnectionStatus.DOWN, [rkey.ip+":"+str(rkey.port)],"Redis Instance is Down") else: ConnectionState.update(ConnectionType.REDIS_UVE,\ rkey.ip + ":" + str(rkey.port), ConnectionStatus.UP, [rkey.ip+":"+str(rkey.port)]) if not exitrun: gevent.sleep(self._freq)
def _delete_conn_state(self, name, vcinfos): self._expected_vcinfos = vcinfos ConnectionState.delete(ConnectionType.TEST, name)
def _delete_conn_state(self, name, vcinfos): self._expected_vcinfos = vcinfos ConnectionState.delete(ConnectionType.TEST, name)