def test_8_livestate(self): print "" print "get livestate" # Force authentication ... connection = frontend.login("admin", "admin", force=True) assert_true(frontend.authenticated) assert_true(frontend.token) connection = frontend.connect(username="******") assert_true(frontend.authenticated) assert_true(frontend.connected) print "get livetstate elements" items = frontend.get_livestate(parameters=None) print "Got %d elements" % (len(items)) print items print "get livetstate registered elements" parameters = {"where": '{"register":true}'} items = frontend.get_livestate(parameters=parameters) print "Got %d elements" % (len(items)) print items print "get livetstate hosts" items = frontend.get_livestate_hosts(parameters=None) print "Got %d elements" % (len(items)) print items[0] print "get livetstate registered hosts" parameters = {"where": '{"register":true}'} items = frontend.get_livestate_hosts(parameters=parameters) print "Got %d elements" % (len(items)) print items[0] print "get livetstate services" parameters = {"where": '{"register":true}'} items = frontend.get_livestate_services(parameters=parameters) print "Got %d elements" % (len(items)) print items[0] print "get livetstate registered services" items = frontend.get_livestate_services(parameters=None) print "Got %d elements" % (len(items)) print items[0] # Backend connection frontend.disconnect()
def get_livestate(self, parameters=None): """ Get live state from backend Live state is a list of items with those fields: { "host_name": "56080340f9e3858df8c5f5d1", "service_description": "56080344f9e3858df8c5f6cf", "next_check": 0, "last_state": "CRITICAL", "last_state_type": "HARD", "state": "CRITICAL", "max_attempts": 0, "last_state_changed": 0, "last_check": 1444545805, "state_type": "HARD", "state_id": 0, "current_attempt": 0, "acknowledged": false, "downtime": false, "output": "cd: /root/scenarii/websites: No such file or directory", "long_output": "", "perf_data": "" "_id": "5618fec8f9e385de8c228738", "_links": { "_created": "Sat, 10 Oct 2015 12:04:24 GMT", "self": { "href": "livestate/5618fec8f9e385de8c228738", "title": "Livestate" } }, "_updated": "Sun, 11 Oct 2015 06:43:26 GMT", "_etag": "2512e62ae06f381dca390277a4915fb5c0adaaf4", }, host_name and service_description fields are embedded. Those fields are dictionaries of fields describing an host and a service. :param parameters: search parameters for the backend :type parameters: dict :return: list of livestate elements :rtype: list """ if self.livestate_age and (int(time.time()) - self.livestate_age) <= 60: # logger.debug( # "get_livestate, get livestate from backend, parameters: %s / %s", # parameters, # self.livestate_parameters # ) # if not cmp(self.livestate_parameters, parameters): logger.debug( "get_livestate, return self stored livestate, helper: %s, %d elements", self, len(self.livestate) ) return self.livestate logger.debug("get_livestate, get livestate from backend, parameters: %s", parameters) if not parameters: parameters = {} # self.livestate_parameters = parameters if "embedded" not in parameters: parameters.update({"embedded": '{"host_name": 1, "service_description": 1}'}) if "sort" not in parameters: parameters.update({"sort": 'state_id'}) self.livestate = frontend.get_livestate(parameters=parameters) hosts_ids = {} # Searching for hosts first ... for item in self.livestate: if not item['service_description']: item['type'] = 'host' item['id'] = item['host_name']['host_name'] item['bi'] = item['host_name']['business_impact'] item['name'] = item['host_name']['host_name'] item['friendly_name'] = "" if 'alias' in item['host_name']: if item['host_name']['alias']: item['friendly_name'] = item['host_name']['alias'] if 'display_name' in item['host_name']: if item['host_name']['display_name']: item['friendly_name'] = item['host_name']['display_name'] # Build an hosts cache ... if not item['host_name']['_id'] in hosts_ids: hosts_ids[item['host_name']['_id']] = item['host_name']['host_name'] # Searching for services next ... for item in self.livestate: if item['service_description']: item['type'] = 'service' item['id'] = item['service_description']['service_description'] item['bi'] = item['service_description']['business_impact'] item['name'] = "%s/%s" % ( hosts_ids[item['service_description']['host_name']], item['service_description']['service_description'] ) item['friendly_name'] = "" if 'alias' in item['service_description']: if item['service_description']['alias']: item['friendly_name'] = item['service_description']['alias'] if 'display_name' in item['service_description']: if item['service_description']['display_name']: item['friendly_name'] = item['service_description']['display_name'] self.livestate_age = int(time.time()) return self.livestate