Ejemplo n.º 1
0
  def export_getResourceInfo( self , resource = None ):
    """ Send the storage element resource information
"""

    conn , error = self.__irodsClient( "r" )
    if not conn:
      return S_ERROR( error )

    storageDict = {}
    for resource in getResources( conn ):
      name = resource.getName()
      if resource and resource != name:
        continue
      storageDict[ name ] = {}
      storageDict[ name ][ "Id" ] = resource.getId()
      storageDict[ name ][ "AvailableSpace" ] = resource.getFreeSpace()
      storageDict[ name ][ "Zone" ] = resource.getZone()
      storageDict[ name ][ "Type" ] = resource.getTypeName()
      storageDict[ name ][ "Class" ] = resource.getClassName()
      storageDict[ name ][ "Host" ] = resource.getHost()
      storageDict[ name ][ "Path" ] = resource.getPath()
      storageDict[ name ][ "Free Space TS" ] = resource.getFreeSpaceTs()
      storageDict[ name ][ "Info" ] = resource.getInfo()
      storageDict[ name ][ "Comment" ] = resource.getComment()
    rcDisconnect( conn )

    return S_OK( storageDict )
Ejemplo n.º 2
0
    def export_getResourceInfo(self, resource=None):
        """ Send the storage element resource information
"""

        conn, error, _userDict = self.__irodsClient()
        if not conn:
            return S_ERROR(error)

        storageDict = {}
        for resource in getResources(conn):
            name = resource.getName()
            if resource and resource != name:
                continue
            storageDict[name] = {}
            storageDict[name]["Id"] = resource.getId()
            storageDict[name]["AvailableSpace"] = resource.getFreeSpace()
            storageDict[name]["Zone"] = resource.getZone()
            storageDict[name]["Type"] = resource.getTypeName()
            storageDict[name]["Class"] = resource.getClassName()
            storageDict[name]["Host"] = resource.getHost()
            storageDict[name]["Path"] = resource.getPath()
            storageDict[name]["Free Space TS"] = resource.getFreeSpaceTs()
            storageDict[name]["Info"] = resource.getInfo()
            storageDict[name]["Comment"] = resource.getComment()
        rcDisconnect(conn)

        return S_OK(storageDict)
Ejemplo n.º 3
0
    def _open(self, session):

        if self.cxn == None:
            # connect to iRODS
            myEnv, status = irods.getRodsEnv()
            host = self.host if self.host else myEnv.getRodsHost()
            port = self.port if self.port else myEnv.getRodsPort()
            user = self.user if self.user else myEnv.getRodsUserName()
            zone = self.zone if self.zone else myEnv.getRodsZone()
         
            conn, errMsg = irods.rcConnect(host, port, user, zone) 
            if self.passwd:
                status = irods.clientLoginWithPassword(conn, self.passwd)
            else:
                status = irods.clientLogin(conn)

            if status:
                raise ConfigFileException("Cannot connect to iRODS: (%s) %s" % (status, errMsg.getMsg()))
            self.cxn = conn
            self.env = myEnv

            resources = irods.getResources(self.cxn)
            self.resourceHash = {}
            for r in resources:
                self.resourceHash[r.getName()] = r

            
        if self.coll != None:
            # already open, just skip
            return None

        c = irods.irodsCollection(self.cxn, self.env.getRodsHome())
        self.coll = c

        # move into cheshire3 section
        path = self.get_path(session, 'irodsCollection', 'cheshire3')
        dirs = c.getSubCollections()
        if not path in dirs:
            c.createCollection(path)
        c.openCollection(path)


        if self.get_setting(session, 'createSubDir', 1):
            # now look for object's storage area
            # maybe move into database collection
            if (isinstance(self.parent, Database)):
                sc = self.parent.id
                dirs = c.getSubCollections()
                if not sc in dirs:
                    c.createCollection(sc)
                c.openCollection(sc)
            # move into store collection
            dirs = c.getSubCollections()
            if not self.id in dirs:
                c.createCollection(self.id)
            c.openCollection(self.id)
Ejemplo n.º 4
0
    def _open(self, session):

        if self.cxn == None:
            # connect to iRODS
            myEnv, status = irods.getRodsEnv()

            host = self.host if self.host else myEnv.getRodsHost()
            port = self.port if self.port else myEnv.getRodsPort()
            user = self.user if self.user else myEnv.getRodsUserName()
            zone = self.zone if self.zone else myEnv.getRodsZone()
            
            conn, errMsg = irods.rcConnect(host, port, user, zone)
            if self.passwd:
                status = irods.clientLoginWithPassword(conn, self.passwd)
            else:
                status = irods.clientLogin(conn)

            if status:
                raise ConfigFileException("Cannot connect to iRODS: (%s) %s" % (status, errMsg))
            self.cxn = conn
            self.env = myEnv

            resources = irods.getResources(self.cxn)
            self.resourceHash = {}
            for r in resources:
                self.resourceHash[r.getName()] = r

            
        if self.coll != None:
            # already open, just skip
            return None

        c = irods.irodsCollection(self.cxn, self.env.getRodsHome())
        self.coll = c

        # move into cheshire3 section
        path = self.get_path(session, 'irodsCollection', 'cheshire3')
        dirs = c.getSubCollections()
        if not path in dirs:
            c.createCollection(path)
        c.openCollection(path)


        if self.get_setting(session, 'createSubDir', 1):
            # now look for object's storage area
            # maybe move into database collection
            if (isinstance(self.parent, Database)):
                sc = self.parent.id
                dirs = c.getSubCollections()
                if not sc in dirs:
                    c.createCollection(sc)
                c.openCollection(sc)
            # move into store collection
            dirs = c.getSubCollections()
            if not self.id in dirs:
                c.createCollection(self.id)
            c.openCollection(self.id)

        # Fetch user metadata
        myMetadata = self.get_metadataTypes(session)
        umd = c.getUserMetadata()
        umdHash = {}
        for u in umd:
            umdHash[u[0]] = icatValToPy(*u[1:])

        for md in myMetadata:
            try:
                setattr(self, md, umdHash[md])
            except KeyError:
                # hasn't been set yet
                pass

        if self.totalItems != 0:
            self.meanWordCount = self.totalWordCount / self.totalItems
            self.meanByteCount = self.totalByteCount / self.totalItems
        else:
            self.meanWordCount = 1
            self.meanByteCount = 1
Ejemplo n.º 5
0
 def get_list_resources(self):
     """Get the list of resource names for the server"""
     irods_resc = irods.getResources(self.conn)
     return [resc.getName() for resc in irods_resc]