hasRO = True if hasRO : # find a second server to move the RO to then dstSrv,dstP = PS.getNewVolumeLocation(PrjObj.name,ov) if dstSrv == None : sys.stderr.write("found no appropriate location for %s. Skipping\n" % VolObj.name) continue except : # there is no RO, so just skip this. continue print "Moving accompanying RO to %s %s" % (dstSrv,dstP) if not afs.defaultConfig.dryrun : VlD.addsite(v["name"],dstSrv,dstP) VD.release(v["name"]) # only remove accompanying RO from srcSRV if we are sure there is one! for ov in VS.getVolume("%s.readonly" % VolObj.name, cached=False) : if ov.servername == srcFS.servernames[0] and ov.part == srcP : VD.remove("%s.readonly" % v["name"],srcFS.servernames[0],srcP) break movedVolcount += 1 if movedVolcount > afs.defaultConfig.maxnum and afs.defaultConfig.maxnum > 0 : print "moved %d volumes. Terminating." % afs.defaultConfig.maxnum sys.exit(0) # check if partition is freed enough parts=FS.getPartitions(afs.defaultConfig.ssrv) if parts[srcP]["free"] > untilFree and untilFree > 0 : print "%s bytes free on spart %s." % (afs.util.afsutil.humanReadableSize(parts[srcP]["free"]),srcP ) break if afs.defaultConfig.moveSolitaryROVols : for v in solitaryROVols : # get RWVolName RWVolName=v['name'][:-len(".readonly")] # check for moving osd-volumes
parseDefaultConfig(myParser) VD = VolumeLLA() VS = VolService() try: VolGroup = VS.getVolGroup(afs.defaultConfig.VolumeName) except: print "Cannot get Volume group for %s. Are you sure it exists?" % afs.defaultConfig.VolumeName sys.exit(2) print "Removing volume %s on following sites:" % afs.defaultConfig.VolumeName print afs.defaultConfig.VolumeName, VolGroup["RW"][0].servername, VolGroup["RW"][0].part for v in VolGroup["RO"]: print v.servername, v.part sure = raw_input("Are you sure: [y/N] ?") if not sure in ["y", "Y"]: print "Aborted." sys.exit(1) print "Removing RW from: ", VolGroup["RW"][0].servername, VolGroup["RW"][0].part VD.remove(afs.defaultConfig.VolumeName, VolGroup["RW"][0].servername, VolGroup["RW"][0].part) for v in VolGroup["RO"]: print "Removing RO from :", v.servername, v.part VD.remove(afs.defaultConfig.VolumeName + ".readonly", v.servername, v.part)