Source code for fdi.pns.urlconf



from fdi.utils.getconfig import getConfig
# default configuration is provided. Copy contents of svom/engisim/config.py to ~/.config/engisimlocal.py
pc = getConfig()

defaulturl = 'http://' + pc['host'] + ':' + \
    str(pc['port']) + pc['baseurl']


[docs]def urn2url(urn, contents='product'): """ Returns URL for accessing pools with a URN. contents: 'product' for returning a product from the pool. 'hk' for returning the housekeeping data of the pool. 'classes' for returning the class housekeeping data of the pool. 'urns' for returning the URN housekeeping data of the pool. 'tags' for returning the tag housekeeping data of the pool. Example: IP=ip dir=/a/b/c files=/a/b//c/classes.jsn | urns.jsn | t.. | urn... with python: m.refs['myinput'] = special_ref ref=pstore.save(m) assert ref.urn == 'urn:http://ip:port/a/b/c/fdi.dataset.MapContext:203' p=ref.product myref=p.refs['myinput'] with a pool: myref=pool.load('http://ip:port/v0.6/a/b/c/fdi.dataset.MapContext/203/refs/myinput') urn:http://ip:port/a/b/c/fdi.dataset.Product:203 ==> http://ip:port/v0.6/a/b/c/fdi.dataset.Product/203/meta/OBSID At the same time this is not allowed due to overlapping after 'c' urn:http://ip:port/a/b/d/fdi.dataset.Product:203 ==> http://ip:port/v0.6/a/b/c/d/ This is also overlapping starting from '/' urn:http://ip:port/fdi.dataset.Product:203 ==> http://ip:port/v0.6/ but for example this is allowed: urn:http://ip:port/a/k/fdi.dataset.Product:203 ==> http://ip:port/v0.6/a/k/ """ poolname, resourceclass, serialnumstr, scheme, \ place, poolpath = parseUrn(urn) base = poolname + pc['baseurl'] if contents == 'product': ret = base+'/'+resourceclass+'/'+serialnumstr elif contents == 'housekeeping': ret = base+'/hk' elif contents in ['classes', 'urns', 'tags']: ret = base+'/hk/' + contents else: raise(ValueError(contents)) return ret