blob: 65c2a1ccc5444fe279ee3fd1d2cf463057e078d0 [file] [log] [blame]
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
'''
Example main program for ESGF-RCMES integration.
'''
# constant parameters
USER_OPENID = "https://esg-datanode.jpl.nasa.gov/esgf-idp/openid/lucacinquini"
USER_PASSWORD = "*****"
DATA_DIRECTORY = "/tmp"
from ocw.esgf.logon import logon
from ocw.esgf.logon2 import logon2
from ocw.esgf.search import SearchClient
from ocw.esgf.download import download
def main():
'''Example driver program'''
# step 1: obtain short-term certificate
print 'Retrieving ESGF certificate...'
# logon using client-side MyProxy libraries
#if logon(USER_OPENID, USER_PASSWORD):
# print "...done."
# logon through server-side MyProxy service
if logon2(USER_OPENID, USER_PASSWORD):
print "...done"
# step 2: execute faceted search for files
urls = main_obs4mips()
#urls = main_cmip5()
# step 3: download file(s)
for i, url in enumerate(urls):
if i>=1:
break
download(url, toDirectory=DATA_DIRECTORY)
def main_cmip5():
'''
Example workflow to search for CMIP5 files
'''
searchClient = SearchClient(searchServiceUrl="http://pcmdi9.llnl.gov/esg-search/search", distrib=False)
print '\nAvailable projects=%s' % searchClient.getFacets('project')
searchClient.setConstraint(project='CMIP5')
print "Number of Datasets=%d" % searchClient.getNumberOfDatasets()
print '\nAvailable models=%s' % searchClient.getFacets('model')
searchClient.setConstraint(model='INM-CM4')
print "Number of Datasets=%d" % searchClient.getNumberOfDatasets()
print '\nAvailable experiments=%s' % searchClient.getFacets('experiment')
searchClient.setConstraint(experiment='historical')
print "Number of Datasets=%d" % searchClient.getNumberOfDatasets()
print '\nAvailable time frequencies=%s' % searchClient.getFacets('time_frequency')
searchClient.setConstraint(time_frequency='mon')
print "Number of Datasets=%d" % searchClient.getNumberOfDatasets()
print '\nAvailable CF standard names=%s' % searchClient.getFacets('cf_standard_name')
searchClient.setConstraint(cf_standard_name='air_temperature')
print "Number of Datasets=%d" % searchClient.getNumberOfDatasets()
urls = searchClient.getFiles()
return urls
def main_obs4mips():
'''
Example workflow to search for obs4MIPs files.
'''
searchClient = SearchClient(distrib=False)
# obs4MIPs
print '\nAvailable projects=%s' % searchClient.getFacets('project')
searchClient.setConstraint(project='obs4MIPs')
print "Number of Datasets=%d" % searchClient.getNumberOfDatasets()
print '\nAvailable variables=%s' % searchClient.getFacets('variable')
searchClient.setConstraint(variable='hus')
print "Number of Datasets=%d" % searchClient.getNumberOfDatasets()
print '\nAvailable time frequencies=%s' % searchClient.getFacets('time_frequency')
searchClient.setConstraint(time_frequency='mon')
print "Number of Datasets=%d" % searchClient.getNumberOfDatasets()
print '\nAvailable models=%s' % searchClient.getFacets('model')
searchClient.setConstraint(model='Obs-MLS')
print "Number of Datasets=%d" % searchClient.getNumberOfDatasets()
urls = searchClient.getFiles()
return urls
if __name__ == '__main__':
main()