Ejemplo n.º 1
0
def get_logical_location_get(filename,
                             match_exact=None,
                             include_trash=None) -> str:
    max_rows = 1000
    offset = 0
    sess = create_session()
    conditions = []
    if match_exact:
        conditions += [DataObject.name == str(filename)]
    else:
        conditions += [
            Criterion('like', DataObject.name, '%' + str(filename) + '%')
        ]
    if not include_trash:
        conditions += [Criterion('not like', Collection.name, '%/trash/%')]
    results = sess.query(DataObject.name,
                            Collection.name).\
        filter(*conditions).\
        offset(offset).\
        limit(max_rows).all()
    sess.cleanup()
    data = {}
    data['irods_filenames'] = []
    for r in results.rows:
        l_path = r.popitem()
        f_name = r.popitem()
        data['irods_filenames'] += {str(l_path[1]) + '/' + str(f_name[1])}

    return jsonify(data)
Ejemplo n.º 2
0
def find_resources_by_metadata(meta_key=None, meta_value=None) -> str:
    session = create_session()
    conditions = []
    if meta_key:
        conditions += [ResourceMeta.name == meta_key]
    if meta_value:
        conditions += [ResourceMeta.value == meta_value]
    res = session.query(Resource.name, ResourceMeta.name,
                        ResourceMeta.value).filter(*conditions).all()
    session.cleanup()
    return jsonify(list(set([r[Resource.name] for r in res.rows])))
Ejemplo n.º 3
0
def get_resource_metadata(resource_name) -> str:
    sess = create_session()
    conditions = [Resource.name == resource_name]
    res = sess.query(Resource.name, Resource.location, ResourceMeta.name,
                     ResourceMeta.value).filter(*conditions).all()
    sess.cleanup()
    if not res.rows:
        return jsonify(dict(error='Resource not found: %s' %
                            resource_name)), 404
    resp = {r[ResourceMeta.name]: r[ResourceMeta.value] for r in res.rows}
    resp.update(name=res.rows[0][Resource.name],
                host=res.rows[0][Resource.location])
    return jsonify(resp)
Ejemplo n.º 4
0
def get_host_node_get(resource_name) -> str:
    sess = create_session()
    conditions = [Resource.name == resource_name]
    results = sess.query(Resource.name,
                         Resource.location).filter(*conditions).all()
    sess.cleanup()
    data = {}
    data['hostnode'] = []
    for r in results.rows:
        r_loc = r.popitem()
        r_name = r.popitem()
        # print(r_name[1] + ':' + r_loc[1])
        data['hostnode'] += {str(r_loc[1])}

    return jsonify(data)
Ejemplo n.º 5
0
def get_resources_metadata(resource_names) -> list:
    resources = []
    sess = create_session()
    for rn in set(resource_names):
        conditions = [Resource.name == rn]
        res = sess.query(Resource.name, Resource.location, ResourceMeta.name,
                         ResourceMeta.value).filter(*conditions).all()
        if res:
            resources += dict(name=res.rows[0][Resource.name],
                              host=res.rows[0][Resource.location],
                              **{
                                  r[ResourceMeta.name]: r[ResourceMeta.value]
                                  for r in res.rows
                              }),

    sess.cleanup()
    return jsonify(resources)
Ejemplo n.º 6
0
def get_data_objects(filenames) -> list:
    sess = create_session()
    data_objs = []
    for fn in set(filenames):
        try:
            data_objs += sess.data_objects.get(fn),
        except (CollectionDoesNotExist, DataObjectDoesNotExist):
            print('%s is not found' % fn)
    sess.cleanup()
    data = []
    for o in data_objs:
        data_obj = dict(path=o.path, type=o.type, size=o.size)
        for rep in o.replicas:
            data_obj.setdefault('replicas', []).append(
                dict(resource_name=str(rep.resource_name),
                     number=int(rep.number),
                     path=str(rep.path),
                     status=int(rep.status)))
        data += data_obj,
    return jsonify(data)
Ejemplo n.º 7
0
def get_data_object(filename) -> str:
    try:
        sess = create_session()
        obj = sess.data_objects.get(filename)
        sess.cleanup()
        data = dict(path=filename, type=obj.type, size=obj.size)
        for replica in obj.replicas:
            data.setdefault('replicas', []).append({
                'resource_name':
                str(replica.resource_name),
                'number':
                int(replica.number),
                'path':
                str(replica.path),
                'status':
                int(replica.status)
            })
    except (CollectionDoesNotExist, DataObjectDoesNotExist):
        return jsonify(dict(error="Data object '%s' is not found" %
                            filename)), 404
    return jsonify(data)