Merge ~newell-jensen/maas:lp1858201 into maas:master

Proposed by Newell Jensen
Status: Merged
Approved by: Adam Collard
Approved revision: ffff4578dd123e76111d50f0b0c00f59924cc5c1
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~newell-jensen/maas:lp1858201
Merge into: maas:master
Diff against target: 97 lines (+52/-2)
2 files modified
src/provisioningserver/drivers/pod/tests/test_virsh.py (+33/-1)
src/provisioningserver/drivers/pod/virsh.py (+19/-1)
Reviewer Review Type Date Requested Status
Adam Collard (community) Approve
MAAS Lander Approve
Review via email: mp+377967@code.launchpad.net

Commit message

LP: #1858201 -- Round down to the nearest MiB for zfs storage pools for virsh.

To post a comment you must log in.
Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b lp1858201 lp:~newell-jensen/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: SUCCESS
COMMIT: ffff4578dd123e76111d50f0b0c00f59924cc5c1

review: Approve
Revision history for this message
Adam Collard (adam-collard) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/src/provisioningserver/drivers/pod/tests/test_virsh.py b/src/provisioningserver/drivers/pod/tests/test_virsh.py
index 00f19ce..eaec7ae 100644
--- a/src/provisioningserver/drivers/pod/tests/test_virsh.py
+++ b/src/provisioningserver/drivers/pod/tests/test_virsh.py
@@ -1,10 +1,11 @@
1# Copyright 2017-2019 Canonical Ltd. This software is licensed under the1# Copyright 2017-2020 Canonical Ltd. This software is licensed under the
2# GNU Affero General Public License version 3 (see the file LICENSE).2# GNU Affero General Public License version 3 (see the file LICENSE).
33
4"""Tests for `provisioningserver.drivers.pod.virsh`."""4"""Tests for `provisioningserver.drivers.pod.virsh`."""
55
6__all__ = []6__all__ = []
77
8from math import floor
8import os9import os
9import random10import random
10from textwrap import dedent11from textwrap import dedent
@@ -1589,6 +1590,37 @@ class TestVirshSSH(MAASTestCase):
1589 self.assertEqual(pool, used_pool)1590 self.assertEqual(pool, used_pool)
1590 self.assertIsNotNone(volume_name)1591 self.assertIsNotNone(volume_name)
15911592
1593 def test_create_local_volume_makes_call_returns_pool_and_volume_zfs(self):
1594 conn = self.configure_virshssh("")
1595 pool = factory.make_name("pool")
1596 self.patch(virsh.VirshSSH, "get_usable_pool").return_value = (
1597 "zfs",
1598 pool,
1599 )
1600 mock_run = self.patch(virsh.VirshSSH, "run")
1601 disk = RequestedMachineBlockDevice(
1602 size=random.randint(1000, 2000), tags=[]
1603 )
1604 used_pool, volume_name = conn.create_local_volume(disk)
1605 size = int(floor(disk.size / 2 ** 20)) * 2 ** 20
1606 self.assertThat(
1607 mock_run,
1608 MockCalledOnceWith(
1609 [
1610 "vol-create-as",
1611 used_pool,
1612 volume_name,
1613 str(size),
1614 "--allocation",
1615 "0",
1616 "--format",
1617 "raw",
1618 ]
1619 ),
1620 )
1621 self.assertEqual(pool, used_pool)
1622 self.assertIsNotNone(volume_name)
1623
1592 def test_delete_local_volume(self):1624 def test_delete_local_volume(self):
1593 conn = self.configure_virshssh("")1625 conn = self.configure_virshssh("")
1594 pool = factory.make_name("pool")1626 pool = factory.make_name("pool")
diff --git a/src/provisioningserver/drivers/pod/virsh.py b/src/provisioningserver/drivers/pod/virsh.py
index c6ca0da..e5e41f5 100644
--- a/src/provisioningserver/drivers/pod/virsh.py
+++ b/src/provisioningserver/drivers/pod/virsh.py
@@ -1,4 +1,4 @@
1# Copyright 2017-2019 Canonical Ltd. This software is licensed under the1# Copyright 2017-2020 Canonical Ltd. This software is licensed under the
2# GNU Affero General Public License version 3 (see the file LICENSE).2# GNU Affero General Public License version 3 (see the file LICENSE).
33
4"""Virsh pod driver."""4"""Virsh pod driver."""
@@ -6,6 +6,7 @@
6__all__ = ["probe_virsh_and_enlist", "VirshPodDriver"]6__all__ = ["probe_virsh_and_enlist", "VirshPodDriver"]
77
8from collections import namedtuple8from collections import namedtuple
9from math import floor
9import os10import os
10import string11import string
11from tempfile import NamedTemporaryFile12from tempfile import NamedTemporaryFile
@@ -921,6 +922,23 @@ class VirshSSH(pexpect.spawn):
921 "raw",922 "raw",
922 ]923 ]
923 )924 )
925 elif usable_pool_type == "zfs":
926 # LP: #1858201
927 # Round down to the nearest MiB for zfs.
928 # See bug comments for more details.
929 size = int(floor(disk.size / 2 ** 20)) * 2 ** 20
930 self.run(
931 [
932 "vol-create-as",
933 usable_pool,
934 volume,
935 str(size),
936 "--allocation",
937 "0",
938 "--format",
939 "raw",
940 ]
941 )
924 else:942 else:
925 self.run(943 self.run(
926 [944 [

Subscribers

People subscribed via source and target branches