Merge lp:~rackspace-titan/nova/servers-put-xml-lp829026 into lp:~hudson-openstack/nova/trunk

Proposed by Alex Meade
Status: Merged
Approved by: Rick Harris
Approved revision: 1454
Merged at revision: 1461
Proposed branch: lp:~rackspace-titan/nova/servers-put-xml-lp829026
Merge into: lp:~hudson-openstack/nova/trunk
Diff against target: 145 lines (+127/-0)
2 files modified
nova/api/openstack/servers.py (+6/-0)
nova/tests/api/openstack/test_servers.py (+121/-0)
To merge this branch: bzr merge lp:~rackspace-titan/nova/servers-put-xml-lp829026
Reviewer Review Type Date Requested Status
Rick Harris (community) Approve
Brian Waldon (community) Approve
Review via email: mp+72107@code.launchpad.net

Description of the change

Fixes issue where ServersXMLSerializer was missing a method for update actions

To post a comment you must log in.
Revision history for this message
Brian Waldon (bcwaldon) wrote :

Great work, Alex. Thanks for catching this.

review: Approve
Revision history for this message
Rick Harris (rconradharris) wrote :

Nice catch!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'nova/api/openstack/servers.py'
2--- nova/api/openstack/servers.py 2011-08-14 03:41:01 +0000
3+++ nova/api/openstack/servers.py 2011-08-18 21:03:28 +0000
4@@ -923,6 +923,12 @@
5 node.setAttribute('adminPass', server_dict['server']['adminPass'])
6 return self.to_xml_string(node, True)
7
8+ def update(self, server_dict):
9+ xml_doc = minidom.Document()
10+ node = self._server_to_xml_detailed(xml_doc,
11+ server_dict['server'])
12+ return self.to_xml_string(node, True)
13+
14
15 def create_resource(version='1.0'):
16 controller = {
17
18=== modified file 'nova/tests/api/openstack/test_servers.py'
19--- nova/tests/api/openstack/test_servers.py 2011-08-15 20:31:43 +0000
20+++ nova/tests/api/openstack/test_servers.py 2011-08-18 21:03:28 +0000
21@@ -3740,3 +3740,124 @@
22 """.replace(" ", "") % (locals()))
23
24 self.assertEqual(expected.toxml(), actual.toxml())
25+
26+ def test_update(self):
27+ serializer = servers.ServerXMLSerializer()
28+
29+ fixture = {
30+ "server": {
31+ "id": 1,
32+ "uuid": FAKE_UUID,
33+ 'created': self.TIMESTAMP,
34+ 'updated': self.TIMESTAMP,
35+ "progress": 0,
36+ "name": "test_server",
37+ "status": "BUILD",
38+ "hostId": 'e4d909c290d0fb1ca068ffaddf22cbd0',
39+ "image": {
40+ "id": "5",
41+ "links": [
42+ {
43+ "rel": "bookmark",
44+ "href": self.IMAGE_BOOKMARK,
45+ },
46+ ],
47+ },
48+ "flavor": {
49+ "id": "1",
50+ "links": [
51+ {
52+ "rel": "bookmark",
53+ "href": self.FLAVOR_BOOKMARK,
54+ },
55+ ],
56+ },
57+ "addresses": {
58+ "network_one": [
59+ {
60+ "version": 4,
61+ "addr": "67.23.10.138",
62+ },
63+ {
64+ "version": 6,
65+ "addr": "::babe:67.23.10.138",
66+ },
67+ ],
68+ "network_two": [
69+ {
70+ "version": 4,
71+ "addr": "67.23.10.139",
72+ },
73+ {
74+ "version": 6,
75+ "addr": "::babe:67.23.10.139",
76+ },
77+ ],
78+ },
79+ "metadata": {
80+ "Open": "Stack",
81+ "Number": "1",
82+ },
83+ 'links': [
84+ {
85+ 'href': self.SERVER_HREF,
86+ 'rel': 'self',
87+ },
88+ {
89+ 'href': self.SERVER_BOOKMARK,
90+ 'rel': 'bookmark',
91+ },
92+ ],
93+ }
94+ }
95+
96+ output = serializer.serialize(fixture, 'update')
97+ actual = minidom.parseString(output.replace(" ", ""))
98+
99+ expected_server_href = self.SERVER_HREF
100+ expected_server_bookmark = self.SERVER_BOOKMARK
101+ expected_image_bookmark = self.IMAGE_BOOKMARK
102+ expected_flavor_bookmark = self.FLAVOR_BOOKMARK
103+ expected_now = self.TIMESTAMP
104+ expected_uuid = FAKE_UUID
105+ expected = minidom.parseString("""
106+ <server id="1"
107+ uuid="%(expected_uuid)s"
108+ xmlns="http://docs.openstack.org/compute/api/v1.1"
109+ xmlns:atom="http://www.w3.org/2005/Atom"
110+ name="test_server"
111+ updated="%(expected_now)s"
112+ created="%(expected_now)s"
113+ hostId="e4d909c290d0fb1ca068ffaddf22cbd0"
114+ status="BUILD"
115+ progress="0">
116+ <atom:link href="%(expected_server_href)s" rel="self"/>
117+ <atom:link href="%(expected_server_bookmark)s" rel="bookmark"/>
118+ <image id="5">
119+ <atom:link rel="bookmark" href="%(expected_image_bookmark)s"/>
120+ </image>
121+ <flavor id="1">
122+ <atom:link rel="bookmark" href="%(expected_flavor_bookmark)s"/>
123+ </flavor>
124+ <metadata>
125+ <meta key="Open">
126+ Stack
127+ </meta>
128+ <meta key="Number">
129+ 1
130+ </meta>
131+ </metadata>
132+ <addresses>
133+ <network id="network_one">
134+ <ip version="4" addr="67.23.10.138"/>
135+ <ip version="6" addr="::babe:67.23.10.138"/>
136+ </network>
137+ <network id="network_two">
138+ <ip version="4" addr="67.23.10.139"/>
139+ <ip version="6" addr="::babe:67.23.10.139"/>
140+ </network>
141+ </addresses>
142+ </server>
143+ """.replace(" ", "") % (locals()))
144+
145+ self.assertEqual(expected.toxml(), actual.toxml())