cloudURL = cloudURL.replace('http://', '')
(cloud['ip'], parts) = cloudURL.split(':')
- # Read the bundle images config file.
- if not os.path.exists('/etc/sfa/bundle_image.conf') and \
- not os.path.exists('bundle_image.conf'):
- print >>sys.stderr, 'Could not find bundle_image.conf'
- raise Exception('Could not find bundle_image.conf')
- imageBundleParser = ConfigParser()
- imageBundleParser.read(['/etc/sfa/bundle_image.conf', 'bundle_image.conf'])
+ # Create image bundles
+ images = getEucaConnection().get_all_images()
+ cloud['images'] = images
cloud['imageBundles'] = {}
- for bundle in imageBundleParser.sections():
- info = dict(imageBundleParser.items(bundle))
- cloud['imageBundles'][bundle] = info
+ for i in images:
+ if i.type != 'machine' or i.kernel_id is None: continue
+ name = os.path.dirname(i.location)
+ detail = {'imageID' : i.id, 'kernelID' : i.kernel_id, 'ramdiskID' : i.ramdisk_id}
+ cloud['imageBundles'][name] = detail
# Initialize sqlite3 database.
dbPath = '/etc/sfa/db'
xml << eucaInst['state']
with xml.public_dns:
xml << eucaInst['public_dns']
- with xml.keypair:
- xml << eucaInst['key']
def __imageBundleXML(self, bundles):
xml = self.eucaRSpec
print >>sys.stderr, 'bundle: %r' % bundle
sys.stderr.flush()
with xml.bundle(id=bundle):
- with xml.description:
- xml << bundles[bundle]['description']
+ xml << ''
##
# Creates the Images stanza.
with xml.cloud(id=cloud['name']):
with xml.ipv4:
xml << cloud['ip']
- self.__keyPairsXML(cloud['keypairs'])
- self.__imagesXML(cloud['images'])
+ #self.__keyPairsXML(cloud['keypairs'])
+ #self.__imagesXML(cloud['images'])
self.__imageBundleXML(cloud['imageBundles'])
self.__clustersXML(cloud['clusters'])
return str(xml)
# Images
images = conn.get_all_images()
cloud['images'] = images
+ cloud['imageBundles'] = {}
+ for i in images:
+ if i.type != 'machine' or i.kernel_id is None: continue
+ name = os.path.dirname(i.location)
+ detail = {'imageID' : i.id, 'kernelID' : i.kernel_id, 'ramdiskID' : i.ramdisk_id}
+ cloud['imageBundles'][name] = detail
# Key Pairs
keyPairs = conn.get_all_key_pairs()
if requests:
# Get all the public keys associate with slice.
pubKeys = getKeysForSlice(s.slice_hrn)
- print sys.stderr, "Passing the following keys to the instance:\n%s" % pubKeys
+ print >>sys.stderr, "Passing the following keys to the instance:\n%s" % pubKeys
for req in requests:
vmTypeElement = req.getparent()
instType = vmTypeElement.get('name')
numInst = int(req.find('instances').text)
- instKernel = req.find('kernel_image').get('id')
- instDiskImg = req.find('disk_image').get('id')
- instKey = req.find('keypair').text
- ramDiskElement = req.find('ramdisk')
- ramDiskAttr = ramDiskElement.attrib
- if 'id' in ramDiskAttr:
- instRamDisk = ramDiskAttr['id']
- else:
- instRamDisk = None
+ bundleName = req.find('bundle').text
+ if not cloud['imageBundles'][bundleName]:
+ print >>sys.stderr, 'Cannot find bundle %s' % bundleName
+ bundleInfo = cloud['imageBundles'][bundleName]
+ instKernel = bundleInfo['kernelID']
+ instDiskImg = bundleInfo['imageID']
+ instRamDisk = bundleInfo['ramdiskID']
+ instKey = None
# Create the instances
for i in range(0, numInst):