ODM2 / WOFpy

A server-side implementation of CUAHSI's Water One Flow service stack in Python.
http://odm2.github.io/WOFpy/
9 stars 9 forks source link

GetValuesObject request returns nothing #46

Closed RussNelson closed 9 years ago

RussNelson commented 9 years ago

I'm trying to download data into HydroDesktop. I get no data on a 200 response from WOFpy, which HydroDesktop thinks is an error. You'd think it would be a warning, but BUT maybe what WOFpy is returning is actually an invalid response?

I figured out how to get sqlalchemy to log its SQL transactions. You have to add the following line: logging.getLogger('sqlalchemy.engine').setLevel(logging.DEBUG) right after the call to logging.basicConfig

Having done so, I see that WOFpy is searching for the site, which it finds (REON:Esperance), then it searches for the variable, which it finds (REON:temperature). And then it doesn't make any more SQL queries, but instead immediately returns no values. It's as if WOFpy is encountering some problem and giving up before doing a query on DataValues, but it's not throwing an error. You can see that the return value on the POST is 200.

The Spyne debugging output isn't all that useful. Maybe we need a higher level of tracing, like at the WSGI level?

current.txt

RussNelson commented 9 years ago

It looks like somebody successfully downloaded quite a bit of data from 108.197.33.64. They asked for this: GetValuesObject(location=u'reon:Esperance', variable=u'reon:temperature', startDate=u'2014-09-01', endDate=u'2014-10-01', authToken=u'?' Unfortunately, the SQL queries that resulted in this data rolled off the head of the log file.

RussNelson commented 9 years ago

Another detail: HD is reporting "No series found in xml file".

RussNelson commented 9 years ago

Another detail: the query that succeeded was identical to the ones that fail except for three differences: 1) working: "in_header_doc=[]", failing: "in_header_doc=None", 2) the dates working: "startDate=u'2014-09-01', endDate=u'2014-10-01'" and failing: "startDate=u'2015-10-25T00:02', endDate=u'2015-11-23T00:00'", and 3) working had the network name in lower case, failing in upper case.

valentinedwv commented 9 years ago

Choonhan, can you see if changes you made effect the cvs and odm output.

Russ, can you send choonhan a mysql dump with a small number points.

cdesyoun commented 9 years ago

David, I tested odm2 examples. It went well. I will try to test csv example.

cdesyoun commented 9 years ago

Using soapUI tool, csv example was fixed. It went well.

cdesyoun commented 9 years ago

David, Russ, it seems to me I fixed a bug. Recently, David has changed network/vocaburary names as the lowercase in code. This change did not make effect to main core codes that check these names. I did two functions below in core_1_0.py and core_1_1.py.

    def get_site_code(self, siteArg):

        if ':' in siteArg:
            networkname, siteCode = siteArg.split(':')
            networkname = networkname.lower()
            if self.network == networkname:
                return siteCode
            else:
                return None
        return siteArg

    def get_variable_code(self, varArg):

        if ':' in varArg:
            vocabname, varCode = varArg.split(':')
            vocabname = vocabname.lower()
            if self.vocabulary == vocabname:
                return varCode
            else:
                return None
        return varArg

so, in soap request,

<ws:location>TxRivers:Austin</ws:location>
<ws:location>txrivers:Austin</ws:location>

both are working.

RussNelson commented 9 years ago

Progress!!! It's now doing the database queries necessary to get data, and it's logging that it's getting the data, but it's crashing. I'll close this one and start a new issue with the new details. Well done!

valentinedwv commented 9 years ago

So looks like this partially addresses #42 thanks