示例#1
0
 def executeGet(self):
     
     if self.service == "default":
         raise Exception("offerings operation can not be done for 'default' service instance.")
     else:
         self.setData(utils.getOfferingNamesList(
             databaseManager.PgDB(self.serviceconf.connection['user'],
                                         self.serviceconf.connection['password'],
                                         self.serviceconf.connection['dbname'],
                                         self.serviceconf.connection['host'],
                                         self.serviceconf.connection['port']
             ),self.service))
         if self.response['total']>0:
             self.setMessage("Offerings names of service \"%s\" successfully retrived" % self.service)
         else:
             self.setMessage("There aren't Offerings for service \"%s\"" % self.service)
示例#2
0
    def executeGet(self):

        if self.service == "default":
            raise Exception("offerings operation can not be done for 'default' service instance.")
        else:
            self.setData(
                utils.getOfferingNamesList(
                    databaseManager.PgDB(
                        self.serviceconf.connection["user"],
                        self.serviceconf.connection["password"],
                        self.serviceconf.connection["dbname"],
                        self.serviceconf.connection["host"],
                        self.serviceconf.connection["port"],
                    ),
                    self.service,
                )
            )
            if self.response["total"] > 0:
                self.setMessage('Offerings names of service "%s" successfully retrived' % self.service)
            else:
                self.setMessage('There aren\'t Offerings for service "%s"' % self.service)
示例#3
0
文件: istsos.py 项目: rom1Bv/istsos2
    def executeGet(self):
        """
        Execute GET request investigating set-up services

        @note: This method creates a C{self.data} object in the form of a
        list of dictionaries as below:

        >>> template = {
                "service" : None,
                "offerings" : None,
                "procedures" : None,
                "observedProperties" : None,
                "featuresOfInterest" : None,
                "getCapabilities" : None,
                "describeSensor" : None,
                "getObservations" : None,
                "registerSensor" : None,
                "insertObservation" : None,
                "getFeatureOfInterest" : None,
                "availability" : "up"
            }
        """
        services = utils.getServiceList(
            self.waconf.paths["services"],
            listonly=True)

        if self.user and not self.user.isAdmin():
            servicesAllowed = []
            for item in services:
                if self.user.allowedService(item):
                    servicesAllowed.append(item)
            services = servicesAllowed

        data = []
        for service in services:
            srv = {}
            srv["service"] = service

            # get service configuration
            defaultcfgpath = os.path.join(
                self.waconf.paths["services"],
                "default.cfg")

            servicecfgpath = "%s.cfg" % os.path.join(
                self.waconf.paths["services"],
                service, service)

            config = configManager.waServiceConfig(
                defaultcfgpath, servicecfgpath)

            # test if service is active (check answer to GetCapabilities)
            if config.serviceurl["default"] is True:
                urlget = config.serviceurl["url"] + "/" + service
            else:
                urlget = config.serviceurl["url"]

            request = ("?request=getCapabilities&"
                       "section=serviceidentification&service=SOS")

            srv["availability"] = utils.verifyxmlservice(
                urlget+request, self.waEnviron)

            # test if connection is valid
            connection = config.get("connection")

            try:
                servicedb = databaseManager.PgDB(
                    connection['user'],
                    connection['password'],
                    connection['dbname'],
                    connection['host'],
                    connection['port']
                )
                srv["database"] = "active"

            except:
                srv["database"] = "not connectable"
                srv["offerings"] = None
                srv["procedures"] = None
                srv["observedProperties"] = None
                srv["featuresOfInterest"] = None

            try:
                #count offerings
                srv["offerings"] = len(
                    utils.getOfferingNamesList(servicedb, service))
            except:
                srv["offerings"] = None

            try:
                #count procedures
                srv["procedures"] = len(
                    utils.getProcedureNamesList(
                        servicedb, service, offering=None))
            except:
                srv["procedures"] = None

            try:
                #count observed properties
                srv["observedProperties"] = len(
                    utils.getObsPropNamesList(
                        servicedb, service, offering=None))
            except:
                srv["observedProperties"] = None

            try:
                #count features of interest
                srv["featuresOfInterest"] = len(
                    utils.getFoiNamesList(servicedb, service, offering=None))
            except:
                srv["featuresOfInterest"] = None

            #get available requests
            requests_ON = config.parameters["requests"].split(",")
            for operation in [
                    "getcapabilities", "describesensor", "getobservation",
                    "getfeatureofinterest", "insertobservation",
                    "registersensor"]:

                if operation in requests_ON:
                    srv[operation] = True
                else:
                    srv[operation] = False
            data.append(srv)

        self.setData(data)
        self.setMessage("Serverstatus request successfully executed")
示例#4
0
 def executeGet(self):
     """
     Execute GET request investigating set-up services
                   
     @note: This method creates a C{self.data} object in the form of a list of
     dictionaries as below:
         
     >>> template = {"service" : None, 
                     "offerings" : None,
                     "procedures" : None,
                     "observedProperties" : None,
                     "featuresOfInterest" : None,
                     "getCapabilities" : None,
                     "describeSensor" : None,
                     "getObservations" : None,
                     "registerSensor" : None,
                     "insertObservation" : None,
                     "getFeatureOfInterest" : None,
                     "availability" : "up"
                     } 
     """
     services = utils.getServiceList(self.waconf.paths["services"],listonly=True)
     data = []
     for service in services:
         srv = {}
         srv["service"] = service
         
         #get service configuration
         #-------------------------------------------------------------------
         defaultcfgpath = os.path.join(self.waconf.paths["services"],"default.cfg")
         servicecfgpath = os.path.join(self.waconf.paths["services"],service,service)+".cfg"
         config = configManager.waServiceConfig(defaultcfgpath,servicecfgpath)
         
         #test if service is active (check answer to GetCapabilities)
         #-------------------------------------------------------------------
         if config.serviceurl["default"] == True:
             urlget = config.serviceurl["url"] + "/" + service
         else:
             urlget = config.serviceurl["url"]
         
         request = "?request=getCapabilities&section=serviceidentification&service=SOS"
                     
         srv["availability"] = utils.verifyxmlservice(urlget+request)
         
         #test if connection is valid
         #-------------------------------------------------------------------
         connection = config.get("connection")
         try:
             servicedb = databaseManager.PgDB(connection['user'],
                                         connection['password'],
                                         connection['dbname'],
                                         connection['host'],
                                         connection['port']
             )
             srv["database"] = "active"
         except:
             srv["database"] = "not connectable"
             srv["offerings"] = None
             srv["procedures"] = None
             srv["observedProperties"] = None
             srv["featuresOfInterest"] = None
         try:
             #count offerings
             #-------------------------------------------------------------------
             srv["offerings"] = len(utils.getOfferingNamesList(servicedb,service))
         except:
             srv["offerings"] = None
             
         try:
             #count procedures
             #-------------------------------------------------------------------
             srv["procedures"] = len(utils.getProcedureNamesList(servicedb,service,offering=None))
         except:
             srv["procedures"] = None
         
         try:
             #count observed properties
             #-------------------------------------------------------------------
             srv["observedProperties"] = len(utils.getObsPropNamesList(servicedb,service,offering=None))
         except:
             srv["observedProperties"] = None
             
         try:
             #count features of interest
             #-------------------------------------------------------------------
             srv["featuresOfInterest"] = len(utils.getFoiNamesList(servicedb,service,offering=None))
         except:
             srv["featuresOfInterest"] = None
         
         #get available requests
         #-------------------------------------------------------------------
         requests_ON = config.parameters["requests"].split(",")
         for operation in ["getcapabilities","describesensor","getobservation",
                             "getfeatureofinterest","insertobservation","registersensor"]:
             if operation in requests_ON:
                 srv[operation]=True
             else:
                 srv[operation]=False
         data.append(srv)
     self.setData(data)
     self.setMessage("Serverstatus request successfully executed")