def deleteFile(setting, metadata): '''Workflow of Delete file.''' if setting.deduplication == False: #Acquire write lock if using ZooKeeper: #if setting.zookeeper: setting.zk.getWriteLock(metadata) #cq #Download metadata: storage.downloadMetadata(setting, metadata) #Delete chunk files and metadata: storage.deleteChunkAndMetadata(setting, metadata) #Release write lock: #if setting.zookeeper: setting.zk.releaseWriteLock(metadata) #cq else: orgState = storage.detectOrgState(setting, metadata) if orgState == 3: # non_dup print "remove non_dup" #Download metadata: storage.downloadMetadata(setting, metadata) #Delete chunk files and metadata: storage.deleteChunkAndMetadata(setting, metadata) elif orgState == 2: # leaf print "remove leaf" storage.deletePointer(setting, metadata) elif orgState == 1: # org print "remove org" storage.downloadMetadata(setting, metadata) storage.deleteChunkAndMetadata(setting, metadata) dupFileName = storage.findOnePointer(setting, metadata) dupMetadata = common.FileMetadata(dupFileName, 0, setting.totalnode, setting.coding) storage.deletePointer(setting, dupMetadata) coding.encodeFile(setting,dupMetadata) storage.uploadFileAndMetadata(setting, dupMetadata,'upload') storage.updatePointers(setting,metadata,dupMetadata)
def deleteFile(setting, metadata): '''Workflow of Delete file.''' if setting.deduplication == False: #Acquire write lock if using ZooKeeper: #if setting.zookeeper: setting.zk.getWriteLock(metadata) #cq #Download metadata: storage.downloadMetadata(setting, metadata) #Delete chunk files and metadata: storage.deleteChunkAndMetadata(setting, metadata) #Release write lock: #if setting.zookeeper: setting.zk.releaseWriteLock(metadata) #cq else: orgState = storage.detectOrgState(setting, metadata) if orgState == 3: # non_dup print "remove non_dup" #Download metadata: storage.downloadMetadata(setting, metadata) #Delete chunk files and metadata: storage.deleteChunkAndMetadata(setting, metadata) elif orgState == 2: # leaf print "remove leaf" storage.deletePointer(setting, metadata) elif orgState == 1: # org print "remove org" storage.downloadMetadata(setting, metadata) storage.deleteChunkAndMetadata(setting, metadata) dupFileName = storage.findOnePointer(setting, metadata) dupMetadata = common.FileMetadata(dupFileName, 0, setting.totalnode, setting.coding) storage.deletePointer(setting, dupMetadata) coding.encodeFile(setting, dupMetadata) storage.uploadFileAndMetadata(setting, dupMetadata, 'upload') storage.updatePointers(setting, metadata, dupMetadata)
def uploadFile(setting, metadata): '''Workflow of Upload file.''' if setting.deduplication == False: #Encode file: print "deduplication False, workflow upload file" coding.encodeFile(setting, metadata) #Acquire write lock if using ZooKeeper: #if setting.zookeeper: setting.zk.getWriteLock(metadata) #cq #Upload chunk files and metadata: storage.uploadFileAndMetadata(setting, metadata, 'upload') #Release write lock: #if setting.zookeeper: setting.zk.releaseWriteLock(metadata) #cq else: print "deduplicatoin True, workflow upload file" orgState = storage.detectOrgState(setting, metadata) print "orgState %d" % (orgState) currState = storage.detectCurrState(setting, metadata) print "currState %d" % (currState[0]) if orgState == 3 and currState[0] == 0: # non_dup => non_dup or new => non_dup print 'orgState %d to currState %d' % (orgState, currState[0]) coding.encodeFile(setting, metadata) storage.uploadFileAndMetadata(setting,metadata,'upload') elif orgState == 3 and currState[0] == 1: # non_dup => leaf or new => leaf print 'orgState %d to currState %d' % (orgState, currState[0]) detState = storage.detectReplica(setting, metadata) if detState == True: deleteFile(setting, metadata) storage.createPointer(setting, metadata, currState[1]) storage.uploadPointer(setting, metadata) elif orgState == 2 and currState[0] == 1: # leaf => leaf print 'orgState %d to currState %d' % (orgState, currState[0]) storage.deletePointer(setting,metadata) storage.createPointer(setting,metadata,currState[1]) storage.uploadPointer(setting,metadata) elif orgState == 2 and currState[0] == 0: # leaf => non_dup print 'orgState %d to currState %d' % (orgState, currState[0]) storage.deletePointer(setting,metadata) coding.encodeFile(setting,metadata) storage.uploadFileAndMetadata(setting,metadata,'upload') elif orgState == 1 and currState[0] == 0: # org => non_dup print 'orgState %d to currState %d' % (orgState, currState[0]) coding.encodeFile(setting,metadata) storage.uploadFileAndMetadata(setting,metadata,'upload') dupFileName = storage.findOnePointer(setting,metadata) dupMetadata = common.FileMetadata(dupFileName,0,setting.totalnode,setting.coding) storage.deletePointer(setting,dupMetadata) coding.encodeFile(setting,dupMetadata) storage.uploadFileAndMetadata(setting,dupMetadata,'upload') storage.updatePointers(setting,metadata,dupMetadata) elif orgState == 1 and currState[0] == 1: # org => leaf print 'orgState %d to currState %d' % (orgState, currState[0]) deleteFile(setting,metadata) storage.createPointer(setting,metadata,currState[1]) storage.uploadPointer(setting,metadata) '''
def uploadFile(setting, metadata): '''Workflow of Upload file.''' if setting.deduplication == False: #Encode file: print "deduplication False, workflow upload file" coding.encodeFile(setting, metadata) #Acquire write lock if using ZooKeeper: #if setting.zookeeper: setting.zk.getWriteLock(metadata) #cq #Upload chunk files and metadata: storage.uploadFileAndMetadata(setting, metadata, 'upload') #Release write lock: #if setting.zookeeper: setting.zk.releaseWriteLock(metadata) #cq else: print "deduplicatoin True, workflow upload file" orgState = storage.detectOrgState(setting, metadata) print "orgState %d" % (orgState) currState = storage.detectCurrState(setting, metadata) print "currState %d" % (currState[0]) if orgState == 3 and currState[0] == 0: # non_dup => non_dup or new => non_dup print 'orgState %d to currState %d' % (orgState, currState[0]) coding.encodeFile(setting, metadata) storage.uploadFileAndMetadata(setting, metadata, 'upload') elif orgState == 3 and currState[0] == 1: # non_dup => leaf or new => leaf print 'orgState %d to currState %d' % (orgState, currState[0]) detState = storage.detectReplica(setting, metadata) if detState == True: deleteFile(setting, metadata) storage.createPointer(setting, metadata, currState[1]) storage.uploadPointer(setting, metadata) elif orgState == 2 and currState[0] == 1: # leaf => leaf print 'orgState %d to currState %d' % (orgState, currState[0]) storage.deletePointer(setting, metadata) storage.createPointer(setting, metadata, currState[1]) storage.uploadPointer(setting, metadata) elif orgState == 2 and currState[0] == 0: # leaf => non_dup print 'orgState %d to currState %d' % (orgState, currState[0]) storage.deletePointer(setting, metadata) coding.encodeFile(setting, metadata) storage.uploadFileAndMetadata(setting, metadata, 'upload') elif orgState == 1 and currState[0] == 0: # org => non_dup print 'orgState %d to currState %d' % (orgState, currState[0]) coding.encodeFile(setting, metadata) storage.uploadFileAndMetadata(setting, metadata, 'upload') dupFileName = storage.findOnePointer(setting, metadata) dupMetadata = common.FileMetadata(dupFileName, 0, setting.totalnode, setting.coding) storage.deletePointer(setting, dupMetadata) coding.encodeFile(setting, dupMetadata) storage.uploadFileAndMetadata(setting, dupMetadata, 'upload') storage.updatePointers(setting, metadata, dupMetadata) elif orgState == 1 and currState[0] == 1: # org => leaf print 'orgState %d to currState %d' % (orgState, currState[0]) deleteFile(setting, metadata) storage.createPointer(setting, metadata, currState[1]) storage.uploadPointer(setting, metadata) '''