- ### locating the right slicefamily
- # this is a first draft, and more a proof of concept thing
- # the idea is to parse vref for dash-separated wishes,
- # and to project these against the defaults
- # so e.g. if the default slice family (as found in /etc/planetlab/slicefamily)
- # is planetlab-f8-i386, then here is what we get
- # vref=x86_64 -> vuseradd -t planetlab-f8-x86_64
- # vref=centos5 -> vuseradd -t planetlab-centos5-i386
- # vref=centos5-onelab -> vuseradd -t onelab-centos5-i386
- # vref=planetflow -> vuseradd -t planetflow-f8-i386
- # vref=x86_64-planetflow -> vuseradd -t planetflow-f8-x86_64
-
- # default
- default=file("/etc/planetlab/slicefamily").read().strip()
- (pldistro,fcdistro,arch) = default.split("-")
-
- known_archs = [ 'i386', 'x86_64' ]
- known_fcdistros = [ 'f8', 'f9', 'centos5' ]
- # from the slice attribute: cut dashes and try to figure the meaning
- slice_wishes = vref.split("-")
- for wish in slice_wishes:
- if wish in known_archs:
- arch=wish
- elif wish in known_fcdistros:
- fcdistro=wish
- else:
- pldistro=wish
-
- # rejoin the parts
- refname="-".join( (pldistro,fcdistro,arch) )
-
- # check the template exists -- there's probably a better way..
- if not os.path.isdir ("/vservers/.vref/%s"%refname):
- logger.log("%s (%s) : vref %s not found, using default %s"%(
- name,vref,refname,default))
- refname=default
- # reset so arch is right
- (pldistro,fcdistro,arch) = default.split("-")
- # could check again, but as we have /etc/slicefamily
- # there's probably no /vservers/.vref/default
-
- except IOError:
- # have not found slicefamily
- logger.log("%s (%s): legacy node - using fallback vrefname 'default'"%(name,vref))
- # for legacy nodes
- refname="default"
- arch="i386"