summaryrefslogtreecommitdiffstats
path: root/nova/compute
diff options
context:
space:
mode:
authorSoren Hansen <soren.hansen@rackspace.com>2010-07-23 23:55:39 +0200
committerSoren Hansen <soren.hansen@rackspace.com>2010-07-23 23:55:39 +0200
commitabac2033b4aeb399786735a94ce2ddf5c64e6e9e (patch)
treee6961ee03f9c9c19c408aeec2512e4bdbfafdaad /nova/compute
parentf3350750a7c68b191c3a85ac9caa5eff59b182a6 (diff)
Add (completely untested) code to include an Authorization header for the S3 request to fetch an image.
Diffstat (limited to 'nova/compute')
-rw-r--r--nova/compute/node.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/nova/compute/node.py b/nova/compute/node.py
index 4683f1c8d..7c09d9583 100644
--- a/nova/compute/node.py
+++ b/nova/compute/node.py
@@ -25,6 +25,7 @@ Compute Node:
"""
import base64
+import boto.utils
import json
import logging
import os
@@ -45,11 +46,13 @@ from nova import fakevirt
from nova import flags
from nova import process
from nova import utils
+from nova.auth import signer
from nova.compute import disk
from nova.compute import model
from nova.compute import network
from nova.objectstore import image # for image_path flag
from nova.volume import storage
+from nova.users import UserManager
FLAGS = flags.FLAGS
@@ -446,8 +449,12 @@ class Instance(object):
def _fetch_s3_image(self, image, path):
url = _image_url('%s/image' % image)
+ user_id = self.datamodel['user_id']
+ user = UserManager.instance().get_user(user_id)
+ auth = signer.Signer(user.secret.encode()).s3_authorization({}, 'GET', url)
+ auth_header = 'Authorization: %s:%s' % (user_id, auth)
d = process.simple_execute(
- 'curl --silent %s -o %s' % (url, path))
+ 'curl --silent %s -o "%s"' % (url, auth_header, path))
return d
def _fetch_local_image(self, image, path):