summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
authorSandy Walsh <sandy.walsh@rackspace.com>2011-01-25 16:51:02 -0600
committerSandy Walsh <sandy.walsh@rackspace.com>2011-01-25 16:51:02 -0600
commitf04b58b1eacccf29162d9898e428ae84a62b3d9c (patch)
tree42a620a053c5a28791333bae91440234f216454a /nova
parent078914a7b6b517cb2929b5f3e27e5a327447e801 (diff)
parent7ff50565f33f3e854fe6261bb6c7be36f1ddbd9b (diff)
downloadnova-f04b58b1eacccf29162d9898e428ae84a62b3d9c.tar.gz
nova-f04b58b1eacccf29162d9898e428ae84a62b3d9c.tar.xz
nova-f04b58b1eacccf29162d9898e428ae84a62b3d9c.zip
another trunk merge
Diffstat (limited to 'nova')
-rw-r--r--nova/api/openstack/__init__.py3
-rw-r--r--nova/api/openstack/servers.py29
-rw-r--r--nova/virt/libvirt_conn.py8
3 files changed, 21 insertions, 19 deletions
diff --git a/nova/api/openstack/__init__.py b/nova/api/openstack/__init__.py
index f2caac483..c70bb39ed 100644
--- a/nova/api/openstack/__init__.py
+++ b/nova/api/openstack/__init__.py
@@ -38,9 +38,6 @@ from nova.api.openstack import shared_ip_groups
LOG = logging.getLogger('nova.api.openstack')
FLAGS = flags.FLAGS
-flags.DEFINE_string('os_krm_mapping_file',
- 'krm_mapping.json',
- 'Location of OpenStack Flavor/OS:EC2 Kernel/Ramdisk/Machine JSON file.')
flags.DEFINE_bool('allow_admin_api',
False,
'When True, this API service will accept admin operations.')
diff --git a/nova/api/openstack/servers.py b/nova/api/openstack/servers.py
index 32249b80e..9d308ea24 100644
--- a/nova/api/openstack/servers.py
+++ b/nova/api/openstack/servers.py
@@ -124,18 +124,22 @@ class Controller(wsgi.Controller):
return faults.Fault(exc.HTTPNotFound())
return exc.HTTPAccepted()
- def _get_kernel_ramdisk_from_image(self, image_id):
- mapping_filename = FLAGS.os_krm_mapping_file
-
- image_id = str(image_id)
- with open(mapping_filename) as f:
- mapping = json.load(f)
- if image_id in mapping:
- return mapping[image_id]
+ def _get_kernel_ramdisk_from_image(self, req, image_id):
+ """
+ Machine images are associated with Kernels and Ramdisk images via
+ metadata stored in Glance as 'image_properties'
+ """
+ def lookup(param):
+ _image_id = image_id
+ try:
+ return image['properties'][param]
+ except KeyError:
+ raise exception.NotFound(
+ _("%(param)s property not found for image %(_image_id)s") %
+ locals())
- msg = _("No entry for image '%(image_id)s'"
- " in mapping file '%(mapping_filename)s'") % locals()
- raise exception.NotFound(msg)
+ image = self._image_service.show(req.environ['nova.context'], image_id)
+ return lookup('kernel_id'), lookup('ramdisk_id')
def create(self, req):
""" Creates a new server for a given user """
@@ -147,7 +151,8 @@ class Controller(wsgi.Controller):
req.environ['nova.context'])[0]
image_id = common.get_image_id_from_image_hash(self._image_service,
req.environ['nova.context'], env['server']['imageId'])
- kernel_id, ramdisk_id = self._get_kernel_ramdisk_from_image(image_id)
+ kernel_id, ramdisk_id = self._get_kernel_ramdisk_from_image(
+ req, image_id)
instances = self.compute_api.create(
req.environ['nova.context'],
instance_types.get_by_flavor_id(env['server']['flavorId']),
diff --git a/nova/virt/libvirt_conn.py b/nova/virt/libvirt_conn.py
index 259e19a69..548d82ba9 100644
--- a/nova/virt/libvirt_conn.py
+++ b/nova/virt/libvirt_conn.py
@@ -1268,13 +1268,13 @@ class IptablesFirewallDriver(FirewallDriver):
if(ip_version == 4):
# Allow DHCP responses
dhcp_server = self._dhcp_server_for_instance(instance)
- our_rules += ['-A %s -s %s -p udp --sport 67 --dport 68' %
- (chain_name, dhcp_server)]
+ our_rules += ['-A %s -s %s -p udp --sport 67 --dport 68 '
+ '-j ACCEPT ' % (chain_name, dhcp_server)]
elif(ip_version == 6):
# Allow RA responses
ra_server = self._ra_server_for_instance(instance)
- our_rules += ['-A %s -s %s -p icmpv6' %
- (chain_name, ra_server)]
+ our_rules += ['-A %s -s %s -p icmpv6 '
+ '-j ACCEPT' % (chain_name, ra_server)]
# If nothing matches, jump to the fallback chain
our_rules += ['-A %s -j nova-fallback' % (chain_name,)]