Exemplo n.º 1
0
    def _get_components(self):
        ''' query components, the result like:
            {
                "Statistics":   "ACTIVE", 
                "Billing":      "ACTIVE", 
                "LocationDataStream":   "ACTIVE", 
                ...
            }
        '''
        cmd = r'fdsinstall  -u Setup -p Earth_#10 -s'
        data = os.popen(cmd).read()
        if not data:
            Debug.error("query components state error: %s" % cmd)
            return None

        # parse state
        lines = data.split('\n')
        components = {}
        for line in lines:
            # FSC-Event/4.1/linux-eagle-32/1    ACTIVE      linux-eagle-32
            pattern = r'([^/]*)\/(\d\.\d)\/([^/]*)\/(\d)\s*(\w+)\s+'
            matchObj = re.match(pattern, line)
            if matchObj:
                components[matchObj.group(1)] = matchObj.group(5)
                # components[matchObj.group(1)] = {
                #    "Version": matchObj.group(2),
                #    "State": matchObj.group(5)
                # }

        return components
Exemplo n.º 2
0
def json_dumps4(jdata):
    ''' dump json string with pretty format '''
    try:
        return json.dumps(jdata, indent=4)
    except Exception as err:
        Debug.error("Error: dump data error: %s" % (err))
    return ""
Exemplo n.º 3
0
def json_dumps(jdata):
    ''' dump json string inline '''
    try:
        return json.dumps(jdata)
    except Exception as err:
        Debug.error("Error: dump data error: %s" % (err))
    return ""
Exemplo n.º 4
0
def json_parse(data):
    ''' parse json string '''
    try:
        if not data:
            return {}
        return json.loads(data)
    except Exception as err:
        Debug.error("Error: parse data (%.25s...) error: %s" % (data, err))
    return {}
Exemplo n.º 5
0
def base64decode(data):
    ''' base64 decode string '''
    try:
        val = base64.b64decode(data).decode("UTF-8")
        if val is not None:
            if type(val) == str:
                return val
            return val.decode("UTF-8")
    except Exception as err:
        Debug.error("Error: b64decode data (%.25s...) error: %s" % (data, err))
    return ""
Exemplo n.º 6
0
 def _fdsserver_is_ready(self):
     '''
     check fdsserver is ready
     return True if state is ready
     '''
     cmd = "netstat -napt 2>&1 | grep 10000 | grep FDSServer"
     data = os.popen(cmd).read()
     if not data:
         Debug.error("query fdsserver state error, command: %s!" % cmd)
         return False
     Debug.debug("FDSServer: %s" % data)
     return True
Exemplo n.º 7
0
def health_check(ipport):
   ''' health check
       returns:
             0   -port is opened and listening
             2   -port is not opened 
   '''
   cmd = "netstat -napu 2>&1 | grep " + ipport  + " | grep PluginContain"
   data = os.popen(cmd).read()
   if not data:
        Debug.error("query udp sip state error, command: %s!" % cmd)
        return SERVICE_CRITICAL
   Debug.debug("port status: %s" % data)
   return SERVICE_PASSING
Exemplo n.º 8
0
    def _components_is_ready(self):
        '''
        check all components in ACTIVE
        return True/False
        '''
        # query components
        components = self._components;

        # check all components are in ACTIVE
        for comp_name, comp_stat in components.items():
            if not comp_stat or comp_stat != "ACTIVE":
                Debug.error("Component %s is not in ACTIVE" % comp_name)
                return False

        return True
Exemplo n.º 9
0
def http_get_request(ipport, reqfile):
    ''' request http server, return JSON response '''
    Debug.notice("GET http://{0}{1}".format(':'.join(str(n) for n in ipport),
                                            reqfile))
    resp = ""
    try:
        httpClient = httplib.HTTPConnection(*ipport, timeout=100)
        httpClient.request('GET', reqfile)

        response = httpClient.getresponse()
        Debug.notice("HTTP response: %s" % response.status)

        resp = response.read().decode()
    except Exception as err:
        Debug.error("%%Error post_req: %s" % str(err))
    finally:
        if httpClient:
            httpClient.close()
    return json_parse(resp)
Exemplo n.º 10
0
def http_put_request(ipport, reqfile, jdata):
    ''' request http server, return JSON response '''
    Debug.debug("PUT http://{0}{1} : {2}".format(
        ':'.join(str(n) for n in ipport), reqfile, jdata))
    resp = ""
    try:
        httpClient = httplib.HTTPConnection(*ipport, timeout=100)
        headers = {"Content-type": "application/json"}
        httpClient.request('PUT', reqfile, json_dumps(jdata), headers)

        response = httpClient.getresponse()
        Debug.debug("HTTP response: %s" % response.status)

        resp = response.read().decode()
    except Exception as err:
        Debug.error("%%Error post_req: %s" % str(err))
    finally:
        if httpClient:
            httpClient.close()
    return json_parse(resp)
Exemplo n.º 11
0
    def service_is_registered(self):
        consul_ipport = get_consul_address();
        reqfile = "/v1/catalog/service/" + self._service_name
        Debug.debug("service_check service: {0}".format(self._service_name))
        jdata = http_get_request(consul_ipport, reqfile)

        ''' http response shall like:
        [{
            ...
            "ServiceID": "xxx",
            "ServiceName": "{component}",
            "ServiceTags": ["hostname"],
            "ServiceAddress": "{ip}",
            "ServicePort": {port},
            ...
         }, ...]
         '''
        if not type(jdata) is type([]):
            Debug.error("Bad data type(requied []): %s" % str(type(jdata)))
            return False;
        if len(jdata) <= 0 or not "ServiceName" in jdata[0].keys():
            return False
        return True
Exemplo n.º 12
0

GMPC_COMPONENTS = ("Statistics", "Billing", "LocationDataStream", "HTTPServer",
                   "dgpscontroller", "FSC-SystemMonitor",
                   "AssistanceDataHandler", "ESABridge", "Map", "FSC-EventLog",
                   "FSC-CGIEventLog", "lanmonitor", "FSC-Event",
                   "FSC-LTEEventLog", "PPE112", "PPRouter", "SOAPServer",
                   "ttmonitor", "RANEventLocation", "RequestMonitor",
                   "EBMServer", "FSC-OMEventLog", "MLP", "CWSL", "Wireline",
                   "AnyPhone", "ppgps", "GnssAssistanceDataHandler",
                   "Diameter", "OM", "AllPhone", "ss7manager", "PPATI",
                   "FSC-SAIEventLog", "Authority", "IMSRDF", "TriggerLocation",
                   "UPEngine", "PacketLocationFeeder", "NetworkStorage")

SMPC_COMPONENTS = ("FSC-Event", "Statistics", "dgpscontroller", "lanmonitor",
                   "PPSelector", "ss7manager", "OM", "Bssap", "ppcgi",
                   "ppaecid", "pplteaecid", "ppgps", "ttmonitor",
                   "GnssAssistanceDataHandler", "PPUTDOA", "UTDOAOM", "ppsas",
                   "ppesmlc", "PositioningRecord", "PPLTEEvent", "PPRNCEvent",
                   "AssistanceDataHandler", "FSC-EventLog", "FSC-CGIEventLog",
                   "FSC-CELLIDEventLog", "FSC-LTEEventLog", "FSC-PDEEventLog",
                   "FSC-PMCEventLog", "FSC-FixedXYEventLog", "FSC-OMEventLog",
                   "FSC-SystemMonitor", "ESABridge")

if __name__ == '__main__':
    Debug.debug_flags = {"aaa": False, "bbb": False}

    Debug.set_debug('aaa', True)
    Debug.set_debug('ccc', True)
    Debug.error("test", Debug.get_debug('aaa'), Debug.get_debugs())