Merge lp:~blake-rouse/maas/fix-1685904 into lp:~maas-committers/maas/trunk

Proposed by Blake Rouse
Status: Merged
Approved by: Blake Rouse
Approved revision: no longer in the source branch.
Merged at revision: 6012
Proposed branch: lp:~blake-rouse/maas/fix-1685904
Merge into: lp:~maas-committers/maas/trunk
Diff against target: 78 lines (+12/-7)
2 files modified
src/provisioningserver/drivers/pod/rsd.py (+4/-2)
src/provisioningserver/drivers/pod/tests/test_rsd.py (+8/-5)
To merge this branch: bzr merge lp:~blake-rouse/maas/fix-1685904
Reviewer Review Type Date Requested Status
Newell Jensen (community) Approve
Review via email: mp+323075@code.launchpad.net

Commit message

Ensure that remote target drive is larger than master drive size. Use snapshot instead of clone to speed up composition.

To post a comment you must log in.
Revision history for this message
Newell Jensen (newell-jensen) wrote :

Looks good.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/provisioningserver/drivers/pod/rsd.py'
2--- src/provisioningserver/drivers/pod/rsd.py 2017-04-21 19:23:03 +0000
3+++ src/provisioningserver/drivers/pod/rsd.py 2017-04-24 20:11:16 +0000
4@@ -801,7 +801,7 @@
5 "CapacityGiB": None,
6 "iSCSIAddress": None,
7 "Master": {
8- "Type": "Clone",
9+ "Type": "Snapshot",
10 "Resource": None,
11 },
12 }
13@@ -885,6 +885,7 @@
14 # Force 'iscsi' into the tags if not present.
15 if 'iscsi' not in block_device.tags:
16 block_device.tags.append('iscsi')
17+ # Convert from bytes to GiB.
18 size = block_device.size / (1024 ** 3)
19
20 # Determine the remote master that can be used.
21@@ -895,8 +896,9 @@
22 'iSCSI remote drive cannot be created because '
23 'not enough space is available.')
24 drive = remote_drive.copy()
25- # Convert from bytes to GiB.
26 drive['CapacityGiB'] = size
27+ if remote_master['size'] > size:
28+ drive['CapacityGiB'] = remote_master['size']
29 drive['iSCSIAddress'] = 'iqn.2010-08.io.maas:%s-%s' % (
30 request.hostname, idx)
31 drive['Master']['Resource'] = {
32
33=== modified file 'src/provisioningserver/drivers/pod/tests/test_rsd.py'
34--- src/provisioningserver/drivers/pod/tests/test_rsd.py 2017-04-21 19:23:03 +0000
35+++ src/provisioningserver/drivers/pod/tests/test_rsd.py 2017-04-24 20:11:16 +0000
36@@ -1687,7 +1687,11 @@
37 def test__convert_request_to_json_payload(self):
38 driver = RSDPodDriver()
39 request = make_requested_machine()
40+ # iSCSI disk smaller than master drive size of 10GiB.
41 request.block_devices[1].tags.append('iscsi')
42+ request.block_devices[1].size = 9 * (1024 ** 3)
43+ # iSCSI disk larger than master drive size of 10GiB.
44+ request.block_devices[2].size = 15 * (1024 ** 3)
45 processors = 2
46 cores = request.cores / 2
47 remote_storage = {
48@@ -1696,7 +1700,7 @@
49 'available': 40 * (1024 ** 3),
50 'master': {
51 'path': b"redfish/v1/Services/1/LogicalDrives/2",
52- 'size': 10 * (1024 ** 3)
53+ 'size': 10
54 }
55 }
56 }
57@@ -1758,10 +1762,9 @@
58 "@odata.id": Equals(
59 'redfish/v1/Services/1/LogicalDrives/2')
60 }),
61- "Type": Equals('Clone')
62+ "Type": Equals('Snapshot')
63 }),
64- "CapacityGiB": Equals(
65- request.block_devices[1].size / (1024 ** 3)),
66+ "CapacityGiB": Equals(10),
67 "iSCSIAddress": Equals(
68 'iqn.2010-08.io.maas:' + request.hostname + '-1')
69 }),
70@@ -1771,7 +1774,7 @@
71 "@odata.id": Equals(
72 'redfish/v1/Services/1/LogicalDrives/2')
73 }),
74- "Type": Equals('Clone')
75+ "Type": Equals('Snapshot')
76 }),
77 "CapacityGiB": Equals(
78 request.block_devices[2].size / (1024 ** 3)),