summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSoren Hansen <soren.hansen@rackspace.com>2010-08-13 11:16:24 +0200
committerSoren Hansen <soren.hansen@rackspace.com>2010-08-13 11:16:24 +0200
commit087980a0520c898d944d99a2193f84cf8fccf725 (patch)
treee71cad362028720b442f06e9aff75c2b6a74f999
parent6eba59be8ef6ea47e1d9657fed72fafbc7c9d6ef (diff)
parent2bbb2b86272c89b35a1042ab2866bbe4863bc3e3 (diff)
Merge with trunk
-rw-r--r--nova/virt/xenapi.py16
1 files changed, 9 insertions, 7 deletions
diff --git a/nova/virt/xenapi.py b/nova/virt/xenapi.py
index b4768cffa..9fe15644f 100644
--- a/nova/virt/xenapi.py
+++ b/nova/virt/xenapi.py
@@ -92,12 +92,13 @@ class XenAPIConnection(object):
mac_address = ''
user = AuthManager().get_user(instance.datamodel['user_id'])
+ project = AuthManager().get_project(instance.datamodel['project_id'])
vdi_uuid = yield self.fetch_image(
- instance.datamodel['image_id'], user, True)
+ instance.datamodel['image_id'], user, project, True)
kernel = yield self.fetch_image(
- instance.datamodel['kernel_id'], user, False)
+ instance.datamodel['kernel_id'], user, project, False)
ramdisk = yield self.fetch_image(
- instance.datamodel['ramdisk_id'], user, False)
+ instance.datamodel['ramdisk_id'], user, project, False)
vdi_ref = yield self._conn.xenapi.VDI.get_by_uuid(vdi_uuid)
vm_ref = yield self.create_vm(instance, kernel, ramdisk)
@@ -195,17 +196,18 @@ class XenAPIConnection(object):
raise Exception('Found no network for bridge %s' % bridge)
- def fetch_image(self, image, user, use_sr):
+ def fetch_image(self, image, user, project, use_sr):
"""use_sr: True to put the image as a VDI in an SR, False to place
it on dom0's filesystem. The former is for VM disks, the latter for
its kernel and ramdisk (if external kernels are being used)."""
url = images.image_url(image)
- logging.debug("Asking xapi to fetch %s as %s" % (url, user.access))
+ access = AuthManager().get_access_key(user, project)
+ logging.debug("Asking xapi to fetch %s as %s" % (url, access))
fn = use_sr and 'get_vdi' or 'get_kernel'
args = {}
args['src_url'] = url
- args['username'] = user.access
+ args['username'] = access
args['password'] = user.secret
if use_sr:
args['add_partition'] = 'true'
@@ -227,7 +229,7 @@ class XenAPIConnection(object):
def get_info(self, instance_id):
vm = self.lookup(instance_id)
if vm is None:
- raise Exception('instance not present %s' % instance.name)
+ raise Exception('instance not present %s' % instance_id)
rec = self._conn.xenapi.VM.get_record(vm)
return {'state': power_state_from_xenapi[rec['power_state']],
'max_mem': long(rec['memory_static_max']) >> 10,