← Back to team overview

launchpad-reviewers team mailing list archive

[Merge] lp:~rvb/maas/api-maas-import-pxe-files-2 into lp:maas

 

Raphaël Badin has proposed merging lp:~rvb/maas/api-maas-import-pxe-files-2 into lp:maas with lp:~rvb/maas/api-maas-import-pxe-files as a prerequisite.

Commit message:
Add api call to call the task import_pxe_files

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)

For more details, see:
https://code.launchpad.net/~rvb/maas/api-maas-import-pxe-files-2/+merge/132913
-- 
https://code.launchpad.net/~rvb/maas/api-maas-import-pxe-files-2/+merge/132913
Your team Launchpad code reviewers is requested to review the proposed merge of lp:~rvb/maas/api-maas-import-pxe-files-2 into lp:maas.
=== modified file 'src/maasserver/api.py'
--- src/maasserver/api.py	2012-11-01 11:45:29 +0000
+++ src/maasserver/api.py	2012-11-05 15:42:20 +0000
@@ -1282,6 +1282,13 @@
                 {ip: leases[ip] for ip in new_leases if ip in leases})
         return HttpResponse("Leases updated.", status=httplib.OK)
 
+    @operation(idempotent=False)
+    def import_pxe_files(self, request, uuid):
+        """Import the pxe files on this cluster controller."""
+        nodegroup = get_object_or_404(NodeGroup, uuid=uuid)
+        nodegroup.import_pxe_files()
+        return HttpResponse("Import of pxe files started.", status=httplib.OK)
+
     @operation(idempotent=True)
     def list_nodes(self, request, uuid):
         """Get the list of node ids that are part of this group."""

=== modified file 'src/maasserver/tests/test_api.py'
--- src/maasserver/tests/test_api.py	2012-11-02 09:22:01 +0000
+++ src/maasserver/tests/test_api.py	2012-11-05 15:42:20 +0000
@@ -4115,10 +4115,8 @@
 
     def test_nodegroup_list_nodes_works_for_admin(self):
         nodegroup = factory.make_node_group()
-        user = factory.make_user()
-        user.is_superuser = True
-        user.save()
-        client = OAuthAuthenticatedClient(user)
+        admin = factory.make_admin()
+        client = OAuthAuthenticatedClient(admin)
         node = factory.make_node(nodegroup=nodegroup)
         response = client.get(
             reverse('nodegroup_handler', args=[nodegroup.uuid]),
@@ -4129,6 +4127,23 @@
         parsed_result = json.loads(response.content)
         self.assertItemsEqual([node.system_id], parsed_result)
 
+    def test_nodegroup_import_pxe_files_calls_script(self):
+        recorder = self.patch(tasks, 'check_call', Mock())
+        proxy = factory.getRandomString()
+        Config.objects.set_config('http_proxy', proxy)
+        nodegroup = factory.make_node_group()
+        admin = factory.make_admin()
+        client = OAuthAuthenticatedClient(admin)
+        response = client.post(
+            reverse('nodegroup_handler', args=[nodegroup.uuid]),
+            {'op': 'import_pxe_files'})
+        self.assertEqual(
+            httplib.OK, response.status_code,
+            explain_unexpected_response(httplib.OK, response))
+        expected_env = dict(os.environ, http_proxy=proxy, https_proxy=proxy)
+        recorder.assert_called_once_with(
+            ['sudo', '-n', 'maas-import-pxe-files'], env=expected_env)
+
     def make_node_hardware_details_request(self, client, nodegroup=None):
         if nodegroup is None:
             nodegroup = factory.make_node_group()


Follow ups