예제 #1
0
    def executeGet(self):
        """
        Request:
            (...)/istsos/wa/istsos/<service name>/status/?type=delay

        The response is:
        >>>
        [
            {
                "name": "air-rainfall",
                "children": [
                    {
                        "name": "ok",
                        "children": [
                            {}
                        ]
                    },
                    {
                        "name": "pending",
                        "children": [
                            {
                                "delay": 35243.204681,
                                "lastObservation": "2014-05-12T07:00:00+0200",
                                "code": [
                                    2
                                ],
                                "name": "LOCARNO",
                                "oum": "mm",
                                "exceptions": [
                                    {
                                        "status": "pending",
                                        "process": "acquisition",
                                        "datetime": "2014-05-12 09:00:00+02:00",
                                        "details": null,
                                        "message": "TypeError",
                                        "element": "LOCARNO",
                                        "id": 2
                                    }
                                ],
                                "lastMeasure": "2.000000",
                                "cycle": 4.894889539027778
                            },
                            {
                                "delay": 540143.269259,
                                "lastObservation": "2014-05-06T10:45:00+0200",
                                "code": [
                                    1,
                                    2,
                                    3
                                ],
                                "name": "P_LUGANO",
                                "oum": "mm",
                                "exceptions": [
                                    {
                                        "details": "No exception found"
                                    }
                                ],
                                "lastMeasure": "32.000000",
                                "cycle": 75.01989850819444
                            }
                        ]
                    },
                    {
                        "name": "verified",
                        "children": [
                            {
                                "delay": 49163.155455,
                                "lastObservation": "2014-05-12T03:08:00+0200",
                                "code": [
                                    1,
                                    2,
                                    3
                                ],
                                "name": "BELLINZONA",
                                "oum": "mm",
                                "exceptions": [
                                    {
                                        "status": "verified",
                                        "process": "acquisition",
                                        "datetime": "2014-05-12 05:00:00+02:00",
                                        "details": null,
                                        "message": "TypeError",
                                        "element": "BELLINZONA",
                                        "id": 1
                                    }
                                ],
                                "lastMeasure": "1.000000",
                                "type": "verified",
                                "cycle": 13.656432070833333
                            }
                        ]
                    }
                ]
            },
            {
                "name": "air-temperature",
                "children":[...]
            }
        ]
        """

        if self.service == "default":
            raise Exception("Status operation can not be done for default service instance.")

        servicedb = databaseManager.PgDB(
            self.serviceconf.connection['user'],
            self.serviceconf.connection['password'],
            self.serviceconf.connection['dbname'],
            self.serviceconf.connection['host'],
            self.serviceconf.connection['port'])

        #param = self.waEnviron['parameters']['type'][0]

        procedureData = []
        lastValue = {'values': 'No observation', 'uom': 'No observation'}
        for procedure in utils.getProcedureNamesList(servicedb, self.service):

            #if param == 'delay':
            status = self.__delay(procedure['name'], servicedb)
            if status is None:
                continue
            #else:
                #raise Exception("Operation %s not permitted." % (param))

            if(status['status'] == 'NOT OK'):
                # Require last exceptions
                logEnviron = self.waEnviron.copy()
                logEnviron['parameters'] = {}
                from walib.istsos.services.logs import logs
                log = logs.waLogs(logEnviron)

                logEnviron['parameters'] = {'element': [procedure['name']],
                                        'stime': [status['lastObservation']]}

                log.executeGet()

            if(status['lastObservation'] != 'No observation'):
                # Convert last Observation to string
                status['lastObservation'] = status['lastObservation'].strftime("%Y-%m-%dT%H:%M:%S%z")
                lastValue = self.__getLastObservation(servicedb,procedure['name'])

            procedureData.append(
                {
                    "procedure": procedure['name'],
                    "status": status,
                    "lastMeasure": lastValue,
                    "exception": log.response['data']
                }
            )

        jsonResult = []
        for op in utils.getObsPropNamesList(servicedb, self.service):
            propOk = []
            propNotOk = []
            propVerif = []
            for procedure in procedureData:
                if self.__containsOp(procedure, op['name']):
                    lastValue = self.__getLastValue(procedure, op['name'])
                    jsonProc = {
                                    "name": procedure['procedure'],
                                    "lastObservation": procedure['status']['lastObservation'],
                                    "lastMeasure": lastValue['values'],
                                    "oum": lastValue['uom'],
                                    "delay": procedure['status']['delay'],
                                    "cycle": procedure['status']['cycle']
                                }
                    if procedure['status']['status'] == "OK":
                        jsonProc['type'] = 'ok'
                        propOk.append(jsonProc)

                    elif procedure['status']['status'] == "NOT OK":
                        code = []
                        if procedure['exception']:
                            for exc in procedure['exception']:
                                if exc['message'] in getErrorCode:
                                    code.append(getErrorCode[exc['message']])
                                else:
                                    code.append(0)

                            jsonProc['code'] = code
                            jsonProc['exceptions'] = procedure['exception']

                            if(self.__checkError(procedure['exception'])):
                                propNotOk.append(jsonProc)
                            else:
                                jsonProc['type'] = 'verified'
                                propVerif.append(jsonProc)
                        else:
                            jsonProc['exceptions'] = [{"details": "No exceptions found"}]
                            propNotOk.append(jsonProc)

            if(len(propOk) == 0):
                propOk.append({})
            if(len(propNotOk) == 0):
                propNotOk.append({})
            if(len(propVerif) == 0):
                propVerif.append({})

            jsonResult.append({
                "name": op['name'],
                "children": [
                    {"name": "ok", "children": propOk},
                    {"name":"pending", "children": propNotOk},
                    {"name": "verified", "children": propVerif}
                ]
                }
            )

        self.setMessage("Status result")
        self.setData(jsonResult)
예제 #2
0
def initResource(waEnviron):
    path = waEnviron['path']
    # ---------------
    # Entering istsos
    # ---------------
    pathinfo = copy.deepcopy(waEnviron['pathinfo'])
    resource = pathinfo.pop(0)

    if resource == "istsos":
        '''if 'user' in waEnviron and not waEnviron['user'].isAdmin():
            from walib import users
            return users.waUserUnauthorized(waEnviron)'''

        resource = pathinfo.pop(0)

        # --------------------------
        # Entering istsos.operations
        # --------------------------
        if resource == "operations":
            resource = pathinfo.pop(0)

            if resource == "status":
                from walib.istsos import istsos
                return istsos.waStatus(waEnviron)
            elif resource == "log":
                from walib.istsos import istsos
                return istsos.waLog(waEnviron)
            elif resource == "about":
                from walib.istsos import istsos
                return istsos.waAbout(waEnviron)
            elif resource == "validatedb":
                from walib.istsos import istsos
                return istsos.waValidatedb(waEnviron)
            ''' checking if not need any more
            elif resource == "initialization":
                from walib.istsos import istsos
                return istsos.waInitialization(waEnviron)'''

        # --------------------------
        # Entering istsos.services
        # --------------------------
        elif resource == "services":

            if len(pathinfo) <= 1:
                from walib.istsos.services import services
                return services.waServices(waEnviron)
            else:
                pathinfo.pop(0)
                resource = pathinfo.pop(0)

                # Entering istsos.services.configsections
                if resource == "configsections":

                    if len(pathinfo) == 0:
                        from walib.istsos.services.configsections import configsections
                        return configsections.waConfigsections(waEnviron)
                    else:
                        resource = pathinfo.pop(0)
                        if resource == "connection":
                            if len(pathinfo) == 0:
                                from walib.istsos.services.configsections import connection
                                return connection.waConnection(waEnviron)
                            else:
                                resource = pathinfo.pop(0)
                                if resource == "operations":
                                    resource = pathinfo.pop(0)
                                    if resource == "validatedb":
                                        from walib.istsos.services.configsections import connection
                                        return connection.waValidatedb(
                                            waEnviron)

                        elif resource == "getobservation":
                            from walib.istsos.services.configsections import getobservation
                            return getobservation.waGetobservation(waEnviron)

                        elif resource == "paths":
                            from walib.istsos.services.configsections import paths
                            return paths.waPaths(waEnviron)

                        elif resource == "authority":
                            from walib.istsos.services.configsections import authority
                            return authority.waAuthority(waEnviron)

                        elif resource == "identification":
                            from walib.istsos.services.configsections import identification
                            return identification.waIdentification(waEnviron)

                        elif resource == "geo":
                            from walib.istsos.services.configsections import geo
                            return geo.waGeo(waEnviron)

                        elif resource == "serviceurl":
                            from walib.istsos.services.configsections import serviceurl
                            return serviceurl.waServiceurl(waEnviron)

                        elif resource == "provider":
                            from walib.istsos.services.configsections import provider
                            return provider.waProvider(waEnviron)

                        elif resource == "urn":
                            from walib.istsos.services.configsections import urn
                            return urn.waUrn(waEnviron)

                        elif resource == "mqtt":
                            from walib.istsos.services.configsections import mqtt
                            return mqtt.waMqtt(waEnviron)

                # ---------------------------------------
                # Entering istsos.services.dataqualities
                # ---------------------------------------
                elif resource == "dataqualities":
                    from walib.istsos.services.dataqualities import dataqualities
                    return dataqualities.waDataqualities(waEnviron)

                # ---------------------------------------
                # Entering istsos.services.specimens
                # ---------------------------------------
                elif resource == "specimens":
                    from walib.istsos.services.specimens import specimens
                    return specimens.waSpecimens(waEnviron)

                # ---------------------------------------
                # Entering istsos.services.procedures
                # ---------------------------------------
                elif resource == "procedures":

                    if len(pathinfo) <= 1:
                        from walib.istsos.services.procedures import procedures
                        return procedures.waProcedures(waEnviron)

                    else:
                        resource = pathinfo.pop(0)

                        if resource == 'operations':
                            resource = pathinfo.pop(0)

                            if resource == "getlist":
                                from walib.istsos.services.procedures import procedures
                                return procedures.waGetlist(waEnviron)

                            elif resource == "geojson":
                                from walib.istsos.services.procedures import procedures
                                return procedures.waGetGeoJson(waEnviron)

                # ---------------------------------------
                # Entering istsos.services.virtualprocedures
                # ---------------------------------------
                elif resource == "virtualprocedures":

                    if len(pathinfo) <= 1:
                        from walib.istsos.services.virtualprocedures import virtualprocedures
                        return virtualprocedures.waVirtualProcedures(waEnviron)

                    else:
                        resource = pathinfo.pop(0)

                        if resource == "operations":
                            resource = pathinfo.pop(0)
                            if resource == "getlist":
                                from walib.istsos.services.virtualprocedures import virtualprocedures
                                return virtualprocedures.waGetlist(waEnviron)

                        resource = pathinfo.pop(0)

                        if resource == 'code':
                            from walib.istsos.services.virtualprocedures import code
                            return code.waCode(waEnviron)

                        elif resource == 'ratingcurve':
                            from walib.istsos.services.virtualprocedures import ratingcurve
                            return ratingcurve.waRatingcurves(waEnviron)

                # ---------------------------------------
                # Entering istsos.services.observedproperties
                # ---------------------------------------
                elif resource == "observedproperties":
                    from walib.istsos.services.observedproperties import observedproperties
                    return observedproperties.waObservedproperties(waEnviron)

                # ---------------------------------------
                # Entering istsos.services.uoms
                # ---------------------------------------
                elif resource == "uoms":
                    from walib.istsos.services.uoms import uoms
                    return uoms.waUoms(waEnviron)

                # ---------------------------------------
                # Entering istsos.services.epsgs
                # ---------------------------------------
                elif resource == "epsgs":
                    from walib.istsos.services.epsgs import epsgs
                    return epsgs.waEpsgs(waEnviron)

                # ---------------------------------------
                # Entering istsos.services.epsgs
                # ---------------------------------------
                elif resource == "systemtypes":
                    from walib.istsos.services.systemtypes import systemtypes
                    return systemtypes.waSystemTypes(waEnviron)

                # ---------------------------------------
                # Entering istsos.services.offerings
                # ---------------------------------------
                elif resource == "offerings":

                    if len(pathinfo) <= 1:
                        from walib.istsos.services.offerings import offerings
                        return offerings.waOfferings(waEnviron)
                    else:
                        resource = pathinfo.pop(0)  # remove offering name

                        if resource == "operations":
                            resource = pathinfo.pop(0)
                            if resource == "getlist":
                                from walib.istsos.services.offerings import offerings
                                return offerings.waGetlist(waEnviron)
                        else:
                            resource = pathinfo.pop(0)
                            if resource == "procedures":
                                if len(pathinfo) <= 1:
                                    from walib.istsos.services.offerings.procedures import procedures
                                    return procedures.waProcedures(waEnviron)
                                else:
                                    resource = pathinfo.pop(0)
                                    if resource == "operations":
                                        resource = pathinfo.pop(0)
                                        if resource == "memberslist":
                                            from walib.istsos.services.offerings.procedures import procedures
                                            return procedures.waMemberslist(
                                                waEnviron)
                                        elif resource == "nonmemberslist":
                                            from walib.istsos.services.offerings.procedures import procedures
                                            return procedures.waNonmemberslist(
                                                waEnviron)

                # ---------------------------------------
                # Entering istsos.services.operations
                # ---------------------------------------
                elif resource == "operations":
                    resource = pathinfo.pop(0)
                    if resource == "getobservation":
                        from walib.istsos.services import services
                        return services.waGetobservation(waEnviron)
                    elif resource == "insertobservation":
                        from walib.istsos.services import services
                        return services.waInsertobservation(waEnviron)
                    elif resource == "fastinsert":
                        from walib.istsos.services import services
                        return services.waFastInsert(waEnviron)

                # ---------------------------------------
                # Entering istsos.services.logs
                # ---------------------------------------
                elif resource == "logs":
                    from walib.istsos.services.logs import logs
                    return logs.waLogs(waEnviron)

                # ---------------------------------------
                # Entering istsos.services.status
                # ---------------------------------------
                elif resource == "status":
                    from walib.istsos.services.status import status
                    return status.waStatus(waEnviron)

    elif resource == "user":
        from walib import users
        return users.waUsers(waEnviron)

    raise Exception("Resource is not identified, check the URL")
예제 #3
0
    def executeGet(self):
        """
        Request:
            (...)/istsos/wa/istsos/<service name>/status/?type=delay

        The response is:
        >>>
        [
            {
                "name": "air-rainfall",
                "children": [
                    {
                        "name": "ok",
                        "children": [
                            {}
                        ]
                    },
                    {
                        "name": "pending",
                        "children": [
                            {
                                "delay": 35243.204681,
                                "lastObservation": "2014-05-12T07:00:00+0200",
                                "code": [
                                    2
                                ],
                                "name": "LOCARNO",
                                "oum": "mm",
                                "exceptions": [
                                    {
                                        "status": "pending",
                                        "process": "acquisition",
                                        "datetime": "2014-05-12 09:00:00+02:00",
                                        "details": null,
                                        "message": "TypeError",
                                        "element": "LOCARNO",
                                        "id": 2
                                    }
                                ],
                                "lastMeasure": "2.000000",
                                "cycle": 4.894889539027778
                            },
                            {
                                "delay": 540143.269259,
                                "lastObservation": "2014-05-06T10:45:00+0200",
                                "code": [
                                    1,
                                    2,
                                    3
                                ],
                                "name": "P_LUGANO",
                                "oum": "mm",
                                "exceptions": [
                                    {
                                        "details": "No exception found"
                                    }
                                ],
                                "lastMeasure": "32.000000",
                                "cycle": 75.01989850819444
                            }
                        ]
                    },
                    {
                        "name": "verified",
                        "children": [
                            {
                                "delay": 49163.155455,
                                "lastObservation": "2014-05-12T03:08:00+0200",
                                "code": [
                                    1,
                                    2,
                                    3
                                ],
                                "name": "BELLINZONA",
                                "oum": "mm",
                                "exceptions": [
                                    {
                                        "status": "verified",
                                        "process": "acquisition",
                                        "datetime": "2014-05-12 05:00:00+02:00",
                                        "details": null,
                                        "message": "TypeError",
                                        "element": "BELLINZONA",
                                        "id": 1
                                    }
                                ],
                                "lastMeasure": "1.000000",
                                "type": "verified",
                                "cycle": 13.656432070833333
                            }
                        ]
                    }
                ]
            },
            {
                "name": "air-temperature",
                "children":[...]
            }
        ]
        """

        if self.service == "default":
            raise Exception(
                "Status operation can not be done for default service instance."
            )

        servicedb = databaseManager.PgDB(
            self.serviceconf.connection['user'],
            self.serviceconf.connection['password'],
            self.serviceconf.connection['dbname'],
            self.serviceconf.connection['host'],
            self.serviceconf.connection['port'])

        #param = self.waEnviron['parameters']['type'][0]

        procedureData = []
        lastValue = {'values': 'No observation', 'uom': 'No observation'}
        for procedure in utils.getProcedureNamesList(servicedb, self.service):
            log_res = []
            #if param == 'delay':
            status = self.__delay(procedure['name'], servicedb)
            if status is None:
                continue
            #else:
            #raise Exception("Operation %s not permitted." % (param))
            #print procedure['name']
            #print status['status']
            if (status['status'] == 'NOT OK'):
                # Require last exceptions
                logEnviron = self.waEnviron.copy()
                logEnviron['parameters'] = {}
                from walib.istsos.services.logs import logs
                log = logs.waLogs(logEnviron)

                logEnviron['parameters'] = {
                    'element': [procedure['name']],
                    'stime': [status['lastObservation']]
                }

                log.executeGet()

                #print log.response['data']

                log_res = log.response['data']

            if (status['lastObservation'] != 'No observation'):
                # Convert last Observation to string
                status['lastObservation'] = status['lastObservation'].strftime(
                    "%Y-%m-%dT%H:%M:%S%z")
                lastValue = self.__getLastObservation(servicedb,
                                                      procedure['name'])

            procedureData.append({
                "procedure": procedure['name'],
                "status": status,
                "lastMeasure": lastValue,
                "exception": log_res  #log.response['data']
            })

        jsonResult = []
        for op in utils.getObsPropNamesList(servicedb, self.service):
            propOk = []
            propNotOk = []
            propVerif = []
            for procedure in procedureData:
                if self.__containsOp(procedure, op['name']):
                    lastValue = self.__getLastValue(procedure, op['name'])
                    jsonProc = {
                        "name": procedure['procedure'],
                        "lastObservation":
                        procedure['status']['lastObservation'],
                        "lastMeasure": lastValue['values'],
                        "oum": lastValue['uom'],
                        "delay": procedure['status']['delay'],
                        "cycle": procedure['status']['cycle']
                    }
                    if procedure['status']['status'] == "OK":
                        jsonProc['type'] = 'ok'
                        propOk.append(jsonProc)

                    elif procedure['status']['status'] == "NOT OK":
                        code = []
                        if procedure['exception']:
                            for exc in procedure['exception']:
                                if exc['message'] in getErrorCode:
                                    code.append(getErrorCode[exc['message']])
                                else:
                                    code.append(0)

                            jsonProc['code'] = code
                            jsonProc['exceptions'] = procedure['exception']

                            if (self.__checkError(procedure['exception'])):
                                propNotOk.append(jsonProc)
                            else:
                                jsonProc['type'] = 'verified'
                                propVerif.append(jsonProc)
                        else:
                            jsonProc['exceptions'] = [{
                                "details":
                                "No exceptions found"
                            }]
                            propNotOk.append(jsonProc)

            if (len(propOk) == 0):
                propOk.append({})
            if (len(propNotOk) == 0):
                propNotOk.append({})
            if (len(propVerif) == 0):
                propVerif.append({})

            jsonResult.append({
                "name":
                op['name'],
                "children": [{
                    "name": "ok",
                    "children": propOk
                }, {
                    "name": "pending",
                    "children": propNotOk
                }, {
                    "name": "verified",
                    "children": propVerif
                }]
            })

        self.setMessage("Status result")
        self.setData(jsonResult)
예제 #4
0
def initResource(waEnviron):
    path = waEnviron['path']
    # ---------------
    # Entering istsos
    # ---------------
    pathinfo = copy.deepcopy(waEnviron['pathinfo'])
    resource = pathinfo.pop(0)
    #print >> sys.stderr, resource
    
    if resource == "istsos":
        
        resource = pathinfo.pop(0)
        
        # --------------------------
        # Entering istsos.operations
        # -------------------------- 
        if resource == "operations":
            resource = pathinfo.pop(0)
            
            if resource == "status":
                from walib.istsos import istsos
                return istsos.waStatus(waEnviron)
            elif resource == "log":
                from walib.istsos import istsos
                return istsos.waLog(waEnviron)
            elif resource == "about":
                from walib.istsos import istsos
                return istsos.waAbout(waEnviron)
            elif resource == "validatedb":
                from walib.istsos import istsos
                return istsos.waValidatedb(waEnviron)
            elif resource == "initialization":
                from walib.istsos import istsos
                return istsos.waInitialization(waEnviron)
        
        # --------------------------
        # Entering istsos.services
        # -------------------------- 
        elif resource == "services":
            #print >> sys.stderr, resource
            
            if len(pathinfo)<=1:
                from walib.istsos.services import services
                return services.waServices(waEnviron)
            else:
                pathinfo.pop(0) #print >> sys.stderr, pathinfo.pop(0)  # remove service name
                resource = pathinfo.pop(0)
                
                # ---------------------------------------
                # Entering istsos.services.configsections
                # ---------------------------------------
                if resource == "configsections":
                    #print >> sys.stderr, resource
                    
                    if len(pathinfo)==0:
                        from walib.istsos.services.configsections import configsections
                        return configsections.waConfigsections(waEnviron)
                    else:
                        resource = pathinfo.pop(0)
                        #print >> sys.stderr, resource
                        if resource == "connection":
                            if len(pathinfo)==0:
                                from walib.istsos.services.configsections import connection
                                return connection.waConnection(waEnviron)
                            else:
                                resource = pathinfo.pop(0)
                                #print >> sys.stderr, resource
                                if resource == "operations":
                                    resource = pathinfo.pop(0)
                                    #print >> sys.stderr, resource
                                    if resource == "validatedb":
                                        from walib.istsos.services.configsections import connection
                                        return connection.waValidatedb(waEnviron)
                                
                        elif resource == "getobservation":
                            from walib.istsos.services.configsections import getobservation
                            return getobservation.waGetobservation(waEnviron)
                        elif resource == "paths":
                            from walib.istsos.services.configsections import paths
                            return paths.waPaths(waEnviron)
                        elif resource == "authority":
                            from walib.istsos.services.configsections import authority
                            return authority.waAuthority(waEnviron)
                        elif resource == "identification":
                            from walib.istsos.services.configsections import identification
                            return identification.waIdentification(waEnviron)
                        elif resource == "geo":
                            from walib.istsos.services.configsections import geo
                            return geo.waGeo(waEnviron)
                        elif resource == "serviceurl":
                            from walib.istsos.services.configsections import serviceurl
                            return serviceurl.waServiceurl(waEnviron)
                        elif resource == "provider":
                            from walib.istsos.services.configsections import provider
                            return provider.waProvider(waEnviron)
                        elif resource == "urn":
                            from walib.istsos.services.configsections import urn
                            return urn.waUrn(waEnviron)
                
                # ---------------------------------------
                # Entering istsos.services.dataqualities
                # ---------------------------------------
                elif resource == "dataqualities":
                    #print >> sys.stderr, resource
                    from walib.istsos.services.dataqualities import dataqualities
                    return dataqualities.waDataqualities(waEnviron)
                
                # ---------------------------------------
                # Entering istsos.services.procedures
                # ---------------------------------------
                elif resource == "procedures":
                    #print >> sys.stderr, resource
                    
                    if len(pathinfo)<=1:
                        from walib.istsos.services.procedures import procedures
                        return procedures.waProcedures(waEnviron)
                                        
                    else:
                        
                        resource = pathinfo.pop(0)
                        #print >> sys.stderr, resource
                        
                        if resource == 'operations':
                            resource = pathinfo.pop(0)
                            #print >> sys.stderr, resource
                            
                            if resource == "getlist":
                                from walib.istsos.services.procedures import procedures
                                return procedures.waGetlist(waEnviron)
                            
                            elif resource == "geojson":
                                from walib.istsos.services.procedures import procedures
                                return procedures.waGetGeoJson(waEnviron)
                        
                # ---------------------------------------
                # Entering istsos.services.virtualprocedures
                # ---------------------------------------
                elif resource == "virtualprocedures":
                    #print >> sys.stderr, resource
                    
                    if len(pathinfo)<=1:
                        from walib.istsos.services.virtualprocedures import virtualprocedures
                        return virtualprocedures.waVirtualProcedures(waEnviron)
                                        
                    else:
                        resource = pathinfo.pop(0)
                        #print >> sys.stderr, resource

                        if resource == "operations":
                            #print >> sys.stderr, resource              
                            resource = pathinfo.pop(0)    
                            if resource == "getlist":  
                                #print >> sys.stderr, resource     
                                from walib.istsos.services.virtualprocedures import virtualprocedures
                                return virtualprocedures.waGetlist(waEnviron)
                                
                        resource = pathinfo.pop(0)
                        #print >> sys.stderr, resource
                        
                        if resource == 'code':
                            #print >> sys.stderr, resource
                            from walib.istsos.services.virtualprocedures import code
                            return code.waCode(waEnviron)
                            
                        elif resource == 'ratingcurve':
                            #print >> sys.stderr, resource
                            from walib.istsos.services.virtualprocedures import ratingcurve
                            return ratingcurve.waRatingcurves(waEnviron)
                            
                # ---------------------------------------
                # Entering istsos.services.observedproperties
                # ---------------------------------------
                elif resource == "observedproperties":
                    #print >> sys.stderr, resource
                    from walib.istsos.services.observedproperties import observedproperties
                    return observedproperties.waObservedproperties(waEnviron)
                    
                # ---------------------------------------
                # Entering istsos.services.uoms
                # ---------------------------------------
                elif resource == "uoms":
                    #print >> sys.stderr, resource
                    from walib.istsos.services.uoms import uoms
                    return uoms.waUoms(waEnviron)
                
                # ---------------------------------------
                # Entering istsos.services.epsgs
                # ---------------------------------------
                elif resource == "epsgs":
                    #print >> sys.stderr, resource
                    from walib.istsos.services.epsgs import epsgs
                    return epsgs.waEpsgs(waEnviron)
                    
                # ---------------------------------------
                # Entering istsos.services.epsgs
                # ---------------------------------------
                elif resource == "systemtypes":
                    #print >> sys.stderr, resource
                    from walib.istsos.services.systemtypes import systemtypes
                    return systemtypes.waSystemTypes(waEnviron)
                
                
                # ---------------------------------------
                # Entering istsos.services.offerings
                # ---------------------------------------
                elif resource == "offerings":
                    #print >> sys.stderr, resource
                    
                    if len(pathinfo)<=1:
                        from walib.istsos.services.offerings import offerings
                        return offerings.waOfferings(waEnviron)
                    else:
                        resource = pathinfo.pop(0) # remove offering name
                        #print >> sys.stderr, resource
                        
                        if resource == "operations":
                            resource = pathinfo.pop(0)
                            if resource == "getlist":
                                #print >> sys.stderr, resource
                                from walib.istsos.services.offerings import offerings
                                return offerings.waGetlist(waEnviron)
                        else:
                            resource = pathinfo.pop(0)
                            if resource == "procedures":
                                if len(pathinfo)<=1:
                                    from walib.istsos.services.offerings.procedures import procedures
                                    return procedures.waProcedures(waEnviron)
                                else:
                                    resource = pathinfo.pop(0)
                                    if resource == "operations":
                                        #print >> sys.stderr, resource
                                        resource = pathinfo.pop(0)
                                        if resource == "memberslist":
                                            from walib.istsos.services.offerings.procedures import procedures
                                            return procedures.waMemberslist(waEnviron)
                                        elif resource == "nonmemberslist":
                                            from walib.istsos.services.offerings.procedures import procedures
                                            return procedures.waNonmemberslist(waEnviron)
                          
                # ---------------------------------------
                # Entering istsos.services.operations
                # ---------------------------------------
                elif resource == "operations":
                    #print >> sys.stderr, resource              
                    resource = pathinfo.pop(0)    
                    if resource == "getobservation":  
                        #print >> sys.stderr, resource     
                        from walib.istsos.services import services
                        return services.waGetobservation(waEnviron)
                    elif resource == "insertobservation":
                        #print >> sys.stderr, resource     
                        from walib.istsos.services import services
                        return services.waInsertobservation(waEnviron)
                        
                # ---------------------------------------
                # Entering istsos.services.logs
                # ---------------------------------------        
                elif resource == "logs":
                    from walib.istsos.services.logs import logs
                    return logs.waLogs(waEnviron)
                
                # ---------------------------------------
                # Entering istsos.services.status
                # ---------------------------------------
                elif resource == "status":
                    from walib.istsos.services.status import status
                    return status.waStatus(waEnviron)
                                   
    raise Exception("Resource is not identified, check the URL")
예제 #5
0
def initResource(waEnviron):
    path = waEnviron['path']
    # ---------------
    # Entering istsos
    # ---------------
    pathinfo = copy.deepcopy(waEnviron['pathinfo'])
    resource = pathinfo.pop(0)
    print >> sys.stderr, pathinfo

    if resource == "istsos":
        '''if 'user' in waEnviron and not waEnviron['user'].isAdmin():
            from walib import users
            return users.waUserUnauthorized(waEnviron)'''

        resource = pathinfo.pop(0)

        # --------------------------
        # Entering istsos.operations
        # --------------------------
        if resource == "operations":
            resource = pathinfo.pop(0)

            if resource == "status":
                from walib.istsos import istsos
                return istsos.waStatus(waEnviron)
            elif resource == "log":
                from walib.istsos import istsos
                return istsos.waLog(waEnviron)
            elif resource == "about":
                from walib.istsos import istsos
                return istsos.waAbout(waEnviron)
            elif resource == "validatedb":
                from walib.istsos import istsos
                return istsos.waValidatedb(waEnviron)

            # ---------------------------------------
            # Entering istsos.operation.oat
            # ---------------------------------------
            elif resource == "oat":
                resource = pathinfo.pop(0)

                if resource == "resample":
                    from walib.OAT import ProcessThread
                    return ProcessThread.resamplingData(waEnviron)
                elif resource == "digitalfilter":
                    from walib.OAT import ProcessThread
                    return ProcessThread.DigitalThread(waEnviron)
                elif resource == "exceedance":
                    from walib.OAT import ProcessThread
                    return ProcessThread.ExceedanceData(waEnviron)
                elif resource == "he":
                    from walib.OAT import ProcessThread
                    return ProcessThread.HydroEventsTh(waEnviron)
                elif resource == "hi":
                    from walib.OAT import ProcessThread
                    return ProcessThread.HydroIndices(waEnviron)
                elif resource == "qualitymethod":
                    from walib.OAT import ProcessThread
                    return ProcessThread.QualityMethod(waEnviron)
                elif resource == "datavalue":
                    from walib.OAT import ProcessThread
                    return ProcessThread.DataValuesMethod(waEnviron)
                elif resource == "hysap":
                    from walib.OAT import ProcessThread
                    return ProcessThread.HydroSeparationTh(waEnviron)
                elif resource == "intgrate":
                    from walib.OAT import ProcessThread
                    return ProcessThread.IntegrateMethod(waEnviron)
                elif resource == "compare":
                    from walib.OAT import ProcessThread
                    return ProcessThread.regularization(waEnviron)
                elif resource == "subtract":
                    from walib.OAT import ProcessThread
                    return ProcessThread.regularization(waEnviron)
                elif resource == "fill":
                    from walib.OAT import ProcessThread
                    return ProcessThread.fillMethod(waEnviron)
                elif resource == "statistics":
                    from walib.OAT import ProcessThread
                    return ProcessThread.Statisticsmethod(waEnviron)
                elif resource == "hargreaves":
                    from walib.OAT import ProcessThread
                    return ProcessThread.Hargreaves(waEnviron)
            ''' checking if not need any more
            elif resource == "initialization":
                from walib.istsos import istsos
                return istsos.waInitialization(waEnviron)'''

        # --------------------------
        # Entering istsos.services
        # --------------------------
        elif resource == "services":
            #print >> sys.stderr, resource

            if len(pathinfo) <= 1:
                from walib.istsos.services import services
                return services.waServices(waEnviron)
            else:
                pathinfo.pop(0)
                resource = pathinfo.pop(0)

                # Entering istsos.services.configsections
                if resource == "configsections":
                    #print >> sys.stderr, resource

                    if len(pathinfo) == 0:
                        from walib.istsos.services.configsections import configsections
                        return configsections.waConfigsections(waEnviron)
                    else:
                        resource = pathinfo.pop(0)
                        #print >> sys.stderr, resource
                        if resource == "connection":
                            if len(pathinfo) == 0:
                                from walib.istsos.services.configsections import connection
                                return connection.waConnection(waEnviron)
                            else:
                                resource = pathinfo.pop(0)
                                #print >> sys.stderr, resource
                                if resource == "operations":
                                    resource = pathinfo.pop(0)
                                    #print >> sys.stderr, resource
                                    if resource == "validatedb":
                                        from walib.istsos.services.configsections import connection
                                        return connection.waValidatedb(
                                            waEnviron)

                        elif resource == "getobservation":
                            from walib.istsos.services.configsections import getobservation
                            return getobservation.waGetobservation(waEnviron)
                        elif resource == "paths":
                            from walib.istsos.services.configsections import paths
                            return paths.waPaths(waEnviron)
                        elif resource == "authority":
                            from walib.istsos.services.configsections import authority
                            return authority.waAuthority(waEnviron)
                        elif resource == "identification":
                            from walib.istsos.services.configsections import identification
                            return identification.waIdentification(waEnviron)
                        elif resource == "geo":
                            from walib.istsos.services.configsections import geo
                            return geo.waGeo(waEnviron)
                        elif resource == "serviceurl":
                            from walib.istsos.services.configsections import serviceurl
                            return serviceurl.waServiceurl(waEnviron)
                        elif resource == "provider":
                            from walib.istsos.services.configsections import provider
                            return provider.waProvider(waEnviron)
                        elif resource == "urn":
                            from walib.istsos.services.configsections import urn
                            return urn.waUrn(waEnviron)
                        elif resource == "mqtt":
                            from walib.istsos.services.configsections import mqtt
                            return mqtt.waMqtt(waEnviron)

                # ---------------------------------------
                # Entering istsos.services.dataqualities
                # ---------------------------------------
                elif resource == "dataqualities":
                    #print >> sys.stderr, resource
                    from walib.istsos.services.dataqualities import dataqualities
                    return dataqualities.waDataqualities(waEnviron)

                # ---------------------------------------
                # Entering istsos.services.procedures
                # ---------------------------------------
                elif resource == "procedures":
                    #print >> sys.stderr, resource

                    if len(pathinfo) <= 1:
                        from walib.istsos.services.procedures import procedures
                        return procedures.waProcedures(waEnviron)

                    else:

                        resource = pathinfo.pop(0)
                        #print >> sys.stderr, resource

                        if resource == 'operations':
                            resource = pathinfo.pop(0)
                            #print >> sys.stderr, resource

                            if resource == "getlist":
                                from walib.istsos.services.procedures import procedures
                                return procedures.waGetlist(waEnviron)

                            elif resource == "geojson":
                                from walib.istsos.services.procedures import procedures
                                return procedures.waGetGeoJson(waEnviron)

                # ---------------------------------------
                # Entering istsos.services.virtualprocedures
                # ---------------------------------------
                elif resource == "virtualprocedures":
                    #print >> sys.stderr, resource

                    if len(pathinfo) <= 1:
                        from walib.istsos.services.virtualprocedures import virtualprocedures
                        return virtualprocedures.waVirtualProcedures(waEnviron)

                    else:
                        resource = pathinfo.pop(0)
                        #print >> sys.stderr, resource

                        if resource == "operations":
                            #print >> sys.stderr, resource
                            resource = pathinfo.pop(0)
                            if resource == "getlist":
                                #print >> sys.stderr, resource
                                from walib.istsos.services.virtualprocedures import virtualprocedures
                                return virtualprocedures.waGetlist(waEnviron)

                        resource = pathinfo.pop(0)
                        #print >> sys.stderr, resource

                        if resource == 'code':
                            #print >> sys.stderr, resource
                            from walib.istsos.services.virtualprocedures import code
                            return code.waCode(waEnviron)

                        elif resource == 'ratingcurve':
                            #print >> sys.stderr, resource
                            from walib.istsos.services.virtualprocedures import ratingcurve
                            return ratingcurve.waRatingcurves(waEnviron)

                # ---------------------------------------
                # Entering istsos.services.observedproperties
                # ---------------------------------------
                elif resource == "observedproperties":
                    #print >> sys.stderr, resource
                    from walib.istsos.services.observedproperties import observedproperties
                    return observedproperties.waObservedproperties(waEnviron)

                # ---------------------------------------
                # Entering istsos.services.uoms
                # ---------------------------------------
                elif resource == "uoms":
                    #print >> sys.stderr, resource
                    from walib.istsos.services.uoms import uoms
                    return uoms.waUoms(waEnviron)

                # ---------------------------------------
                # Entering istsos.services.epsgs
                # ---------------------------------------
                elif resource == "epsgs":
                    #print >> sys.stderr, resource
                    from walib.istsos.services.epsgs import epsgs
                    return epsgs.waEpsgs(waEnviron)

                # ---------------------------------------
                # Entering istsos.services.epsgs
                # ---------------------------------------
                elif resource == "systemtypes":
                    #print >> sys.stderr, resource
                    from walib.istsos.services.systemtypes import systemtypes
                    return systemtypes.waSystemTypes(waEnviron)

                # ---------------------------------------
                # Entering istsos.services.offerings
                # ---------------------------------------
                elif resource == "offerings":
                    #print >> sys.stderr, resource

                    if len(pathinfo) <= 1:
                        from walib.istsos.services.offerings import offerings
                        return offerings.waOfferings(waEnviron)
                    else:
                        resource = pathinfo.pop(0)  # remove offering name
                        #print >> sys.stderr, resource

                        if resource == "operations":
                            resource = pathinfo.pop(0)
                            if resource == "getlist":
                                #print >> sys.stderr, resource
                                from walib.istsos.services.offerings import offerings
                                return offerings.waGetlist(waEnviron)
                        else:
                            resource = pathinfo.pop(0)
                            if resource == "procedures":
                                if len(pathinfo) <= 1:
                                    from walib.istsos.services.offerings.procedures import procedures
                                    return procedures.waProcedures(waEnviron)
                                else:
                                    resource = pathinfo.pop(0)
                                    if resource == "operations":
                                        #print >> sys.stderr, resource
                                        resource = pathinfo.pop(0)
                                        if resource == "memberslist":
                                            from walib.istsos.services.offerings.procedures import procedures
                                            return procedures.waMemberslist(
                                                waEnviron)
                                        elif resource == "nonmemberslist":
                                            from walib.istsos.services.offerings.procedures import procedures
                                            return procedures.waNonmemberslist(
                                                waEnviron)

                # ---------------------------------------
                # Entering istsos.services.operations
                # ---------------------------------------
                elif resource == "operations":
                    #print >> sys.stderr, resource
                    resource = pathinfo.pop(0)
                    if resource == "getobservation":
                        from walib.istsos.services import services
                        return services.waGetobservation(waEnviron)
                    elif resource == "insertobservation":
                        #print >> sys.stderr, resource
                        from walib.istsos.services import services
                        return services.waInsertobservation(waEnviron)
                    elif resource == "fastinsert":
                        print >> sys.stderr, resource
                        from walib.istsos.services import services
                        return services.waFastInsert(waEnviron)
                    elif resource == "seeobservation":
                        from walib.istsos.services import services
                        return services.waGetobservation(waEnviron)

                # ---------------------------------------
                # Entering istsos.services.logs
                # ---------------------------------------
                elif resource == "logs":
                    from walib.istsos.services.logs import logs
                    return logs.waLogs(waEnviron)

                # ---------------------------------------
                # Entering istsos.services.status
                # ---------------------------------------
                elif resource == "status":
                    from walib.istsos.services.status import status
                    return status.waStatus(waEnviron)

    elif resource == "oat":
        from walib.istsos.services import services
        print >> sys.stderr, resource
        return services.resampling(waEnviron)

    elif resource == "user":
        from walib import users
        return users.waUsers(waEnviron)

    raise Exception("Resource is not identified, check the URL")