from afs.model.Partition import Partition
from afs.model.ExtendedPartitionAttributes import ExtPartAttr
from afs.dao.UbikPeerDAO import UbikPeerDAO
from afs.dao.OSDVolumeDAO import OSDVolumeDAO


myParser=argparse.ArgumentParser(parents=[afs.argParser], add_help=False)
myParser.add_argument("--prj", dest="ProjectName", help="Name of Project")
myParser.add_argument("--volname", dest="VolumeName", required=True, help="Name of Volume")
myParser.add_argument("--voltype", dest="VolumeType", default="RW", help="Type of Volume")
myParser.add_argument("--force", action='store_true', dest="force", default=False, help="force creation, even if Volume does not fit in given project")

parseDefaultConfig(myParser)

PS=ProjectService()
# we get a list of Projects, sorted by the Nesting Level.
# only get the most specific one
PrjObj=PS.getProjectsByVolumeName(afs.defaultConfig.VolumeName)[0]

if afs.defaultConfig.ProjectName != None :
    thisPrjObj=PS.getProjectByName(afs.defaultConfig.ProjectName)
    if thisPrjObj == None :
        myParser.error("Project \"%s\" does not exist" % afs.defaultConfig.ProjectName)
    if thisPrjObj.id != PrjObj.id :
        if not afs.defaultConfig.force :
            myParser.error("VolumeName \"%s\" not matched by given Project \"%s\"\n" % (afs.defaultConfig.VolumeName,afs.defaultConfig.ProjectName))
            sys.exit(1)
        PrjObj = thisPrjObj

print (PS.getNewVolumeLocation(thisPrjObj.name,afs.defaultConfig.VolumeType))
Exemple #2
0
VlD=VLDbLLA()
FsD=FileSystemLLA()

VolumeType = afs.defaultConfig.VolumeType
if afs.defaultConfig.VolumeName[-9:] == ".readonly"  :
    VolumeName = afs.defaultConfig.VolumeName[:-9]
    VolumeType = "RO"
else :
    VolumeName = afs.defaultConfig.VolumeName

VolSize=parseHumanWriteableSize(afs.defaultConfig.VolumeSize)/1024
PS=ProjectService()
# we get a list of Projects, sorted by the Nesting Level.
# only get the most specific one

PrjObj=PS.getProjectsByVolumeName(VolumeName)[0]
if afs.defaultConfig.ProjectName != None :
    thisPrjObj=PS.getProjectByName(afs.defaultConfig.ProjectName)
    if thisPrjObj == None :
        myParser.error("Project \"%s\" does not exist" % afs.defaultConfig.ProjectName)
    if thisPrjObj.id != PrjObj.id :
        if not afs.defaultConfig.force :
            myParser.error("VolumeName \"%s\" not matched by given Project \"%s\"\n" % (VolumeName,afs.defaultConfig.ProjectName))
            sys.exit(1)
        PrjObj = thisPrjObj
    
if not PrjObj :
    sys.stderr.write("Cannot guess Project for volume %s" % VolumeName)
VolObj=Volume()
VolObj.name=VolumeName
VolObj.type=VolumeType
Exemple #3
0
    if afs.defaultConfig.moveRWVols :
        for v in RWVols :
           
            # check for name with given regex, these checks are mutually exclusive.
            skip_it=False
            if afs.defaultConfig.ignoreRX != None :
                skip_it=False
                for rx in ignoreRX :
                    if rx.match(v["name"]) : skip_it = True
            elif afs.defaultConfig.onlyRX != None :
                skip_it=True
                for rx in onlyRX :
                    if rx.match(v["name"]) : skip_it = False
            elif afs.defaultConfig.onlyProjects != None :
                skip_it=True
                volProjects=PS.getProjectsByVolumeName(v["name"])
                for prj in volProjects :
                    if prj.name in afs.defaultConfig.onlyProjects : skip_it = False
            elif afs.defaultConfig.ignoreProjects != None :
                skip_it=False
                volProjects=PS.getProjectsByVolumeName(v["name"])
                for prj in volProjects :
                    if prj.name in afs.defaultConfig.ignoreProjects : skip_it = True

            if skip_it  : continue

            # check for moving osd-volumes
            if v.get("osdPolicy",0) != 0 :
                if not afs.defaultConfig.moveOSDVOlumes : 
                    print "Skipping %s, because it is an OSD-Volume" % v["name"]
                    continue