Skip to content

Commit fef53cf

Browse files
committed
Use VmDiskInfo inplace of DiskOfferingInfo to pass disk related information including deviceId during vm deployment.
1 parent 1dc12e2 commit fef53cf

File tree

14 files changed

+212
-172
lines changed

14 files changed

+212
-172
lines changed

api/src/main/java/com/cloud/offering/DiskOfferingInfo.java

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ public class DiskOfferingInfo {
2323
private Long _size;
2424
private Long _minIops;
2525
private Long _maxIops;
26-
private Long _deviceId;
2726

2827
public DiskOfferingInfo() {
2928
}
@@ -39,11 +38,6 @@ public DiskOfferingInfo(DiskOffering diskOffering, Long size, Long minIops, Long
3938
_maxIops = maxIops;
4039
}
4140

42-
public DiskOfferingInfo(DiskOffering diskOffering, Long size, Long minIops, Long maxIops, Long deviceId) {
43-
this(diskOffering, size, minIops, maxIops);
44-
_deviceId = deviceId;
45-
}
46-
4741
public void setDiskOffering(DiskOffering diskOffering) {
4842
_diskOffering = diskOffering;
4943
}
@@ -75,12 +69,4 @@ public void setMaxIops(Long maxIops) {
7569
public Long getMaxIops() {
7670
return _maxIops;
7771
}
78-
79-
public void setDeviceId(Long deviceId) {
80-
_deviceId = deviceId;
81-
}
82-
83-
public Long getDeviceId() {
84-
return _deviceId;
85-
}
8672
}

api/src/main/java/com/cloud/vm/UserVmService.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@
5959
import com.cloud.hypervisor.Hypervisor.HypervisorType;
6060
import com.cloud.network.Network.IpAddresses;
6161
import com.cloud.offering.DiskOffering;
62-
import com.cloud.offering.DiskOfferingInfo;
6362
import com.cloud.offering.ServiceOffering;
6463
import com.cloud.storage.StoragePool;
6564
import com.cloud.template.VirtualMachineTemplate;
@@ -222,7 +221,7 @@ void startVirtualMachineForHA(VirtualMachine vm, Map<VirtualMachineProfile.Param
222221
* available.
223222
*/
224223
UserVm createBasicSecurityGroupVirtualMachine(DataCenter zone, ServiceOffering serviceOffering, VirtualMachineTemplate template, List<Long> securityGroupIdList,
225-
Account owner, String hostName, String displayName, Long diskOfferingId, Long diskSize, List<DiskOfferingInfo> dataDiskOfferingsInfo, String group, HypervisorType hypervisor, HTTPMethod httpmethod,
224+
Account owner, String hostName, String displayName, Long diskOfferingId, Long diskSize, List<VmDiskInfo> dataDiskInfoList, String group, HypervisorType hypervisor, HTTPMethod httpmethod,
226225
String userData, Long userDataId, String userDataDetails, List<String> sshKeyPairs, Map<Long, IpAddresses> requestedIps, IpAddresses defaultIp, Boolean displayVm, String keyboard,
227226
List<Long> affinityGroupIdList, Map<String, String> customParameter, String customId, Map<String, Map<Integer, String>> dhcpOptionMap,
228227
Map<Long, DiskOffering> dataDiskTemplateToDiskOfferingMap,
@@ -299,7 +298,7 @@ UserVm createBasicSecurityGroupVirtualMachine(DataCenter zone, ServiceOffering s
299298
* available.
300299
*/
301300
UserVm createAdvancedSecurityGroupVirtualMachine(DataCenter zone, ServiceOffering serviceOffering, VirtualMachineTemplate template, List<Long> networkIdList,
302-
List<Long> securityGroupIdList, Account owner, String hostName, String displayName, Long diskOfferingId, Long diskSize, List<DiskOfferingInfo> dataDiskOfferingsInfo, String group, HypervisorType hypervisor,
301+
List<Long> securityGroupIdList, Account owner, String hostName, String displayName, Long diskOfferingId, Long diskSize, List<VmDiskInfo> dataDiskInfoList, String group, HypervisorType hypervisor,
303302
HTTPMethod httpmethod, String userData, Long userDataId, String userDataDetails, List<String> sshKeyPairs, Map<Long, IpAddresses> requestedIps, IpAddresses defaultIps, Boolean displayVm, String keyboard,
304303
List<Long> affinityGroupIdList, Map<String, String> customParameters, String customId, Map<String, Map<Integer, String>> dhcpOptionMap,
305304
Map<Long, DiskOffering> dataDiskTemplateToDiskOfferingMap, Map<String, String> userVmOVFProperties, boolean dynamicScalingEnabled, Long overrideDiskOfferingId, String vmType, Volume volume, Snapshot snapshot) throws InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException, StorageUnavailableException, ResourceAllocationException;
@@ -371,7 +370,7 @@ UserVm createAdvancedSecurityGroupVirtualMachine(DataCenter zone, ServiceOfferin
371370
* available.
372371
*/
373372
UserVm createAdvancedVirtualMachine(DataCenter zone, ServiceOffering serviceOffering, VirtualMachineTemplate template, List<Long> networkIdList, Account owner,
374-
String hostName, String displayName, Long diskOfferingId, Long diskSize, List<DiskOfferingInfo> dataDiskOfferingsInfo, String group, HypervisorType hypervisor, HTTPMethod httpmethod, String userData,
373+
String hostName, String displayName, Long diskOfferingId, Long diskSize, List<VmDiskInfo> dataDiskInfoList, String group, HypervisorType hypervisor, HTTPMethod httpmethod, String userData,
375374
Long userDataId, String userDataDetails, List<String> sshKeyPairs, Map<Long, IpAddresses> requestedIps, IpAddresses defaultIps, Boolean displayVm, String keyboard, List<Long> affinityGroupIdList,
376375
Map<String, String> customParameters, String customId, Map<String, Map<Integer, String>> dhcpOptionMap, Map<Long, DiskOffering> dataDiskTemplateToDiskOfferingMap,
377376
Map<String, String> templateOvfPropertiesMap, boolean dynamicScalingEnabled, String vmType, Long overrideDiskOfferingId, Volume volume, Snapshot snapshot)
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one
3+
* or more contributor license agreements. See the NOTICE file
4+
* distributed with this work for additional information
5+
* regarding copyright ownership. The ASF licenses this file
6+
* to you under the Apache License, Version 2.0 (the
7+
* "License"); you may not use this file except in compliance
8+
* with the License. You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing,
13+
* software distributed under the License is distributed on an
14+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15+
* KIND, either express or implied. See the License for the
16+
* specific language governing permissions and limitations
17+
* under the License.
18+
*/
19+
package com.cloud.vm;
20+
21+
import com.cloud.offering.DiskOffering;
22+
import com.cloud.offering.DiskOfferingInfo;
23+
24+
public class VmDiskInfo extends DiskOfferingInfo {
25+
private Long _deviceId;
26+
27+
public VmDiskInfo(DiskOffering diskOffering, Long size, Long minIops, Long maxIops) {
28+
super(diskOffering, size, minIops, maxIops);
29+
}
30+
31+
public VmDiskInfo(DiskOffering diskOffering, Long size, Long minIops, Long maxIops, Long deviceId) {
32+
super(diskOffering, size, minIops, maxIops);
33+
_deviceId = deviceId;
34+
}
35+
36+
public Long getDeviceId() {
37+
return _deviceId;
38+
}
39+
}

api/src/main/java/org/apache/cloudstack/api/command/user/vm/BaseDeployVMCmd.java

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,10 @@
6060
import com.cloud.network.Network;
6161
import com.cloud.network.Network.IpAddresses;
6262
import com.cloud.offering.DiskOffering;
63-
import com.cloud.offering.DiskOfferingInfo;
6463
import com.cloud.template.VirtualMachineTemplate;
6564
import com.cloud.utils.net.NetUtils;
6665
import com.cloud.vm.VmDetailConstants;
66+
import com.cloud.vm.VmDiskInfo;
6767
import com.cloud.utils.net.Dhcp;
6868

6969
public abstract class BaseDeployVMCmd extends BaseAsyncCreateCustomIdCmd implements SecurityGroupAction, UserCmd {
@@ -272,7 +272,7 @@ public abstract class BaseDeployVMCmd extends BaseAsyncCreateCustomIdCmd impleme
272272
description = "Lease expiry action, valid values are STOP and DESTROY")
273273
private String leaseExpiryAction;
274274

275-
private List<DiskOfferingInfo> dataDiskOfferingsInfo;
275+
private List<VmDiskInfo> dataDiskInfoList;
276276

277277
/////////////////////////////////////////////////////
278278
/////////////////// Accessors ///////////////////////
@@ -519,14 +519,17 @@ public List<String> getSSHKeyPairNames() {
519519
return sshKeyPairs;
520520
}
521521

522-
public List<DiskOfferingInfo> getDataDiskOfferingsInfo() {
523-
if (this.dataDiskOfferingsInfo != null) {
524-
return this.dataDiskOfferingsInfo;
522+
public List<VmDiskInfo> getDataDiskInfoList() {
523+
if (this.dataDiskInfoList != null) {
524+
return this.dataDiskInfoList;
525525
}
526526
if (dataDisksDetails == null || dataDisksDetails.isEmpty()) {
527527
return null;
528528
}
529-
List<DiskOfferingInfo> diskOfferingInfoList = new ArrayList<>();
529+
if (dataDiskTemplateToDiskOfferingList != null) {
530+
throw new InvalidParameterValueException("datadisktemplatetodiskofferinglist parameter can't be specified along with datadisksdetails parameter");
531+
}
532+
List<VmDiskInfo> vmDiskInfoList = new ArrayList<>();
530533
Collection dataDisksCollection = dataDisksDetails.values();
531534
Iterator iter = dataDisksCollection.iterator();
532535
while (iter.hasNext()) {
@@ -568,11 +571,11 @@ public List<DiskOfferingInfo> getDataDiskOfferingsInfo() {
568571
minIops = Long.parseLong(dataDisk.get(ApiConstants.MIN_IOPS));
569572
maxIops = Long.parseLong(dataDisk.get(ApiConstants.MAX_IOPS));
570573
}
571-
DiskOfferingInfo diskOfferingInfo = new DiskOfferingInfo(diskOffering, size, minIops, maxIops, deviceId);
572-
diskOfferingInfoList.add(diskOfferingInfo);
574+
VmDiskInfo vmDiskInfo = new VmDiskInfo(diskOffering, size, minIops, maxIops, deviceId);
575+
vmDiskInfoList.add(vmDiskInfo);
573576
}
574-
this.dataDiskOfferingsInfo = diskOfferingInfoList;
575-
return dataDiskOfferingsInfo;
577+
this.dataDiskInfoList = vmDiskInfoList;
578+
return dataDiskInfoList;
576579
}
577580

578581
public Long getHostId() {

api/src/main/java/org/apache/cloudstack/backup/BackupManager.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,12 @@
3434

3535
import com.cloud.exception.ResourceUnavailableException;
3636
import com.cloud.network.Network;
37-
import com.cloud.offering.DiskOfferingInfo;
3837
import com.cloud.storage.Volume;
3938
import com.cloud.utils.Pair;
4039
import com.cloud.utils.component.Manager;
4140
import com.cloud.utils.component.PluggableService;
4241
import com.cloud.vm.VirtualMachine;
42+
import com.cloud.vm.VmDiskInfo;
4343

4444
/**
4545
* Backup and Recover Manager Interface
@@ -258,11 +258,11 @@ public interface BackupManager extends BackupService, Configurable, PluggableSer
258258

259259
BackupOffering updateBackupOffering(UpdateBackupOfferingCmd updateBackupOfferingCmd);
260260

261-
DiskOfferingInfo getRootDiskOfferingInfoFromBackup(Backup backup);
261+
VmDiskInfo getRootDiskInfoFromBackup(Backup backup);
262262

263-
List<DiskOfferingInfo> getDataDiskOfferingListFromBackup(Backup backup);
263+
List<VmDiskInfo> getDataDiskInfoListFromBackup(Backup backup);
264264

265-
void checkDiskOfferingSizeAgainstBackup(List<DiskOfferingInfo> dataDiskOfferingsInfo, Backup backup);
265+
void checkVmDisksSizeAgainstBackup(List<VmDiskInfo> vmDiskInfoList, Backup backup);
266266

267267
Map<String, String> getBackupDetailsFromVM(VirtualMachine vm);
268268

api/src/test/java/org/apache/cloudstack/api/command/user/vm/DeployVMCmdTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@
4747
import com.cloud.network.Network;
4848
import com.cloud.template.VirtualMachineTemplate;
4949
import com.cloud.offering.DiskOffering;
50-
import com.cloud.offering.DiskOfferingInfo;
5150
import com.cloud.network.Network.IpAddresses;
51+
import com.cloud.vm.VmDiskInfo;
5252

5353
@RunWith(MockitoJUnitRunner.class)
5454
public class DeployVMCmdTest {
@@ -308,7 +308,7 @@ public void testGetIpToNetworkMap_WithNullIpToNetworkList() {
308308
}
309309

310310
@Test
311-
public void testGetDataDiskOfferingInfo() {
311+
public void testGetDataDiskInfoList() {
312312
Map<String, Object> dataDisksDetails = new HashMap<>();
313313
Map<String, String> dataDisk = new HashMap<>();
314314
dataDisk.put(ApiConstants.DISK_OFFERING_ID, "offering-uuid");
@@ -326,7 +326,7 @@ public void testGetDataDiskOfferingInfo() {
326326
when(diskOffering.isCustomizedIops()).thenReturn(true);
327327
when(entityMgr.findByUuid(DiskOffering.class, "offering-uuid")).thenReturn(diskOffering);
328328

329-
List<DiskOfferingInfo> result = cmd.getDataDiskOfferingsInfo();
329+
List<VmDiskInfo> result = cmd.getDataDiskInfoList();
330330

331331
assertNotNull(result);
332332
assertEquals(1, result.size());

engine/api/src/main/java/com/cloud/vm/VirtualMachineManager.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,14 +124,15 @@ interface Topics {
124124
* @param defaultNetwork The default network for the VM.
125125
* @param rootDiskOffering For created VMs not based on templates, root disk offering specifies the root disk.
126126
* @param dataDiskOfferings Data disks to attach to the VM.
127+
* @param dataDiskDeviceIds Device Ids to assign the data disks to.
127128
* @param auxiliaryNetworks additional networks to attach the VMs to.
128129
* @param plan How to deploy the VM.
129130
* @param hyperType Hypervisor type
130131
* @param datadiskTemplateToDiskOfferingMap data disks to be created from datadisk templates and attached to the VM
131132
* @throws InsufficientCapacityException If there are insufficient capacity to deploy this vm.
132133
*/
133134
void allocate(String vmInstanceName, VirtualMachineTemplate template, ServiceOffering serviceOffering, DiskOfferingInfo rootDiskOfferingInfo,
134-
List<DiskOfferingInfo> dataDiskOfferings, LinkedHashMap<? extends Network, List<? extends NicProfile>> auxiliaryNetworks, DeploymentPlan plan,
135+
List<DiskOfferingInfo> dataDiskOfferings, List<Long> dataDiskDeviceIds, LinkedHashMap<? extends Network, List<? extends NicProfile>> auxiliaryNetworks, DeploymentPlan plan,
135136
HypervisorType hyperType, Map<String, Map<Integer, String>> extraDhcpOptions, Map<Long, DiskOffering> datadiskTemplateToDiskOfferingMap, Volume volume, Snapshot snapshot) throws InsufficientCapacityException;
136137

137138
void allocate(String vmInstanceName, VirtualMachineTemplate template, ServiceOffering serviceOffering,

engine/api/src/main/java/org/apache/cloudstack/engine/service/api/OrchestrationService.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@
3939
import com.cloud.exception.InsufficientCapacityException;
4040
import com.cloud.hypervisor.Hypervisor;
4141
import com.cloud.offering.DiskOffering;
42-
import com.cloud.offering.DiskOfferingInfo;
4342
import com.cloud.vm.NicProfile;
43+
import com.cloud.vm.VmDiskInfo;
4444

4545
@Path("orchestration")
4646
@Produces({"application/json", "application/xml"})
@@ -71,7 +71,7 @@ VirtualMachineEntity createVirtualMachine(@QueryParam("id") String id, @QueryPar
7171
@QueryParam("network-nic-map") Map<String, List<NicProfile>> networkNicMap, @QueryParam("deploymentplan") DeploymentPlan plan,
7272
@QueryParam("root-disk-size") Long rootDiskSize, @QueryParam("extra-dhcp-option-map") Map<String, Map<Integer, String>> extraDhcpOptionMap,
7373
@QueryParam("datadisktemplate-diskoffering-map") Map<Long, DiskOffering> datadiskTemplateToDiskOfferingMap, @QueryParam("disk-offering-id") Long diskOfferingId,
74-
@QueryParam("root-disk-offering-id") Long rootDiskOfferingId, List<DiskOfferingInfo> dataDiskOfferingsInfo, Volume volume, Snapshot snapshot) throws InsufficientCapacityException;
74+
@QueryParam("root-disk-offering-id") Long rootDiskOfferingId, List<VmDiskInfo> dataDiskInfoList, Volume volume, Snapshot snapshot) throws InsufficientCapacityException;
7575

7676
@POST
7777
VirtualMachineEntity createVirtualMachineFromScratch(@QueryParam("id") String id, @QueryParam("owner") String owner, @QueryParam("iso-id") String isoId,
@@ -80,7 +80,7 @@ VirtualMachineEntity createVirtualMachineFromScratch(@QueryParam("id") String id
8080
@QueryParam("compute-tags") List<String> computeTags, @QueryParam("root-disk-tags") List<String> rootDiskTags,
8181
@QueryParam("network-nic-map") Map<String, List<NicProfile>> networkNicMap, @QueryParam("deploymentplan") DeploymentPlan plan,
8282
@QueryParam("extra-dhcp-option-map") Map<String, Map<Integer, String>> extraDhcpOptionMap, @QueryParam("disk-offering-id") Long diskOfferingId,
83-
@QueryParam("data-disks-offering-info") List<DiskOfferingInfo> dataDiskOfferingsInfo, Volume volume, Snapshot snapshot) throws InsufficientCapacityException;
83+
@QueryParam("data-disks-offering-info") List<VmDiskInfo> dataDiskInfoList, Volume volume, Snapshot snapshot) throws InsufficientCapacityException;
8484

8585
@POST
8686
NetworkEntity createNetwork(String id, String name, String domainName, String cidr, String gateway);

0 commit comments

Comments
 (0)