Example #1
0
 def initialize(self, result=None):
     self.rescan_sched = 0
     # if we don't have a token, we need to get one
     if not self.masterLoginToken:
         log.info('Initializing opsview node %s' % self.name)
         d = self.loginMaster()
         return d.addCallback(self.initialize).addErrback(self.onInitErr)
     else:
         self.creds = {'X-Opsview-Username': self.login, 'X-Opsview-Token': self.masterLoginToken}
         d = rest_api.getInfo(self.uri, 'rest/status/service', headers=self.creds, timeout=loginTimeout)
         return d.addCallbacks(self.addServices,self.onInitErr)
Example #2
0
 def get_auth_tkt(result):
     def onTktSuccess(result, token_result):
         log.debug('got token result: %s' % token_result)
         log.debug('got auth_tkt response for %s: %s' % (self.name, cj))
         return token_result, cj
     def onTktFail(reason, token_result):
         log.debug('got token result')
         log.debug(token_result)
         log.error('auth_tkt request failed')
         log.error(reason)
         return False, token_result
     token_result = result
     cj = {}
     headers = []
     cj['auth_tkt'] = self._makeTicket(userid=username, remote_addr=local_ip)
     log.debug('requesting web auth with ticket: %s' % cj)
     #d = web_client.getPage(self.uri, headers, method='GET', cookies=cj)
     d = rest_api.getInfo(self.uri, '', headers, cookies=cj, timeout=loginTimeout)
     d.addCallback(onTktSuccess, token_result).addErrback(onTktFail, token_result)
     return d
Example #3
0
 def _fetchRestData(self, uri, api_tool, h_s_m, headers, cookies, timeout, reqStart, reqEnd, retry=0, returnData=True, missStart=None, missEnd=None):
     def onSuccess(result, reqStart, reqEnd):
         #we got back a result from our data fetch request - add it to our cache and set our timestamp
         #return the result to the calling function
         log.debug('got metric api request back')
         return self._cacheAndReturnData(result, reqStart, reqEnd, returnData)
     def onFailure(result, uri=None, api_tool=None, headers=None, cookies=None, reqStart=None, reqEnd=None, timeout=dataTimeout, retry=0, returnData=True, missStart=None, missEnd=None):
         #trap possible errors here
         l = result.trap(rest_api.ApiError, defer.CancelledError)
         if l == rest_api.ApiError:
             retry += 1
             if uri:
                 if retry < 3:
                     log.debug('got api error, retrying')
                     return self.fetchRestData(uri, api_tool, headers, cookies, reqStart, reqEnd, timeout, retry=retry, returnData=returnData, missStart=missStart, missEnd=missEnd)
                 else:
                     log.debug('too many retries')
                     return result
             else:
                 log.debug ('missing uri')
                 return result
         elif l == defer.CancelledError:
             log.debug('got timeout error')
             return result
         else:
             log.debug('got error: %s' % result)
             return result
     if missStart is not None:
         fetchStart = missStart
     else:
         fetchStart = reqStart
     if missEnd is not None:
         fetchEnd = missEnd
     else:
         fetchEnd = reqEnd
     url = '%s?hsm=%s&start=%s&end=%s' % (api_tool, urllib.quote_plus(h_s_m), fetchStart, fetchEnd)
     log.debug('requesting %s from %s' % (url, uri))        
     d = rest_api.getInfo(uri, str(url), headers=headers, cookies=cookies, timeout=timeout)
     d.addCallback(onSuccess, reqStart, reqEnd).addErrback(onFailure, uri, api_tool, headers, cookies, reqStart, reqEnd, timeout, retry=retry, returnData=returnData, missStart=missStart, missEnd=missEnd)
     return d
Example #4
0
 def addServices(self, result=None):
     self.cred_time = int(time.time())
     if not result:
         log.debug('No services to add')
         return 0
     else:
         services = result
         service_list = services['list']
         service_sum = services['summary']
         host_count = 0
         #remove the old children set
         log.debug("Reloading Domain %s" % self.host)
         self.initialized = False
         self.children = {}
         for item in service_list:
             host_count += 1
             item_services = item['services']
             host_name = item['name']
             host_alias = item['alias']
             if 'comments' in item:
                 host_comments = item['comments']
             else:
                 host_comments = ''
             host = Host(host_alias,
                            host_comments,
                            item['current_check_attempt'],
                            item['downtime'],
                            item['icon'],
                            item['last_check'],
                            item['max_check_attempts'],
                            host_name,
                            item['num_interfaces'],
                            item['num_services'],
                            item['output'])
             self.addChild(host)
             for svc in item_services:
                 svc_host = host_name
                 svc_name = svc['name']
                 svc_current_check_attempt = svc['current_check_attempt']
                 svc_downtime = svc['downtime']
                 svc_last_check = svc['last_check']
                 svc_markdown = svc['markdown']
                 svc_max_check_attempts = svc['max_check_attempts']
                 svc_output = svc['output']
                 svc_perfdata_available = svc['perfdata_available']
                 svc_service_object_id = svc['service_object_id']
                 svc_state = svc['state']
                 svc_state_type = svc['state_type']
                 svc_state_duration = svc['state_duration']
                 svc_unhandled = svc['unhandled']
                 svc_obj = Service(svc_current_check_attempt,
                                   svc_downtime,
                                   svc_last_check,
                                   svc_markdown,
                                   svc_max_check_attempts,
                                   svc_name,
                                   svc_output,
                                   svc_perfdata_available,
                                   svc_service_object_id,
                                   svc_state,
                                   svc_state_type,
                                   svc_state_duration,
                                   svc_unhandled,
                                   svc_host)
                 host.addChild(svc_obj)
         log.info('found %s hosts for node %s' % (host_count, self.name))
         perfmetrics = rest_api.getInfo(self.uri, 'rest/runtime/performancemetric', headers=self.creds, timeout=dataTimeout)
         perfmetrics.addCallbacks(self.saveMetricData,self.onErr)
         return perfmetrics
Example #5
0
                    for x,y in mList.items():
                        service[x] = y
    return returnList

def errInfo(reason):
    log.error(reason)
    
for section in cfg_sections:
    if section[:14] == 'opsview_server':
        server_name = utils.config.get(section, "name")
        server_host = utils.config.get(section, "host")
        server_login = utils.config.get(section, "login")
        server_password = utils.config.get(section, "password")
        server_tkt_shared = utils.config.get(section, "shared_secret")
        server_api_tool = utils.config.get(section, "api_tool")
        server_rescan = utils.config.get(section, "rescan")
        try:
            odw_host = utils.config.get(section, "odw_host")
            odw_db = utils.config.get(section, "odw_db")
            odw_user = utils.config.get(section, "odw_user")
            odw_pass = utils.config.get(section, "odw_pass")
        except:
            odw_host = odw_db = odw_user = odw_pass = None
            log.info('Found no or invalid odw data for node %s' % server_name)
        node = Domain(server_name, server_host, server_login, server_password, server_tkt_shared, server_api_tool, server_rescan, odw_host, odw_db, odw_user, odw_pass)
        node_list[server_name] = node
        node_uri = node_list[server_name].getUri()
        node_versions = rest_api.getInfo(node_uri, 'rest', timeout=dataTimeout)
        node_versions.addCallback(saveVersionInfo, node=node).addErrback(errInfo)
        node = None