Пример #1
0
    def mkdir(self,foldername,frominode):
        if not primitiveFunc.checkValidFilename(foldername):
            raise ex.exception_folder.invalidFilenameException(u"invalid filename @ mkdir")

        par=fd.getInstance(frominode,self.io)
        flist=par.getFile()
        flist.checkOut()
        if foldername in flist.kvm:
            raise ex.exception_folder.fileOperationException(u"folder already exist @ mkdir")

        nf=fd.getInstance(genGlobalUniqueName(),self.io)

        fmap=kvmap(None)
        fmap.checkOut()
        fmap.kvm[u"."]=(nf.filename,utils.timestamp.getTimestamp())
        fmap.kvm[u".."]=(frominode,utils.timestamp.getTimestamp())
        fmap.checkIn()
        nf.commitPatch(fmap)

        fmap=kvmap(None)
        fmap.setTimestamp(utils.timestamp.getTimestamp(flist.getTimestamp()))
        fmap.checkOut()
        fmap.kvm[foldername]=(nf.filename,flist.getRelativeTS(foldername))
        fmap.checkIn()
        par.commitPatch(fmap)
Пример #2
0
 def formatfs(self):
     # format the container. Attentez! No deletion is garanteed!
     nf=fd.getInstance(root_iNode_name,self.io)
     fmap=kvmap(None)
     fmap.checkOut()
     fmap.kvm[u"."]=(root_iNode_name,utils.timestamp.getTimestamp())
     fmap.kvm[u".."]=(root_iNode_name,utils.timestamp.getTimestamp())
     fmap.checkIn()
     nf.commitPatch(fmap)
Пример #3
0
 def list(self,frominode):
     inodefile=fd.getInstance(frominode,self.io).getFile()
     if inodefile==None:
         raise ex.exception_folder.iNodeNonexistException(u"invalid inode @ listAll")
     inodefile.checkOut()
     ret=[]
     for f in inodefile.kvm:
         if u"/" not in f:
             ret.append(f)
     return ret
Пример #4
0
def lookUp(inode,vfilename,io):
    '''inode is the name of inode index. vfilename is the filename looking for, without
    '/' in it.
    '''
    if not checkValidFilename(vfilename):
        raise ex.exception_folder.invalidFilenameException(u"invalid filename @ lookup")
    inodefile=fd.getInstance(inode,io).getFile()
    if inodefile==None:
        raise ex.exception_folder.iNodeNonexistException(u"invalid inode @ lookup")
    inodefile.checkOut()
    if vfilename not in inodefile.kvm:
        return None
    return inodefile.kvm[vfilename][0]
Пример #5
0
    def rm(self,foldername,frominode):
        # Attentez: this remove will remove the whole folder, no matter whether there's
        # anything in it.
        if not primitiveFunc.checkValidFilename(foldername):
            raise ex.exception_folder.invalidFilenameException(u"invalid filename @ mkdir")

        par=fd.getInstance(frominode,self.io)
        flist=par.getFile()
        flist.checkOut()
        if foldername not in flist.kvm:
            return

        fmap=kvmap(None)
        fmap.setTimestamp(utils.timestamp.getTimestamp(flist.getTimestamp()))
        fmap.checkOut()
        fmap.kvm[foldername]=(kvmap.REMOVE_SPECIFIED,flist.getRelativeTS(foldername))
        fmap.checkIn()
        par.commitPatch(fmap)