Merge lp:~rvb/maas/enlistment-user-data into lp:~maas-committers/maas/trunk

Proposed by Raphaël Badin
Status: Merged
Approved by: Raphaël Badin
Approved revision: no longer in the source branch.
Merged at revision: 1383
Proposed branch: lp:~rvb/maas/enlistment-user-data
Merge into: lp:~maas-committers/maas/trunk
Diff against target: 60 lines (+23/-3)
2 files modified
src/metadataserver/api.py (+3/-1)
src/metadataserver/tests/test_api.py (+20/-2)
To merge this branch: bzr merge lp:~rvb/maas/enlistment-user-data
Reviewer Review Type Date Requested Status
Gavin Panella (community) Approve
Review via email: mp+136670@code.launchpad.net

Commit message

Fix the enlistment user data: use the maas_url stored on the related nodegroup.

To post a comment you must log in.
Revision history for this message
Gavin Panella (allenap) wrote :

Looks good.

[1]

+        ng_url = 'http://%s' % factory.make_name('host')
...
+        ud_url = reverse('enlist-metadata-user-data', args=['latest'])

I'm running a bit slow today, but it took me a while to figure out
what the prefixes ng and ud here meant.

[2]

+            MatchesAll(*[Contains(ng_url), Not(Contains(maas_url))]))

Or:

            MatchesAll(Contains(ng_url), Not(Contains(maas_url)))

?

review: Approve
Revision history for this message
Raphaël Badin (rvb) wrote :

> Looks good.
>
> [1]
[...]
> [2]
[...]

Fixed, thanks for the review!

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/metadataserver/api.py'
2--- src/metadataserver/api.py 2012-11-27 10:26:19 +0000
3+++ src/metadataserver/api.py 2012-11-28 15:14:21 +0000
4@@ -377,7 +377,9 @@
5
6 def read(self, request, version):
7 check_version(version)
8- return HttpResponse(get_enlist_userdata(), mimetype="text/plain")
9+ nodegroup = find_nodegroup(request)
10+ return HttpResponse(
11+ get_enlist_userdata(nodegroup=nodegroup), mimetype="text/plain")
12
13
14 class EnlistVersionIndexHandler(OperationsHandler):
15
16=== modified file 'src/metadataserver/tests/test_api.py'
17--- src/metadataserver/tests/test_api.py 2012-11-26 08:52:01 +0000
18+++ src/metadataserver/tests/test_api.py 2012-11-28 15:14:21 +0000
19@@ -53,7 +53,11 @@
20 from mock import Mock
21 from netaddr import IPNetwork
22 from provisioningserver.enum import POWER_TYPE
23-from testtools.matchers import Contains
24+from testtools.matchers import (
25+ Contains,
26+ MatchesAll,
27+ Not,
28+ )
29
30
31 class TestHelpers(DjangoTestCase):
32@@ -722,13 +726,27 @@
33 # instance-id must be available
34 ud_url = reverse('enlist-metadata-user-data', args=['latest'])
35 fake_preseed = factory.getRandomString()
36- self.patch(api, "get_enlist_userdata", lambda: fake_preseed)
37+ self.patch(
38+ api, "get_enlist_userdata", Mock(return_value= fake_preseed))
39 response = self.client.get(ud_url)
40 self.assertEqual(
41 (httplib.OK, "text/plain", fake_preseed),
42 (response.status_code, response["Content-Type"], response.content),
43 response)
44
45+ def test_get_userdata_detects_request_origin(self):
46+ nodegroup_url = 'http://%s' % factory.make_name('host')
47+ maas_url = 'http://%s' % factory.make_hostname()
48+ self.patch(settings, 'DEFAULT_MAAS_URL', maas_url)
49+ network = IPNetwork("10.1.1/24")
50+ ip = factory.getRandomIPInNetwork(network)
51+ factory.make_node_group(maas_url=nodegroup_url, network=network)
52+ url = reverse('enlist-metadata-user-data', args=['latest'])
53+ response = self.client.get(url, SERVER_NAME=ip)
54+ self.assertThat(
55+ response.content,
56+ MatchesAll(Contains(nodegroup_url), Not(Contains(maas_url))))
57+
58 def test_metadata_list(self):
59 # /enlist/latest/metadata request should list available keys
60 md_url = reverse('enlist-metadata-meta-data', args=['latest', ""])