Skip to content

Commit cb1078a

Browse files
committed
Merge remote-tracking branch 'apache/4.15' into main
2 parents 3c8c704 + 1ccb420 commit cb1078a

File tree

22 files changed

+129
-106
lines changed

22 files changed

+129
-106
lines changed

engine/components-api/src/main/java/com/cloud/template/TemplateManager.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,17 @@
1818

1919
import java.util.List;
2020

21-
import com.cloud.agent.api.to.DatadiskTO;
22-
import com.cloud.deploy.DeployDestination;
23-
import com.cloud.storage.DataStoreRole;
2421
import org.apache.cloudstack.engine.subsystem.api.storage.DataStore;
2522
import org.apache.cloudstack.engine.subsystem.api.storage.TemplateInfo;
2623
import org.apache.cloudstack.framework.config.ConfigKey;
2724
import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
2825

26+
import com.cloud.agent.api.to.DatadiskTO;
2927
import com.cloud.dc.DataCenterVO;
28+
import com.cloud.deploy.DeployDestination;
3029
import com.cloud.exception.ResourceAllocationException;
3130
import com.cloud.exception.StorageUnavailableException;
31+
import com.cloud.storage.DataStoreRole;
3232
import com.cloud.storage.StoragePool;
3333
import com.cloud.storage.VMTemplateStoragePoolVO;
3434
import com.cloud.storage.VMTemplateVO;
@@ -48,7 +48,8 @@ public interface TemplateManager {
4848
static final ConfigKey<Integer> TemplatePreloaderPoolSize = new ConfigKey<Integer>("Advanced", Integer.class, TemplatePreloaderPoolSizeCK, "8",
4949
"Size of the TemplateManager threadpool", false, ConfigKey.Scope.Global);
5050

51-
51+
static final String VMWARE_TOOLS_ISO = "vmware-tools.iso";
52+
static final String XS_TOOLS_ISO = "xs-tools.iso";
5253

5354
/**
5455
* Prepares a template for vm creation for a certain storage pool.

plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/VmwareServerDiscoverer.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,8 @@
2727
import javax.inject.Inject;
2828
import javax.naming.ConfigurationException;
2929

30-
import org.apache.log4j.Logger;
31-
32-
import com.vmware.vim25.ManagedObjectReference;
33-
3430
import org.apache.cloudstack.api.ApiConstants;
31+
import org.apache.log4j.Logger;
3532

3633
import com.cloud.agent.api.StartupCommand;
3734
import com.cloud.agent.api.StartupRoutingCommand;
@@ -75,9 +72,11 @@
7572
import com.cloud.storage.Storage.TemplateType;
7673
import com.cloud.storage.VMTemplateVO;
7774
import com.cloud.storage.dao.VMTemplateDao;
75+
import com.cloud.template.TemplateManager;
7876
import com.cloud.user.Account;
7977
import com.cloud.utils.Pair;
8078
import com.cloud.utils.UriUtils;
79+
import com.vmware.vim25.ManagedObjectReference;
8180

8281
public class VmwareServerDiscoverer extends DiscovererBase implements Discoverer, ResourceStateAdapter {
8382
private static final Logger s_logger = Logger.getLogger(VmwareServerDiscoverer.class);
@@ -563,7 +562,7 @@ public boolean configure(String name, Map<String, Object> params) throws Configu
563562
}
564563

565564
private void createVmwareToolsIso() {
566-
String isoName = "vmware-tools.iso";
565+
String isoName = TemplateManager.VMWARE_TOOLS_ISO;
567566
VMTemplateVO tmplt = _tmpltDao.findByTemplateName(isoName);
568567
Long id;
569568
if (tmplt == null) {

plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,7 @@
261261
import com.cloud.storage.resource.VmwareStorageProcessor.VmwareStorageProcessorConfigurableFields;
262262
import com.cloud.storage.resource.VmwareStorageSubsystemCommandHandler;
263263
import com.cloud.storage.template.TemplateProp;
264+
import com.cloud.template.TemplateManager;
264265
import com.cloud.utils.DateUtil;
265266
import com.cloud.utils.ExecutionResult;
266267
import com.cloud.utils.NumbersUtil;
@@ -5181,7 +5182,7 @@ protected AttachIsoAnswer execute(AttachIsoCommand cmd) {
51815182

51825183
String storeUrl = cmd.getStoreUrl();
51835184
if (storeUrl == null) {
5184-
if (!cmd.getIsoPath().equalsIgnoreCase("vmware-tools.iso")) {
5185+
if (!cmd.getIsoPath().equalsIgnoreCase(TemplateManager.VMWARE_TOOLS_ISO)) {
51855186
String msg = "ISO store root url is not found in AttachIsoCommand";
51865187
s_logger.error(msg);
51875188
throw new Exception(msg);

plugins/hypervisors/vmware/src/main/java/com/cloud/storage/resource/VmwareStorageProcessor.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@
9696
import com.cloud.storage.StorageLayer;
9797
import com.cloud.storage.Volume;
9898
import com.cloud.storage.template.OVAProcessor;
99+
import com.cloud.template.TemplateManager;
99100
import com.cloud.utils.Pair;
100101
import com.cloud.utils.Ternary;
101102
import com.cloud.utils.exception.CloudRuntimeException;
@@ -2440,7 +2441,7 @@ private Answer attachIso(DiskTO disk, boolean isAttach, String vmName, boolean f
24402441
storeUrl = nfsImageStore.getUrl();
24412442
}
24422443
if (storeUrl == null) {
2443-
if (!iso.getName().equalsIgnoreCase("vmware-tools.iso")) {
2444+
if (!iso.getName().equalsIgnoreCase(TemplateManager.VMWARE_TOOLS_ISO)) {
24442445
String msg = "ISO store root url is not found in AttachIsoCommand";
24452446
s_logger.error(msg);
24462447
throw new Exception(msg);

plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/discoverer/XcpServerDiscoverer.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@
8484
import com.cloud.storage.Storage.TemplateType;
8585
import com.cloud.storage.VMTemplateVO;
8686
import com.cloud.storage.dao.VMTemplateDao;
87+
import com.cloud.template.TemplateManager;
8788
import com.cloud.user.Account;
8889
import com.cloud.utils.NumbersUtil;
8990
import com.cloud.utils.db.QueryBuilder;
@@ -118,7 +119,7 @@ public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, L
118119
@Inject
119120
private HostPodDao _podDao;
120121

121-
private String xenServerIsoName = "xs-tools.iso";
122+
private String xenServerIsoName = TemplateManager.XS_TOOLS_ISO;
122123
private String xenServerIsoDisplayText = "XenServer Tools Installer ISO (xen-pv-drv-iso)";
123124

124125
protected XcpServerDiscoverer() {

plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
// under the License.
1717
package com.cloud.hypervisor.xenserver.resource;
1818

19+
import static com.cloud.utils.NumbersUtil.toHumanReadableSize;
20+
1921
import java.io.BufferedReader;
2022
import java.io.BufferedWriter;
2123
import java.io.File;
@@ -124,6 +126,7 @@
124126
import com.cloud.storage.VolumeVO;
125127
import com.cloud.storage.resource.StorageSubsystemCommandHandler;
126128
import com.cloud.storage.resource.StorageSubsystemCommandHandlerBase;
129+
import com.cloud.template.TemplateManager;
127130
import com.cloud.template.VirtualMachineTemplate.BootloaderType;
128131
import com.cloud.utils.ExecutionResult;
129132
import com.cloud.utils.NumbersUtil;
@@ -164,8 +167,6 @@
164167
import com.xensource.xenapi.VM;
165168
import com.xensource.xenapi.XenAPIObject;
166169

167-
import static com.cloud.utils.NumbersUtil.toHumanReadableSize;
168-
169170
/**
170171
* CitrixResourceBase encapsulates the calls to the XenServer Xapi process to
171172
* perform the required functionalities for CloudStack.
@@ -222,8 +223,7 @@ public String toString() {
222223
private static final Logger s_logger = Logger.getLogger(CitrixResourceBase.class);
223224
protected static final HashMap<VmPowerState, PowerState> s_powerStatesTable;
224225

225-
private String xenServer70plusGuestToolsName = "guest-tools.iso";
226-
private String xenServerBefore70GuestToolsName = "xs-tools.iso";
226+
public static final String XS_TOOLS_ISO_AFTER_70 = "guest-tools.iso";
227227

228228
static {
229229
s_powerStatesTable = new HashMap<VmPowerState, PowerState>();
@@ -2666,11 +2666,10 @@ public VDI getIsoVDIByURL(final Connection conn, final String vmName, final Stri
26662666
* Retrieve the actual ISO 'name-label' to be used.
26672667
* We based our decision on XenServer version.
26682668
* <ul>
2669-
* <li> for XenServer 7.0+, we use {@value #xenServer70plusGuestToolsName};
2670-
* <li> for versions before 7.0, we use {@value #xenServerBefore70GuestToolsName}.
2669+
* <li> for XenServer 7.0+, we use {@value #XS_TOOLS_ISO_AFTER_70};
2670+
* <li> for versions before 7.0, we use {@value TemplateManager#XS_TOOLS_ISO}.
26712671
* </ul>
26722672
*
2673-
* For XCP we always use {@value #xenServerBefore70GuestToolsName}.
26742673
*/
26752674
protected String getActualIsoTemplate(Connection conn) throws XenAPIException, XmlRpcException {
26762675
Host host = Host.getByUuid(conn, _host.getUuid());
@@ -2680,9 +2679,9 @@ protected String getActualIsoTemplate(Connection conn) throws XenAPIException, X
26802679
String[] items = xenVersion.split("\\.");
26812680

26822681
if ((xenBrand.equals("XenServer") || xenBrand.equals("XCP-ng")) && Integer.parseInt(items[0]) >= 7) {
2683-
return xenServer70plusGuestToolsName;
2682+
return XS_TOOLS_ISO_AFTER_70;
26842683
}
2685-
return xenServerBefore70GuestToolsName;
2684+
return TemplateManager.XS_TOOLS_ISO;
26862685
}
26872686

26882687
public String getLabel() {

plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/discoverer/XcpServerDiscovererTest.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import com.cloud.storage.Storage.TemplateType;
3030
import com.cloud.storage.VMTemplateVO;
3131
import com.cloud.storage.dao.VMTemplateDao;
32+
import com.cloud.template.TemplateManager;
3233

3334
@RunWith(MockitoJUnitRunner.class)
3435
public class XcpServerDiscovererTest {
@@ -42,27 +43,27 @@ public class XcpServerDiscovererTest {
4243

4344
@Test
4445
public void createXenServerToolsIsoEntryInDatabaseTestNoEntryFound() {
45-
Mockito.when(vmTemplateDao.findByTemplateName("xs-tools.iso")).thenReturn(null);
46+
Mockito.when(vmTemplateDao.findByTemplateName(TemplateManager.XS_TOOLS_ISO)).thenReturn(null);
4647
Mockito.when(vmTemplateDao.getNextInSequence(Long.class, "id")).thenReturn(1L);
4748

4849
xcpServerDiscoverer.createXenServerToolsIsoEntryInDatabase();
4950

5051
InOrder inOrder = Mockito.inOrder(vmTemplateDao);
51-
inOrder.verify(vmTemplateDao).findByTemplateName("xs-tools.iso");
52+
inOrder.verify(vmTemplateDao).findByTemplateName(TemplateManager.XS_TOOLS_ISO);
5253
inOrder.verify(vmTemplateDao).getNextInSequence(Long.class, "id");
5354
inOrder.verify(vmTemplateDao).persist(Mockito.any(VMTemplateVO.class));
5455
}
5556

5657
@Test
5758
public void createXenServerToolsIsoEntryInDatabaseTestEntryAlreadyExist() {
5859
VMTemplateVO vmTemplateVOMock = Mockito.mock(VMTemplateVO.class);
59-
Mockito.when(vmTemplateDao.findByTemplateName("xs-tools.iso")).thenReturn(vmTemplateVOMock);
60+
Mockito.when(vmTemplateDao.findByTemplateName(TemplateManager.XS_TOOLS_ISO)).thenReturn(vmTemplateVOMock);
6061
Mockito.when(vmTemplateVOMock.getId()).thenReturn(1L);
6162

6263
xcpServerDiscoverer.createXenServerToolsIsoEntryInDatabase();
6364

6465
InOrder inOrder = Mockito.inOrder(vmTemplateDao, vmTemplateVOMock);
65-
inOrder.verify(vmTemplateDao).findByTemplateName("xs-tools.iso");
66+
inOrder.verify(vmTemplateDao).findByTemplateName(TemplateManager.XS_TOOLS_ISO);
6667
inOrder.verify(vmTemplateDao, Mockito.times(0)).getNextInSequence(Long.class, "id");
6768
inOrder.verify(vmTemplateVOMock).setTemplateType(TemplateType.PERHOST);
6869
inOrder.verify(vmTemplateVOMock).setUrl(null);

plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBaseTest.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
import com.cloud.hypervisor.xenserver.resource.CitrixResourceBase.SRType;
4343
import com.cloud.storage.Storage.StoragePoolType;
4444
import com.cloud.storage.Storage.StorageResourceType;
45+
import com.cloud.template.TemplateManager;
4546
import com.cloud.utils.script.Script;
4647
import com.xensource.xenapi.Connection;
4748
import com.xensource.xenapi.Host;
@@ -149,7 +150,7 @@ public void actualIsoTemplateTestXcpHots() throws XenAPIException, XmlRpcExcepti
149150

150151
String returnedIsoTemplateName = citrixResourceBase.getActualIsoTemplate(connectionMock);
151152

152-
Assert.assertEquals("xs-tools.iso", returnedIsoTemplateName);
153+
Assert.assertEquals(TemplateManager.XS_TOOLS_ISO, returnedIsoTemplateName);
153154
}
154155

155156
@Test
@@ -159,7 +160,7 @@ public void actualIsoTemplateTestXenServerBefore70() throws XenAPIException, Xml
159160

160161
String returnedIsoTemplateName = citrixResourceBase.getActualIsoTemplate(connectionMock);
161162

162-
Assert.assertEquals("xs-tools.iso", returnedIsoTemplateName);
163+
Assert.assertEquals(TemplateManager.XS_TOOLS_ISO, returnedIsoTemplateName);
163164
}
164165

165166
@Test
@@ -169,7 +170,7 @@ public void actualIsoTemplateTestXenServer70() throws XenAPIException, XmlRpcExc
169170

170171
String returnedIsoTemplateName = citrixResourceBase.getActualIsoTemplate(connectionMock);
171172

172-
Assert.assertEquals("guest-tools.iso", returnedIsoTemplateName);
173+
Assert.assertEquals(CitrixResourceBase.XS_TOOLS_ISO_AFTER_70, returnedIsoTemplateName);
173174
}
174175

175176
@Test
@@ -179,7 +180,7 @@ public void actualIsoTemplateTestXenServer71() throws XenAPIException, XmlRpcExc
179180

180181
String returnedIsoTemplateName = citrixResourceBase.getActualIsoTemplate(connectionMock);
181182

182-
Assert.assertEquals("guest-tools.iso", returnedIsoTemplateName);
183+
Assert.assertEquals(CitrixResourceBase.XS_TOOLS_ISO_AFTER_70, returnedIsoTemplateName);
183184
}
184185

185186
@Test

server/src/main/java/com/cloud/api/query/QueryManagerImpl.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,6 @@
3131

3232
import javax.inject.Inject;
3333

34-
import com.cloud.storage.dao.VMTemplateDetailsDao;
35-
import com.cloud.vm.VirtualMachineManager;
3634
import org.apache.cloudstack.acl.ControlledEntity.ACLType;
3735
import org.apache.cloudstack.affinity.AffinityGroupDomainMapVO;
3836
import org.apache.cloudstack.affinity.AffinityGroupResponse;
@@ -220,6 +218,7 @@
220218
import com.cloud.storage.Volume;
221219
import com.cloud.storage.dao.StoragePoolTagsDao;
222220
import com.cloud.storage.dao.VMTemplateDao;
221+
import com.cloud.storage.dao.VMTemplateDetailsDao;
223222
import com.cloud.tags.ResourceTagVO;
224223
import com.cloud.tags.dao.ResourceTagDao;
225224
import com.cloud.template.VirtualMachineTemplate.State;
@@ -246,6 +245,7 @@
246245
import com.cloud.vm.UserVmVO;
247246
import com.cloud.vm.VMInstanceVO;
248247
import com.cloud.vm.VirtualMachine;
248+
import com.cloud.vm.VirtualMachineManager;
249249
import com.cloud.vm.VmDetailConstants;
250250
import com.cloud.vm.dao.DomainRouterDao;
251251
import com.cloud.vm.dao.UserVmDao;
@@ -3663,7 +3663,7 @@ private Pair<List<TemplateJoinVO>, Integer> templateChecks(boolean isIso, List<H
36633663
SearchCriteria<TemplateJoinVO> zoneSc = _templateJoinDao.createSearchCriteria();
36643664
zoneSc.addOr("dataCenterId", SearchCriteria.Op.EQ, zoneId);
36653665
zoneSc.addOr("dataStoreScope", SearchCriteria.Op.EQ, ScopeType.REGION);
3666-
// handle the case where xs-tools.iso and vmware-tools.iso do not
3666+
// handle the case where TemplateManager.VMWARE_TOOLS_ISO and TemplateManager.VMWARE_TOOLS_ISO do not
36673667
// have data_center information in template_view
36683668
SearchCriteria<TemplateJoinVO> isoPerhostSc = _templateJoinDao.createSearchCriteria();
36693669
isoPerhostSc.addAnd("format", SearchCriteria.Op.EQ, ImageFormat.ISO);

server/src/main/java/com/cloud/api/query/dao/TemplateJoinDaoImpl.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,7 @@
2626

2727
import javax.inject.Inject;
2828

29-
import com.cloud.deployasis.DeployAsIsConstants;
30-
import com.cloud.deployasis.TemplateDeployAsIsDetailVO;
31-
import com.cloud.deployasis.dao.TemplateDeployAsIsDetailsDao;
3229
import org.apache.cloudstack.api.ApiConstants;
33-
import org.apache.cloudstack.storage.datastore.db.ImageStoreVO;
34-
import org.apache.cloudstack.utils.security.DigestHelper;
35-
import org.apache.log4j.Logger;
36-
import org.springframework.stereotype.Component;
37-
3830
import org.apache.cloudstack.api.ResponseObject.ResponseView;
3931
import org.apache.cloudstack.api.response.ChildTemplateResponse;
4032
import org.apache.cloudstack.api.response.TemplateResponse;
@@ -43,13 +35,20 @@
4335
import org.apache.cloudstack.engine.subsystem.api.storage.TemplateState;
4436
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
4537
import org.apache.cloudstack.storage.datastore.db.ImageStoreDao;
38+
import org.apache.cloudstack.storage.datastore.db.ImageStoreVO;
4639
import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreDao;
4740
import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreVO;
41+
import org.apache.cloudstack.utils.security.DigestHelper;
42+
import org.apache.log4j.Logger;
43+
import org.springframework.stereotype.Component;
4844

4945
import com.cloud.api.ApiDBUtils;
5046
import com.cloud.api.ApiResponseHelper;
5147
import com.cloud.api.query.vo.ResourceTagJoinVO;
5248
import com.cloud.api.query.vo.TemplateJoinVO;
49+
import com.cloud.deployasis.DeployAsIsConstants;
50+
import com.cloud.deployasis.TemplateDeployAsIsDetailVO;
51+
import com.cloud.deployasis.dao.TemplateDeployAsIsDetailsDao;
5352
import com.cloud.hypervisor.Hypervisor.HypervisorType;
5453
import com.cloud.storage.Storage;
5554
import com.cloud.storage.Storage.TemplateType;
@@ -368,7 +367,7 @@ public TemplateResponse newIsoResponse(TemplateJoinVO iso) {
368367
isoResponse.setCreated(iso.getCreatedOnStore());
369368
isoResponse.setDynamicallyScalable(iso.isDynamicallyScalable());
370369
if (iso.getTemplateType() == TemplateType.PERHOST) {
371-
// for xs-tools.iso and vmware-tools.iso, we didn't download, but is ready to use.
370+
// for TemplateManager.XS_TOOLS_ISO and TemplateManager.VMWARE_TOOLS_ISO, we didn't download, but is ready to use.
372371
isoResponse.setReady(true);
373372
} else {
374373
isoResponse.setReady(iso.getState() == ObjectInDataStoreStateMachine.State.Ready);

0 commit comments

Comments
 (0)