summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNaveed Massjouni <naveedm9@gmail.com>2011-09-08 21:30:21 -0400
committerNaveed Massjouni <naveedm9@gmail.com>2011-09-08 21:30:21 -0400
commitb890b992f3013a1959e3c3cdf1f149cacf4e569b (patch)
treeb2a29c07292b2ad0c3f4c8ee738ef16def154e09
parent236cbc0c13deaef69daba38e83cc7c294ea0bac2 (diff)
downloadnova-b890b992f3013a1959e3c3cdf1f149cacf4e569b.tar.gz
nova-b890b992f3013a1959e3c3cdf1f149cacf4e569b.tar.xz
nova-b890b992f3013a1959e3c3cdf1f149cacf4e569b.zip
Fixing security groups stuff
-rw-r--r--nova/api/openstack/servers.py20
-rw-r--r--nova/tests/api/openstack/contrib/test_createserverext.py6
-rw-r--r--nova/tests/api/openstack/test_versions.py43
3 files changed, 26 insertions, 43 deletions
diff --git a/nova/api/openstack/servers.py b/nova/api/openstack/servers.py
index 6159041e8..7532313e5 100644
--- a/nova/api/openstack/servers.py
+++ b/nova/api/openstack/servers.py
@@ -920,6 +920,13 @@ class ServerXMLSerializer(wsgi.XMLDictSerializer):
addresses_elem = self._create_addresses_node(
server_dict.get('addresses', {}))
server_elem.append(addresses_elem)
+ groups = server_dict.get('security_groups')
+ if groups:
+ groups_elem = etree.SubElement(server_elem, 'security_groups')
+ for group in groups:
+ group_elem = etree.SubElement(groups_elem,
+ 'security_group')
+ group_elem.set('name', group['name'])
for link in server_dict.get('links', []):
elem = etree.SubElement(server_elem,
@@ -963,19 +970,6 @@ class ServerXMLSerializer(wsgi.XMLDictSerializer):
self._populate_server(server, server_dict['server'], True)
return self._to_xml(server)
- def _security_group_to_xml(self, doc, security_group):
- node = doc.createElement('security_group')
- node.setAttribute('name', str(security_group.get('name')))
- return node
-
- def _create_security_groups_node(self, xml_doc, security_groups):
- security_groups_node = xml_doc.createElement('security_groups')
- if security_groups:
- for security_group in security_groups:
- node = self._security_group_to_xml(xml_doc, security_group)
- security_groups_node.appendChild(node)
- return security_groups_node
-
def create_resource(version='1.0'):
controller = {
diff --git a/nova/tests/api/openstack/contrib/test_createserverext.py b/nova/tests/api/openstack/contrib/test_createserverext.py
index 078b72d67..03c7d1ec5 100644
--- a/nova/tests/api/openstack/contrib/test_createserverext.py
+++ b/nova/tests/api/openstack/contrib/test_createserverext.py
@@ -49,9 +49,13 @@ INSTANCE = {
"id": 1,
"display_name": "test_server",
"uuid": FAKE_UUID,
+ "user_id": 'fake_user_id',
+ "tenant_id": 'fake_tenant_id',
"created_at": datetime.datetime(2010, 10, 10, 12, 0, 0),
"updated_at": datetime.datetime(2010, 11, 11, 11, 0, 0),
- "security_groups": [{"id": 1, "name": "test"}]
+ "security_groups": [{"id": 1, "name": "test"}],
+ "image_ref": 'http://foo.com/123',
+ "instance_type": {"flavorid": '124'},
}
diff --git a/nova/tests/api/openstack/test_versions.py b/nova/tests/api/openstack/test_versions.py
index 8b60db71e..686752509 100644
--- a/nova/tests/api/openstack/test_versions.py
+++ b/nova/tests/api/openstack/test_versions.py
@@ -23,10 +23,11 @@ from lxml import etree
from nova import context
from nova import test
-from nova.tests.api.openstack import fakes
from nova.api.openstack import versions
from nova.api.openstack import views
from nova.api.openstack import wsgi
+from nova.tests.api.openstack import common
+from nova.tests.api.openstack import fakes
NS = {
'atom': 'http://www.w3.org/2005/Atom',
@@ -243,12 +244,12 @@ class VersionsTest(test.TestCase):
self.assertTrue(version.xpath('/ns:version', namespaces=NS))
media_types = version.xpath('ns:media-types/ns:media-type',
namespaces=NS)
- self.assertTrue(_compare_media_types(media_types,
+ self.assertTrue(common.compare_media_types(media_types,
expected['media-types']))
for key in ['id', 'status', 'updated']:
self.assertEqual(version.get(key), expected[key])
links = version.xpath('atom:link', namespaces=NS)
- self.assertTrue(_compare_links(links,
+ self.assertTrue(common.compare_links(links,
[{'rel': 'self', 'href': 'http://localhost/v1.0/'}]
+ expected['links']))
@@ -264,12 +265,12 @@ class VersionsTest(test.TestCase):
self.assertTrue(version.xpath('/ns:version', namespaces=NS))
media_types = version.xpath('ns:media-types/ns:media-type',
namespaces=NS)
- self.assertTrue(_compare_media_types(media_types,
+ self.assertTrue(common.compare_media_types(media_types,
expected['media-types']))
for key in ['id', 'status', 'updated']:
self.assertEqual(version.get(key), expected[key])
links = version.xpath('atom:link', namespaces=NS)
- self.assertTrue(_compare_links(links,
+ self.assertTrue(common.compare_links(links,
[{'rel': 'self', 'href': 'http://localhost/v1.1/'}]
+ expected['links']))
@@ -291,7 +292,7 @@ class VersionsTest(test.TestCase):
for key in ['id', 'status', 'updated']:
self.assertEqual(version.get(key), expected[key])
(link,) = version.xpath('atom:link', namespaces=NS)
- self.assertTrue(_compare_links(link,
+ self.assertTrue(common.compare_links(link,
[{'rel': 'self', 'href': 'http://localhost/%s/' % v}]))
def test_get_version_1_0_detail_atom(self):
@@ -496,10 +497,10 @@ class VersionsTest(test.TestCase):
self.assertEqual(version.get('status'), 'CURRENT')
media_types = version.xpath('ns:media-types/ns:media-type',
namespaces=NS)
- self.assertTrue(_compare_media_types(media_types,
+ self.assertTrue(common.compare_media_types(media_types,
VERSIONS['v1.1']['media-types']))
links = version.xpath('atom:link', namespaces=NS)
- self.assertTrue(_compare_links(links,
+ self.assertTrue(common.compare_links(links,
[{'rel': 'self', 'href': 'http://localhost/v1.1/images/1'}]))
version = versions[1]
@@ -507,10 +508,10 @@ class VersionsTest(test.TestCase):
self.assertEqual(version.get('status'), 'DEPRECATED')
media_types = version.xpath('ns:media-types/ns:media-type',
namespaces=NS)
- self.assertTrue(_compare_media_types(media_types,
+ self.assertTrue(common.compare_media_types(media_types,
VERSIONS['v1.0']['media-types']))
links = version.xpath('atom:link', namespaces=NS)
- self.assertTrue(_compare_links(links,
+ self.assertTrue(common.compare_links(links,
[{'rel': 'self', 'href': 'http://localhost/v1.0/images/1'}]))
def test_multi_choice_server_atom(self):
@@ -654,7 +655,7 @@ class VersionsSerializerTests(test.TestCase):
versions_data['versions'][0]['status'])
(link,) = version.xpath('atom:link', namespaces=NS)
- self.assertTrue(_compare_links(link, [{
+ self.assertTrue(common.compare_links(link, [{
'rel': 'self',
'href': 'http://test/2.7.1',
'type': 'application/atom+xml'}]))
@@ -693,11 +694,11 @@ class VersionsSerializerTests(test.TestCase):
media_types = version.xpath('ns:media-types/ns:media-type',
namespaces=NS)
- self.assertTrue(_compare_media_types(media_types,
+ self.assertTrue(common.compare_media_types(media_types,
versions_data['choices'][0]['media-types']))
(link,) = version.xpath('atom:link', namespaces=NS)
- self.assertTrue(_compare_links(link,
+ self.assertTrue(common.compare_links(link,
versions_data['choices'][0]['links']))
def test_version_detail_xml_serializer(self):
@@ -882,19 +883,3 @@ class VersionsSerializerTests(test.TestCase):
'servers/api/v1.1/application.wadl',
},
])
-
-
-def _compare_links(actual, expected):
- return _compare_tree_to_dict(actual, expected, ('rel', 'href', 'type'))
-
-
-def _compare_media_types(actual, expected):
- return _compare_tree_to_dict(actual, expected, ('base', 'type'))
-
-
-def _compare_tree_to_dict(actual, expected, keys):
- for elem, data in zip(actual, expected):
- for key in keys:
- if elem.get(key) != data.get(key):
- return False
- return True