Example #1
0
    def update_from_file(self, obj, file_name=None, create=False, **kwargs):
        assert 'dir_only' not in kwargs, 'update_from_file(): `dir_only` parameter is invalid here'

        # do not create if not requested
        if create and not self.exists(obj, **kwargs):
            raise ObjectNotFound()

        if file_name is None:
            file_name = self.__get_cache_path(obj, **kwargs)

        # put will create if necessary
        doi = irods.dataObjInp_t()
        doi.objPath = self.__get_rods_path(obj, **kwargs)
        doi.createMode = 0o640
        doi.dataSize = os.stat(file_name).st_size
        doi.numThreads = 0
        irods.addKeyVal(doi.condInput, irods.DEST_RESC_NAME_KW,
                        self.default_resource)
        irods.addKeyVal(doi.condInput, irods.FORCE_FLAG_KW, '')
        # TODO: might want to VERIFY_CHKSUM_KW
        log.debug('update_from_file(): updating %s to %s', file_name,
                  doi.objPath)

        # do the iput
        status = irods.rcDataObjPut(self.rods_conn, doi, file_name)
        assert status == 0, 'update_from_file(): iput %s failed (%s): %s' % (
            doi.objPath, status, irods.strerror(status))
Example #2
0
    def update_from_file(self, obj, file_name=None, create=False, **kwargs):
        assert "dir_only" not in kwargs, "update_from_file(): `dir_only` parameter is invalid here"

        # do not create if not requested
        if create and not self.exists(obj, **kwargs):
            raise ObjectNotFound()

        if file_name is None:
            file_name = self.__get_cache_path(obj, **kwargs)

        # put will create if necessary
        doi = irods.dataObjInp_t()
        doi.objPath = self.__get_rods_path(obj, **kwargs)
        doi.createMode = 0640
        doi.dataSize = os.stat(file_name).st_size
        doi.numThreads = 0
        irods.addKeyVal(doi.condInput, irods.DEST_RESC_NAME_KW, self.default_resource)
        irods.addKeyVal(doi.condInput, irods.FORCE_FLAG_KW, "")
        # TODO: might want to VERIFY_CHKSUM_KW
        log.debug("update_from_file(): updating %s to %s", file_name, doi.objPath)

        # do the iput
        status = irods.rcDataObjPut(self.rods_conn, doi, file_name)
        assert status == 0, "update_from_file(): iput %s failed (%s): %s" % (
            doi.objPath,
            status,
            irods.strerror(status),
        )
Example #3
0
    def close(self):
        for (k, c) in self.cxns.iteritems():
            c.close()
            # upload to irods
            srcPath = self.cxnFiles[c]
            (dirn, fn) = os.path.split(srcPath)        

            # use file/C api
            dataObjOprInp = irods.dataObjInp_t()
            dataObjOprInp.setOprType(irods.PUT_OPR)
            dataObjOprInp.setOpenFlags(irods.O_RDWR)
            targPath = self.store.coll.getCollName() + "/" + fn
            statbuf = os.stat(srcPath)            
            dataObjOprInp.setCreateMode(statbuf.st_mode)
            dataObjOprInp.setObjPath(targPath)
            dataObjOprInp.setDataSize(statbuf.st_size)
            irods.rcDataObjPut(self.store.cxn, dataObjOprInp, srcPath)

            self.cxns[k] = None
        return None
Example #4
0
 def upload_file(self, local_path, irods_path, resource=None,
                 overwrite=False):
     """Upload a file to irods
     return True if the file is already present"""
     dataObjOprInp = irods.dataObjInp_t()
     dataObjOprInp.oprType = irods.PUT_OPR
     dataObjOprInp.openFlags = irods.O_RDWR
     if overwrite:
         irods.addKeyVal(dataObjOprInp.condInput, irods.FORCE_FLAG_KW, "")
     if resource:
         irods.addKeyVal(dataObjOprInp.condInput,
                         irods.DEST_RESC_NAME_KW,
                         resource)
     dataObjOprInp.objPath = irods_path
     status = irods.rcDataObjPut(self.conn, dataObjOprInp, local_path)
     return status == irods.OVERWRITE_WITHOUT_FORCE_FLAG