def getStatus(session_id, host_id): """Returns a dictionary describing the status of the host""" # Get some basic info hostname = getHostName(session_id, host_id) hoststatus = getHostStatus(hostname) # Get the host's CFengine status status = getCfengineHostStatus(session_id, hoststatus.host._properties) # Get state information status["reachable"] = hoststatus.reachable status["operating_rev"] = hoststatus.operatingRevision status["operating_rev_status"] = hoststatus.operatingRevisionStatus status["operating_rev_text"] = hoststatus.operatingRevisionText status["operating_rev_hint"] = hoststatus.operatingRevisionHint status["active_rev"] = hoststatus.activeRevision status["generated_rev"] = hoststatus.generatedRevision status["current_load"] = hoststatus.currentLoad status["uptime"] = hoststatus.uptime status["infoUpdatedAt"] = time.strftime("%d/%m/%Y %H:%M:%S", \ time.localtime(hoststatus.infoUpdatedAt)) status["lastCheckedAt"] = time.strftime("%d/%m/%Y %H:%M:%S", \ time.localtime(hoststatus.lastCheckedAt)) return status
def getHostStatusSummary(session_id, host_name): """Returns an overall status for the host""" status = {} try: hoststatus = getHostStatus(host_name) except: status = {"status":STATUS_UNKNOWN,"status_text":"UNKNOWN", \ "status_hint":"No status information available"} return status status["infoUpdatedAt"] = time.strftime("%d/%m/%Y %H:%M:%S", \ time.localtime(hoststatus.infoUpdatedAt)) status["lastCheckedAt"] = time.strftime("%d/%m/%Y %H:%M:%S", \ time.localtime(hoststatus.lastCheckedAt)) status["status"] = STATUS_OK status["status_text"] = "UP" status["status_hint"] = "Last checked at %s" % status["lastCheckedAt"] if not hoststatus.reachable: status["status"] = STATUS_CRITICAL status["status_text"] = "Down" status["status_hint"] = "Not seen since %s" % status["infoUpdatedAt"] return status if hoststatus.operatingRevisionStatus != STATUS_OK: status["status"] = hoststatus.operatingRevisionStatus status["status_text"] = hoststatus.operatingRevisionText status["statux_hint"] = hoststatus.operatingRevisionHint return status cstatus = getCfengineHostStatus(session_id, hoststatus.host._properties) if cstatus["ssh_key_status"] != STATUS_OK: status["status"] = cstatus["ssh_key_status"] status["status_text"] = "SSH Key Error" status["status_hint"] = cstatus["ssh_key_text"] return status if cstatus["cfengine_key_status"] != STATUS_OK: status["status"] = cstatus["cfengine_key_status"] status["status_text"] = "CFengine Key Error" status["status_hint"] = cstatus["cfengine_key_text"] return status return status