- def create(name, vref = None):
- if vref is not None:
- logger.log_call('/usr/sbin/vuseradd', '-t', vref, name)
- else:
- logger.log_call('/usr/sbin/vuseradd', name)
- open('/vservers/%s/etc/slicename' % name, 'w').write(name)
+ def create(name, rec = None):
+ logger.verbose('sliver_vs: %s: create'%name)
+ vref = rec['vref']
+ if vref is None:
+ logger.log("sliver_vs: %s: ERROR - no vref attached, this is unexpected"%(name))
+ # added by caglar
+ # band-aid for short period as old API doesn't have GetSliceFamily function
+ #return
+ vref = "planetlab-f8-i386"
+
+ # used to look in /etc/planetlab/family,
+ # now relies on the 'GetSliceFamily' extra attribute in GetSlivers()
+ # which for legacy is still exposed here as the 'vref' key
+
+ # check the template exists -- there's probably a better way..
+ if not os.path.isdir ("/vservers/.vref/%s"%vref):
+ logger.log ("sliver_vs: %s: ERROR Could not create sliver - vreference image %s not found"%(name,vref))
+ return
+
+ # guess arch
+ try:
+ (x,y,arch)=vref.split('-')
+ # mh, this of course applies when 'vref' is e.g. 'netflow'
+ # and that's not quite right
+ except:
+ arch='i386'
+
+ def personality (arch):
+ personality="linux32"
+ if arch.find("64")>=0:
+ personality="linux64"
+ return personality
+
+ command=[]
+ # be verbose
+ command += ['/bin/bash','-x',]
+ command += ['/usr/sbin/vuseradd', ]
+ if 'attributes' in rec and 'isolate_loopback' in rec['attributes'] and rec['attributes']['isolate_loopback'] == '1':
+ command += [ "-i",]
+ # the vsliver imge to use
+ command += [ '-t', vref, ]
+ # slice name
+ command += [ name, ]
+ logger.log_call(command, timeout=15*60)
+ # export slicename to the slice in /etc/slicename
+ file('/vservers/%s/etc/slicename' % name, 'w').write(name)
+ file('/vservers/%s/etc/slicefamily' % name, 'w').write(vref)
+ # set personality: only if needed (if arch's differ)
+ if tools.root_context_arch() != arch:
+ file('/etc/vservers/%s/personality' % name, 'w').write(personality(arch)+"\n")
+ logger.log('sliver_vs: %s: set personality to %s'%(name,personality(arch)))