Merge ~troyanov/maas:backport-147ce84-3.5 into maas:3.5

Proposed by Anton Troyanov
Status: Merged
Approved by: Anton Troyanov
Approved revision: f715ebf83d50464921f6571e89fd1eaf6ad479bf
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~troyanov/maas:backport-147ce84-3.5
Merge into: maas:3.5
Diff against target: 147 lines (+110/-7)
2 files modified
src/maasserver/api/machines.py (+5/-7)
src/maasserver/api/tests/test_machine.py (+105/-0)
Reviewer Review Type Date Requested Status
MAAS Lander Approve
Anton Troyanov Approve
Review via email: mp+463759@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
Anton Troyanov (troyanov) wrote :

Self approving backport

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

LANDING
-b backport-147ce84-3.5 lp:~troyanov/maas/+git/maas into -b 3.5 lp:~maas-committers/maas

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

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

UNIT TESTS
-b backport-147ce84-3.5 lp:~troyanov/maas/+git/maas into -b 3.5 lp:~maas-committers/maas

STATUS: SUCCESS
COMMIT: f715ebf83d50464921f6571e89fd1eaf6ad479bf

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

LANDING
-b backport-147ce84-3.5 lp:~troyanov/maas/+git/maas into -b 3.5 lp:~maas-committers/maas

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

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 6a2c152..255bbe3 100644
--- a/src/maasserver/api/machines.py
+++ b/src/maasserver/api/machines.py
@@ -852,21 +852,19 @@ class MachineHandler(NodeHandler, WorkloadAnnotationsMixin, PowerMixin):
852 NODE_STATUS_CHOICES_DICT[machine.status]852 NODE_STATUS_CHOICES_DICT[machine.status]
853 )853 )
854 )854 )
855 if not machine.distro_series and not series:855
856 if not series:
856 series = Config.objects.get_config("default_distro_series")857 series = Config.objects.get_config("default_distro_series")
857 Form = get_machine_edit_form(request.user)858 Form = get_machine_edit_form(request.user)
858 form = Form(instance=machine, data={})859 form = Form(instance=machine, data={})
859 if series is not None:860 form.set_distro_series(series=series)
860 form.set_distro_series(series=series)
861 if license_key is not None:861 if license_key is not None:
862 form.set_license_key(license_key=license_key)862 form.set_license_key(license_key=license_key)
863 if hwe_kernel is not None:863 if hwe_kernel is not None:
864 form.set_hwe_kernel(hwe_kernel=hwe_kernel)864 form.set_hwe_kernel(hwe_kernel=hwe_kernel)
865 if options.install_rackd:865 form.set_install_rackd(install_rackd=options.install_rackd)
866 form.set_install_rackd(install_rackd=options.install_rackd)
867 form.set_ephemeral_deploy(ephemeral_deploy=ephemeral_deploy)866 form.set_ephemeral_deploy(ephemeral_deploy=ephemeral_deploy)
868 if options.enable_hw_sync:867 form.set_enable_hw_sync(enable_hw_sync=options.enable_hw_sync)
869 form.set_enable_hw_sync(enable_hw_sync=options.enable_hw_sync)
870 if form.is_valid():868 if form.is_valid():
871 form.save()869 form.save()
872 else:870 else:
diff --git a/src/maasserver/api/tests/test_machine.py b/src/maasserver/api/tests/test_machine.py
index be86cb1..caeb5fa 100644
--- a/src/maasserver/api/tests/test_machine.py
+++ b/src/maasserver/api/tests/test_machine.py
@@ -1427,6 +1427,111 @@ class TestMachineAPI(APITestCase.ForUser):
1427 machine.refresh_from_db()1427 machine.refresh_from_db()
1428 self.assertTrue(machine.enable_hw_sync)1428 self.assertTrue(machine.enable_hw_sync)
14291429
1430 def test_POST_multiple_deploy_override_options_ephemeral_deploy(self):
1431 self.patch(node_module.Node, "_start")
1432 self.patch(machines_module, "get_curtin_merged_config")
1433 osystem = Config.objects.get_config("default_osystem")
1434 distro_series = Config.objects.get_config("default_distro_series")
1435 make_usable_osystem(
1436 self, osystem_name=osystem, releases=[distro_series]
1437 )
1438 machine = factory.make_Node(
1439 owner=self.user,
1440 interface=True,
1441 status=NODE_STATUS.ALLOCATED,
1442 power_type="manual",
1443 distro_series=distro_series,
1444 osystem=osystem,
1445 architecture=make_usable_architecture(self),
1446 )
1447
1448 response = self.client.post(
1449 self.get_machine_uri(machine),
1450 {"op": "deploy", "ephemeral_deploy": True},
1451 )
1452 self.assertEqual(http.client.OK, response.status_code)
1453 response_info = json_load_bytes(response.content)
1454 self.assertTrue(response_info["ephemeral_deploy"])
1455
1456 response = self.client.post(
1457 self.get_machine_uri(machine), {"op": "deploy"}
1458 )
1459 self.assertEqual(http.client.OK, response.status_code)
1460 response_info = json_load_bytes(response.content)
1461 self.assertFalse(response_info["ephemeral_deploy"])
1462
1463 def test_POST_multiple_deploy_override_options_hw_sync(self):
1464 self.patch(node_module.Node, "_start")
1465 self.patch(machines_module, "get_curtin_merged_config")
1466 osystem = Config.objects.get_config("default_osystem")
1467 distro_series = Config.objects.get_config("default_distro_series")
1468 make_usable_osystem(
1469 self, osystem_name=osystem, releases=[distro_series]
1470 )
1471 machine = factory.make_Node(
1472 owner=self.user,
1473 interface=True,
1474 status=NODE_STATUS.ALLOCATED,
1475 power_type="manual",
1476 distro_series=distro_series,
1477 osystem=osystem,
1478 architecture=make_usable_architecture(self),
1479 )
1480
1481 response = self.client.post(
1482 self.get_machine_uri(machine),
1483 {"op": "deploy", "enable_hw_sync": True},
1484 )
1485 self.assertEqual(http.client.OK, response.status_code)
1486 response_info = json_load_bytes(response.content)
1487 self.assertTrue(response_info["enable_hw_sync"])
1488
1489 response = self.client.post(
1490 self.get_machine_uri(machine), {"op": "deploy"}
1491 )
1492 self.assertEqual(http.client.OK, response.status_code)
1493 response_info = json_load_bytes(response.content)
1494 self.assertFalse(response_info["enable_hw_sync"])
1495
1496 def test_POST_multiple_deploy_override_options_distro_series(self):
1497 self.patch(node_module.Node, "_start")
1498 self.patch(machines_module, "get_curtin_merged_config")
1499 osystem = Config.objects.get_config("default_osystem")
1500 _, releases = make_usable_osystem(self)
1501 default_distro_series = Config.objects.get_config(
1502 "default_distro_series"
1503 )
1504 distro_series = (
1505 releases[0]
1506 if releases[0] != default_distro_series
1507 else releases[1]
1508 )
1509
1510 machine = factory.make_Node(
1511 owner=self.user,
1512 interface=True,
1513 status=NODE_STATUS.ALLOCATED,
1514 power_type="manual",
1515 distro_series=distro_series,
1516 osystem=osystem,
1517 architecture=make_usable_architecture(self),
1518 )
1519
1520 response = self.client.post(
1521 self.get_machine_uri(machine),
1522 {"op": "deploy", "distro_series": distro_series},
1523 )
1524 self.assertEqual(http.client.OK, response.status_code)
1525 response_info = json_load_bytes(response.content)
1526 self.assertEqual(response_info["distro_series"], distro_series)
1527
1528 response = self.client.post(
1529 self.get_machine_uri(machine), {"op": "deploy"}
1530 )
1531 self.assertEqual(http.client.OK, response.status_code)
1532 response_info = json_load_bytes(response.content)
1533 self.assertEqual(response_info["distro_series"], default_distro_series)
1534
1430 def test_POST_release_releases_owned_machine(self):1535 def test_POST_release_releases_owned_machine(self):
1431 self.patch(node_module.Machine, "_stop")1536 self.patch(node_module.Machine, "_stop")
1432 owned_statuses = [NODE_STATUS.RESERVED, NODE_STATUS.ALLOCATED]1537 owned_statuses = [NODE_STATUS.RESERVED, NODE_STATUS.ALLOCATED]

Subscribers

People subscribed via source and target branches