def __init__(self, dirname, bootstrapPort): self.dirname = dirname self.commPort = getFreePort(5000) self.comm = ChunkSafeComm(self.commPort) self.comm.joinNetwork([("127.0.0.1", bootstrapPort)]) self.name = hashlib.sha1(dirname).hexdigest() + ".tar.bz2" print self.name
def __init__(self, udpPort, backupDir=None, storeDir=None, backupTime=None, bootstrapAddr=None, bootstrapPort=None): # Set parameters self.commPort = udpPort self.address = socket.gethostbyname(socket.gethostname()) if backupDir != None and storeDir != None: # New node - params specified on command line self.serverPort = udpPort + 500 self.backupDir = backupDir self.storageDir = storeDir self.backupTime = backupTime print "Time: " + str(self.backupTime) self.saveParams() else: # Resuming node - load parameters try: self.loadParams() except IOError: print "Can't resume node, there is no saved state in this directory!" exit(1) # Create and store helper objects self.reactor = reactor dataStore = datastore.SQLiteDataStore(str(udpPort) + ".db") self.comm = ChunkSafeComm(self.commPort, dataStore) self.backup = BackupDir(self.backupDir, self.storageDir) self.server = ChunkServer(self.serverPort, self.reactor, os.getcwd()) # Connect to the Entangled network if bootstrapAddr != None and bootstrapPort != None: self.comm.joinNetwork([(bootstrapAddr, bootstrapPort)]) else: self.comm.joinNetwork(None) # Schedule the backup self.reactor.callLater(self.secsToBackup(), self.backUp, None) def sigHandler(signum, frame): self.reactor.callLater(0, self.backUp, None) signal.signal(signal.SIGUSR1, sigHandler)