Merge ~cgrabowski/maas:backport_lp2033632_fix_3.3 into maas:3.3

Proposed by Christian Grabowski
Status: Merged
Approved by: Christian Grabowski
Approved revision: 61475a132807281279bea3fdf532e5db553aea06
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~cgrabowski/maas:backport_lp2033632_fix_3.3
Merge into: maas:3.3
Diff against target: 183 lines (+118/-11)
3 files modified
src/maasserver/api/machines.py (+8/-11)
src/maasserver/api/tests/test_enlistment.py (+4/-0)
src/maasserver/api/tests/test_machine.py (+106/-0)
Reviewer Review Type Date Requested Status
MAAS Lander Approve
Christian Grabowski Approve
Review via email: mp+464765@code.launchpad.net

Commit message

Fix lp bug 2033632
https://bugs.launchpad.net/maas/+bug/2033632
(cherry picked from commit 147ce845b0575adf944eccafff804caf0bdd876e)

To post a comment you must log in.
Revision history for this message
Christian Grabowski (cgrabowski) wrote :

self-approving backport

review: Approve
Revision history for this message
MAAS Lander (maas-lander) wrote :

LANDING
-b backport_lp2033632_fix_3.3 lp:~cgrabowski/maas/+git/maas into -b 3.3 lp:~maas-committers/maas

STATUS: FAILED BUILD
LOG: http://maas-ci.internal:8080/job/maas-tester/5330/console

61475a1... by Christian Grabowski

fix ephemeral deploy reference

Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b backport_lp2033632_fix_3.3 lp:~cgrabowski/maas/+git/maas into -b 3.3 lp:~maas-committers/maas

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas-tester/5333/console
COMMIT: 2f5a540af1a007261b4f717f954f8d4ee81a13c8

review: Needs Fixing
Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b backport_lp2033632_fix_3.3 lp:~cgrabowski/maas/+git/maas into -b 3.3 lp:~maas-committers/maas

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas-tester/5334/console
COMMIT: 1b223b7c9adacd9246719186e95ce73dae79d909

review: Needs Fixing
Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b backport_lp2033632_fix_3.3 lp:~cgrabowski/maas/+git/maas into -b 3.3 lp:~maas-committers/maas

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas-tester/5338/console
COMMIT: fc495fb8a8f42fb15d21fe209166ee079200436b

review: Needs Fixing
Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b backport_lp2033632_fix_3.3 lp:~cgrabowski/maas/+git/maas into -b 3.3 lp:~maas-committers/maas

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas-tester/5339/console
COMMIT: 61475a132807281279bea3fdf532e5db553aea06

review: Needs Fixing
Revision history for this message
Christian Grabowski (cgrabowski) wrote :

jenkins: !test

Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b backport_lp2033632_fix_3.3 lp:~cgrabowski/maas/+git/maas into -b 3.3 lp:~maas-committers/maas

STATUS: SUCCESS
COMMIT: 61475a132807281279bea3fdf532e5db553aea06

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/src/maasserver/api/machines.py b/src/maasserver/api/machines.py
index 3f9b55e..6ce47cb 100644
--- a/src/maasserver/api/machines.py
+++ b/src/maasserver/api/machines.py
@@ -123,6 +123,8 @@ DISPLAYED_MACHINE_FIELDS = (
123 "description",123 "description",
124 "hardware_uuid",124 "hardware_uuid",
125 "domain",125 "domain",
126 "ephemeral_deploy",
127 "enable_hw_sync",
126 "fqdn",128 "fqdn",
127 "owner",129 "owner",
128 "owner_data",130 "owner_data",
@@ -849,24 +851,19 @@ class MachineHandler(NodeHandler, WorkloadAnnotationsMixin, PowerMixin):
849 NODE_STATUS_CHOICES_DICT[machine.status]851 NODE_STATUS_CHOICES_DICT[machine.status]
850 )852 )
851 )853 )
852 if not machine.distro_series and not series:854
855 if not series:
853 series = Config.objects.get_config("default_distro_series")856 series = Config.objects.get_config("default_distro_series")
854 Form = get_machine_edit_form(request.user)857 Form = get_machine_edit_form(request.user)
855 form = Form(instance=machine, data={})858 form = Form(instance=machine, data={})
856 if series is not None:859 form.set_distro_series(series=series)
857 form.set_distro_series(series=series)
858 if license_key is not None:860 if license_key is not None:
859 form.set_license_key(license_key=license_key)861 form.set_license_key(license_key=license_key)
860 if hwe_kernel is not None:862 if hwe_kernel is not None:
861 form.set_hwe_kernel(hwe_kernel=hwe_kernel)863 form.set_hwe_kernel(hwe_kernel=hwe_kernel)
862 if options.install_rackd:864 form.set_install_rackd(install_rackd=options.install_rackd)
863 form.set_install_rackd(install_rackd=options.install_rackd)865 form.set_ephemeral_deploy(ephemeral_deploy=options.ephemeral_deploy)
864 if options.ephemeral_deploy:866 form.set_enable_hw_sync(enable_hw_sync=options.enable_hw_sync)
865 form.set_ephemeral_deploy(
866 ephemeral_deploy=options.ephemeral_deploy
867 )
868 if options.enable_hw_sync:
869 form.set_enable_hw_sync(enable_hw_sync=options.enable_hw_sync)
870 if form.is_valid():867 if form.is_valid():
871 form.save()868 form.save()
872 else:869 else:
diff --git a/src/maasserver/api/tests/test_enlistment.py b/src/maasserver/api/tests/test_enlistment.py
index fe5f429..db6e0d5 100644
--- a/src/maasserver/api/tests/test_enlistment.py
+++ b/src/maasserver/api/tests/test_enlistment.py
@@ -684,6 +684,8 @@ class TestSimpleUserLoggedInEnlistmentAPI(APITestCase.ForUser):
684 "hardware_uuid",684 "hardware_uuid",
685 "default_gateways",685 "default_gateways",
686 "domain",686 "domain",
687 "ephemeral_deploy",
688 "enable_hw_sync",
687 "fqdn",689 "fqdn",
688 "owner",690 "owner",
689 "owner_data",691 "owner_data",
@@ -909,6 +911,8 @@ class TestAdminLoggedInEnlistmentAPI(APITestCase.ForAdmin):
909 "hardware_uuid",911 "hardware_uuid",
910 "default_gateways",912 "default_gateways",
911 "domain",913 "domain",
914 "ephemeral_deploy",
915 "enable_hw_sync",
912 "fqdn",916 "fqdn",
913 "owner",917 "owner",
914 "owner_data",918 "owner_data",
diff --git a/src/maasserver/api/tests/test_machine.py b/src/maasserver/api/tests/test_machine.py
index 459f1a2..c0cd15f 100644
--- a/src/maasserver/api/tests/test_machine.py
+++ b/src/maasserver/api/tests/test_machine.py
@@ -1403,6 +1403,112 @@ class TestMachineAPI(APITestCase.ForUser):
1403 machine.refresh_from_db()1403 machine.refresh_from_db()
1404 self.assertTrue(machine.enable_hw_sync)1404 self.assertTrue(machine.enable_hw_sync)
14051405
1406 def test_POST_multiple_deploy_override_options_ephemeral_deploy(self):
1407 self.patch(node_module.Node, "_start")
1408 self.patch(machines_module, "get_curtin_merged_config")
1409 osystem = Config.objects.get_config("default_osystem")
1410 distro_series = Config.objects.get_config("default_distro_series")
1411 make_usable_osystem(
1412 self, osystem_name=osystem, releases=[distro_series]
1413 )
1414 machine = factory.make_Node(
1415 owner=self.user,
1416 interface=True,
1417 status=NODE_STATUS.ALLOCATED,
1418 power_type="manual",
1419 distro_series=distro_series,
1420 osystem=osystem,
1421 architecture=make_usable_architecture(self),
1422 )
1423
1424 response = self.client.post(
1425 self.get_machine_uri(machine),
1426 {"op": "deploy", "ephemeral_deploy": True},
1427 )
1428 self.assertEqual(http.client.OK, response.status_code)
1429 response_info = json_load_bytes(response.content)
1430 self.assertTrue(response_info["ephemeral_deploy"])
1431
1432 response = self.client.post(
1433 self.get_machine_uri(machine), {"op": "deploy"}
1434 )
1435 self.assertEqual(http.client.OK, response.status_code)
1436 response_info = json_load_bytes(response.content)
1437 self.assertFalse(response_info["ephemeral_deploy"])
1438
1439 def test_POST_multiple_deploy_override_options_hw_sync(self):
1440 self.patch(node_module.Node, "_start")
1441 self.patch(machines_module, "get_curtin_merged_config")
1442 osystem = Config.objects.get_config("default_osystem")
1443 distro_series = Config.objects.get_config("default_distro_series")
1444 make_usable_osystem(
1445 self, osystem_name=osystem, releases=[distro_series]
1446 )
1447 machine = factory.make_Node(
1448 owner=self.user,
1449 interface=True,
1450 status=NODE_STATUS.ALLOCATED,
1451 power_type="manual",
1452 distro_series=distro_series,
1453 osystem=osystem,
1454 architecture=make_usable_architecture(self),
1455 )
1456
1457 response = self.client.post(
1458 self.get_machine_uri(machine),
1459 {"op": "deploy", "enable_hw_sync": True},
1460 )
1461 self.assertEqual(http.client.OK, response.status_code)
1462 response_info = json_load_bytes(response.content)
1463 self.assertTrue(response_info["enable_hw_sync"])
1464
1465 response = self.client.post(
1466 self.get_machine_uri(machine), {"op": "deploy"}
1467 )
1468 self.assertEqual(http.client.OK, response.status_code)
1469 response_info = json_load_bytes(response.content)
1470 self.assertFalse(response_info["enable_hw_sync"])
1471
1472 def test_POST_multiple_deploy_override_options_distro_series(self):
1473 self.patch(node_module.Node, "_start")
1474 self.patch(machines_module, "get_curtin_merged_config")
1475 osystem = Config.objects.get_config("default_osystem")
1476 os = make_usable_osystem(self)
1477 releases = [release["name"] for release in os.get("releases", [])]
1478 default_distro_series = Config.objects.get_config(
1479 "default_distro_series"
1480 )
1481 distro_series = (
1482 releases[0]
1483 if releases[0] != default_distro_series
1484 else releases[1]
1485 )
1486
1487 machine = factory.make_Node(
1488 owner=self.user,
1489 interface=True,
1490 status=NODE_STATUS.ALLOCATED,
1491 power_type="manual",
1492 distro_series=distro_series,
1493 osystem=osystem,
1494 architecture=make_usable_architecture(self),
1495 )
1496
1497 response = self.client.post(
1498 self.get_machine_uri(machine),
1499 {"op": "deploy", "distro_series": distro_series},
1500 )
1501 self.assertEqual(http.client.OK, response.status_code)
1502 response_info = json_load_bytes(response.content)
1503 self.assertEqual(response_info["distro_series"], distro_series)
1504
1505 response = self.client.post(
1506 self.get_machine_uri(machine), {"op": "deploy"}
1507 )
1508 self.assertEqual(http.client.OK, response.status_code)
1509 response_info = json_load_bytes(response.content)
1510 self.assertEqual(response_info["distro_series"], default_distro_series)
1511
1406 def test_POST_release_releases_owned_machine(self):1512 def test_POST_release_releases_owned_machine(self):
1407 self.patch(node_module.Machine, "_stop")1513 self.patch(node_module.Machine, "_stop")
1408 owned_statuses = [NODE_STATUS.RESERVED, NODE_STATUS.ALLOCATED]1514 owned_statuses = [NODE_STATUS.RESERVED, NODE_STATUS.ALLOCATED]

Subscribers

People subscribed via source and target branches