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
1diff --git a/src/provisioningserver/drivers/pod/tests/test_virsh.py b/src/provisioningserver/drivers/pod/tests/test_virsh.py
2index 00f19ce..eaec7ae 100644
3--- a/src/provisioningserver/drivers/pod/tests/test_virsh.py
4+++ b/src/provisioningserver/drivers/pod/tests/test_virsh.py
5@@ -1,10 +1,11 @@
6-# Copyright 2017-2019 Canonical Ltd. This software is licensed under the
7+# Copyright 2017-2020 Canonical Ltd. This software is licensed under the
8 # GNU Affero General Public License version 3 (see the file LICENSE).
9
10 """Tests for `provisioningserver.drivers.pod.virsh`."""
11
12 __all__ = []
13
14+from math import floor
15 import os
16 import random
17 from textwrap import dedent
18@@ -1589,6 +1590,37 @@ class TestVirshSSH(MAASTestCase):
19 self.assertEqual(pool, used_pool)
20 self.assertIsNotNone(volume_name)
21
22+ def test_create_local_volume_makes_call_returns_pool_and_volume_zfs(self):
23+ conn = self.configure_virshssh("")
24+ pool = factory.make_name("pool")
25+ self.patch(virsh.VirshSSH, "get_usable_pool").return_value = (
26+ "zfs",
27+ pool,
28+ )
29+ mock_run = self.patch(virsh.VirshSSH, "run")
30+ disk = RequestedMachineBlockDevice(
31+ size=random.randint(1000, 2000), tags=[]
32+ )
33+ used_pool, volume_name = conn.create_local_volume(disk)
34+ size = int(floor(disk.size / 2 ** 20)) * 2 ** 20
35+ self.assertThat(
36+ mock_run,
37+ MockCalledOnceWith(
38+ [
39+ "vol-create-as",
40+ used_pool,
41+ volume_name,
42+ str(size),
43+ "--allocation",
44+ "0",
45+ "--format",
46+ "raw",
47+ ]
48+ ),
49+ )
50+ self.assertEqual(pool, used_pool)
51+ self.assertIsNotNone(volume_name)
52+
53 def test_delete_local_volume(self):
54 conn = self.configure_virshssh("")
55 pool = factory.make_name("pool")
56diff --git a/src/provisioningserver/drivers/pod/virsh.py b/src/provisioningserver/drivers/pod/virsh.py
57index c6ca0da..e5e41f5 100644
58--- a/src/provisioningserver/drivers/pod/virsh.py
59+++ b/src/provisioningserver/drivers/pod/virsh.py
60@@ -1,4 +1,4 @@
61-# Copyright 2017-2019 Canonical Ltd. This software is licensed under the
62+# Copyright 2017-2020 Canonical Ltd. This software is licensed under the
63 # GNU Affero General Public License version 3 (see the file LICENSE).
64
65 """Virsh pod driver."""
66@@ -6,6 +6,7 @@
67 __all__ = ["probe_virsh_and_enlist", "VirshPodDriver"]
68
69 from collections import namedtuple
70+from math import floor
71 import os
72 import string
73 from tempfile import NamedTemporaryFile
74@@ -921,6 +922,23 @@ class VirshSSH(pexpect.spawn):
75 "raw",
76 ]
77 )
78+ elif usable_pool_type == "zfs":
79+ # LP: #1858201
80+ # Round down to the nearest MiB for zfs.
81+ # See bug comments for more details.
82+ size = int(floor(disk.size / 2 ** 20)) * 2 ** 20
83+ self.run(
84+ [
85+ "vol-create-as",
86+ usable_pool,
87+ volume,
88+ str(size),
89+ "--allocation",
90+ "0",
91+ "--format",
92+ "raw",
93+ ]
94+ )
95 else:
96 self.run(
97 [

Subscribers

People subscribed via source and target branches