mirror of https://github.com/apache/cloudstack.git
Merge branch 'main' into disk-controller-mappings
This commit is contained in:
commit
991af0ab91
|
|
@ -32,13 +32,12 @@ jobs:
|
|||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Set up JDK 11
|
||||
- name: Set up JDK 17
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
java-version: '11'
|
||||
distribution: 'adopt'
|
||||
architecture: x64
|
||||
cache: maven
|
||||
distribution: 'temurin'
|
||||
java-version: '17'
|
||||
cache: 'maven'
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v5
|
||||
|
|
|
|||
|
|
@ -220,13 +220,12 @@ jobs:
|
|||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up JDK
|
||||
- name: Set up JDK 17
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
java-version: '11'
|
||||
distribution: 'adopt'
|
||||
architecture: x64
|
||||
cache: maven
|
||||
distribution: 'temurin'
|
||||
java-version: '17'
|
||||
cache: 'maven'
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v5
|
||||
|
|
|
|||
|
|
@ -213,8 +213,9 @@ hypervisor.type=kvm
|
|||
# If null (default), defaults to the VM's OS architecture
|
||||
#guest.cpu.arch=
|
||||
|
||||
# This param will require CPU features on the CPU section.
|
||||
# The features listed in this property must be separated by a blank space (e.g.: vmx vme)
|
||||
# Specifies required CPU features for end-user and system VMs.
|
||||
# These features must be present on the host CPU for VM deployment.
|
||||
# Multiple features should be separated by whitespace (e.g.: vmx vme).
|
||||
#guest.cpu.features=
|
||||
|
||||
# Disables memory ballooning on VM guests for overcommit.
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloudstack</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
|
|
|||
|
|
@ -425,8 +425,9 @@ public class AgentProperties{
|
|||
public static final Property<String> GUEST_CPU_ARCH = new Property<>("guest.cpu.arch", null, String.class);
|
||||
|
||||
/**
|
||||
* This param will require CPU features on the CPU section.<br>
|
||||
* The features listed in this property must be separated by a blank space (see example below).<br>
|
||||
* Specifies required CPU features for end-user and system VMs.<br>
|
||||
* These features must be present on the host CPU for VM deployment.<br>
|
||||
* Multiple features should be separated by whitespace (see example below).<br>
|
||||
* Possible values: vmx vme <br>
|
||||
* Data type: String.<br>
|
||||
* Default value: <code>null</code>
|
||||
|
|
|
|||
|
|
@ -20,7 +20,6 @@ import java.util.ArrayList;
|
|||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
import com.cloud.agent.IAgentControl;
|
||||
import com.cloud.agent.api.Answer;
|
||||
|
|
@ -40,6 +39,7 @@ import com.cloud.resource.ServerResource;
|
|||
import com.cloud.storage.Storage;
|
||||
import com.cloud.storage.Storage.StoragePoolType;
|
||||
import com.cloud.utils.StringUtils;
|
||||
import com.cloud.utils.UuidUtils;
|
||||
|
||||
public class DummyResource implements ServerResource {
|
||||
String _name;
|
||||
|
|
@ -133,7 +133,7 @@ public class DummyResource implements ServerResource {
|
|||
String hostIp = getConfiguredProperty("private.ip.address", "127.0.0.1");
|
||||
String localStoragePath = getConfiguredProperty("local.storage.path", "/mnt");
|
||||
String lh = hostIp + localStoragePath;
|
||||
String uuid = UUID.nameUUIDFromBytes(lh.getBytes(StringUtils.getPreferredCharset())).toString();
|
||||
String uuid = UuidUtils.nameUUIDFromBytes(lh.getBytes(StringUtils.getPreferredCharset())).toString();
|
||||
|
||||
String capacity = getConfiguredProperty("local.storage.capacity", "1000000000");
|
||||
String available = getConfiguredProperty("local.storage.avail", "10000000");
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloudstack</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ public class ScaleSystemVMCmd extends BaseAsyncCmd {
|
|||
}
|
||||
|
||||
public Map<String, String> getDetails() {
|
||||
return details;
|
||||
return convertDetailsToMap(details);
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ public class UpgradeSystemVMCmd extends BaseCmd {
|
|||
}
|
||||
|
||||
public Map<String, String> getDetails() {
|
||||
return details;
|
||||
return convertDetailsToMap(details);
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ import com.google.gson.annotations.SerializedName;
|
|||
public class StatsResponse extends BaseResponse {
|
||||
|
||||
@SerializedName("timestamp")
|
||||
@Param(description = "the time when the VM stats were collected. The format is \"yyyy-MM-dd hh:mm:ss\"")
|
||||
@Param(description = "the time when the VM stats were collected. The format is 'yyyy-MM-dd hh:mm:ss'")
|
||||
private Date timestamp;
|
||||
|
||||
@SerializedName("cpuused")
|
||||
|
|
|
|||
|
|
@ -58,3 +58,7 @@ access.log=/var/log/cloudstack/management/access.log
|
|||
|
||||
# The deployment mode for the extensions
|
||||
extensions.deployment.mode=@EXTENSIONSDEPLOYMENTMODE@
|
||||
|
||||
# Thread pool configuration
|
||||
#threads.min=10
|
||||
#threads.max=500
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloudstack</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
|
|
|||
|
|
@ -86,6 +86,8 @@ public class ServerDaemon implements Daemon {
|
|||
private static final int DEFAULT_REQUEST_CONTENT_SIZE = 1048576;
|
||||
private static final String REQUEST_MAX_FORM_KEYS_KEY = "request.max.form.keys";
|
||||
private static final int DEFAULT_REQUEST_MAX_FORM_KEYS = 5000;
|
||||
private static final String THREADS_MIN = "threads.min";
|
||||
private static final String THREADS_MAX = "threads.max";
|
||||
|
||||
////////////////////////////////////////////////////////
|
||||
/////////////// Server Configuration ///////////////////
|
||||
|
|
@ -106,6 +108,8 @@ public class ServerDaemon implements Daemon {
|
|||
private String keystoreFile;
|
||||
private String keystorePassword;
|
||||
private String webAppLocation;
|
||||
private int minThreads;
|
||||
private int maxThreads;
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
/////////////// Public methods ///////////////////
|
||||
|
|
@ -147,6 +151,8 @@ public class ServerDaemon implements Daemon {
|
|||
setSessionTimeout(Integer.valueOf(properties.getProperty(SESSION_TIMEOUT, "30")));
|
||||
setMaxFormContentSize(Integer.valueOf(properties.getProperty(REQUEST_CONTENT_SIZE_KEY, String.valueOf(DEFAULT_REQUEST_CONTENT_SIZE))));
|
||||
setMaxFormKeys(Integer.valueOf(properties.getProperty(REQUEST_MAX_FORM_KEYS_KEY, String.valueOf(DEFAULT_REQUEST_MAX_FORM_KEYS))));
|
||||
setMinThreads(Integer.valueOf(properties.getProperty(THREADS_MIN, "10")));
|
||||
setMaxThreads(Integer.valueOf(properties.getProperty(THREADS_MAX, "500")));
|
||||
} catch (final IOException e) {
|
||||
logger.warn("Failed to read configuration from server.properties file", e);
|
||||
} finally {
|
||||
|
|
@ -164,8 +170,8 @@ public class ServerDaemon implements Daemon {
|
|||
public void start() throws Exception {
|
||||
// Thread pool
|
||||
final QueuedThreadPool threadPool = new QueuedThreadPool();
|
||||
threadPool.setMinThreads(10);
|
||||
threadPool.setMaxThreads(500);
|
||||
threadPool.setMinThreads(minThreads);
|
||||
threadPool.setMaxThreads(maxThreads);
|
||||
|
||||
// Jetty Server
|
||||
server = new Server(threadPool);
|
||||
|
|
@ -394,4 +400,12 @@ public class ServerDaemon implements Daemon {
|
|||
public void setMaxFormKeys(int maxFormKeys) {
|
||||
this.maxFormKeys = maxFormKeys;
|
||||
}
|
||||
|
||||
public void setMinThreads(int minThreads) {
|
||||
this.minThreads = minThreads;
|
||||
}
|
||||
|
||||
public void setMaxThreads(int maxThreads) {
|
||||
this.maxThreads = maxThreads;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloudstack</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
|
|
|||
|
|
@ -21,10 +21,10 @@ package com.cloud.agent.api;
|
|||
|
||||
import java.io.File;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
import com.cloud.agent.api.to.StorageFilerTO;
|
||||
import com.cloud.storage.StoragePool;
|
||||
import com.cloud.utils.UuidUtils;
|
||||
|
||||
public class DeleteStoragePoolCommand extends Command {
|
||||
public static final String DATASTORE_NAME = "datastoreName";
|
||||
|
|
@ -49,7 +49,7 @@ public class DeleteStoragePoolCommand extends Command {
|
|||
}
|
||||
|
||||
public DeleteStoragePoolCommand(StoragePool pool) {
|
||||
this(pool, LOCAL_PATH_PREFIX + File.separator + UUID.nameUUIDFromBytes((pool.getHostAddress() + pool.getPath()).getBytes()));
|
||||
this(pool, LOCAL_PATH_PREFIX + File.separator + UuidUtils.nameUUIDFromBytes((pool.getHostAddress() + pool.getPath()).getBytes()));
|
||||
}
|
||||
|
||||
public void setPool(StoragePool pool) {
|
||||
|
|
|
|||
|
|
@ -21,10 +21,10 @@ package com.cloud.agent.api;
|
|||
|
||||
import java.io.File;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
import com.cloud.agent.api.to.StorageFilerTO;
|
||||
import com.cloud.storage.StoragePool;
|
||||
import com.cloud.utils.UuidUtils;
|
||||
|
||||
public class ModifyStoragePoolCommand extends Command {
|
||||
public static final String LOCAL_PATH_PREFIX = "/mnt/";
|
||||
|
|
@ -47,11 +47,11 @@ public class ModifyStoragePoolCommand extends Command {
|
|||
}
|
||||
|
||||
public ModifyStoragePoolCommand(boolean add, StoragePool pool, Map<String, String> details) {
|
||||
this(add, pool, LOCAL_PATH_PREFIX + File.separator + UUID.nameUUIDFromBytes((pool.getHostAddress() + pool.getPath()).getBytes()), details);
|
||||
this(add, pool, LOCAL_PATH_PREFIX + File.separator + UuidUtils.nameUUIDFromBytes((pool.getHostAddress() + pool.getPath()).getBytes()), details);
|
||||
}
|
||||
|
||||
public ModifyStoragePoolCommand(boolean add, StoragePool pool) {
|
||||
this(add, pool, LOCAL_PATH_PREFIX + File.separator + UUID.nameUUIDFromBytes((pool.getHostAddress() + pool.getPath()).getBytes()));
|
||||
this(add, pool, LOCAL_PATH_PREFIX + File.separator + UuidUtils.nameUUIDFromBytes((pool.getHostAddress() + pool.getPath()).getBytes()));
|
||||
}
|
||||
|
||||
public boolean getAdd() {
|
||||
|
|
|
|||
|
|
@ -1,3 +1,15 @@
|
|||
cloudstack (4.22.0.0-SNAPSHOT) unstable; urgency=low
|
||||
|
||||
* Update the version to 4.22.0.0-SNAPSHOT
|
||||
|
||||
-- the Apache CloudStack project <dev@cloudstack.apache.org> Thu, Aug 28 11:58:36 2025 +0530
|
||||
|
||||
cloudstack (4.21.0.0) unstable; urgency=low
|
||||
|
||||
* Update the version to 4.21.0.0
|
||||
|
||||
-- the Apache CloudStack project <dev@cloudstack.apache.org> Fri, 22 Aug 2025 11:42:37 +0530
|
||||
|
||||
cloudstack (4.21.0.0-SNAPSHOT) unstable; urgency=low
|
||||
|
||||
* Update the version to 4.21.0.0-SNAPSHOT
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloudstack</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloud-engine</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloud-engine</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloud-engine</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ import java.util.ArrayList;
|
|||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashMap;
|
||||
|
|
@ -1310,6 +1311,7 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
|
|||
IPAddressVO lockedIpVO = _ipAddressDao.acquireInLockTable(ipVO.getId());
|
||||
validateLockedRequestedIp(ipVO, lockedIpVO);
|
||||
lockedIpVO.setState(IPAddressVO.State.Allocated);
|
||||
lockedIpVO.setAllocatedTime(new Date());
|
||||
_ipAddressDao.update(lockedIpVO.getId(), lockedIpVO);
|
||||
} finally {
|
||||
_ipAddressDao.releaseFromLockTable(ipVO.getId());
|
||||
|
|
|
|||
|
|
@ -581,12 +581,16 @@ public class VolumeOrchestrator extends ManagerBase implements VolumeOrchestrati
|
|||
DataStore store = dataStoreMgr.getDataStore(pool.getId(), DataStoreRole.Primary);
|
||||
DataStoreRole dataStoreRole = snapshotHelper.getDataStoreRole(snapshot, zoneId);
|
||||
SnapshotInfo snapInfo = snapshotFactory.getSnapshotWithRoleAndZone(snapshot.getId(), dataStoreRole, zoneId);
|
||||
boolean kvmSnapshotOnlyInPrimaryStorage = snapshotHelper.isKvmSnapshotOnlyInPrimaryStorage(snapshot, dataStoreRole, zoneId);
|
||||
logger.debug("Creating volume from snapshot, with dataStore role {} and on primary storage: {}", dataStoreRole, kvmSnapshotOnlyInPrimaryStorage);
|
||||
|
||||
boolean kvmSnapshotOnlyInPrimaryStorage = snapshotHelper.isKvmSnapshotOnlyInPrimaryStorage(snapshot, dataStoreRole, volume.getDataCenterId());
|
||||
boolean storageSupportSnapshotToTemplateEnabled = snapshotHelper.isStorageSupportSnapshotToTemplate(snapInfo);
|
||||
|
||||
boolean storageSupportSnapshotToTemplateEnabled = snapshotHelper.isStorageSupportSnapshotToTemplate(snapInfo); // storageSupportSnapshotToTemplateEnabled is true only for StorPool now [TODO: Update to check storage supports snapshot to volume (DataStoreCapabilities.CAN_CREATE_VOLUME_FROM_SNAPSHOT) - may impact other storages, or StorPool storage type only]
|
||||
try {
|
||||
if (!storageSupportSnapshotToTemplateEnabled) {
|
||||
dataStoreRole = snapshotHelper.getDataStoreRole(snapshot);
|
||||
snapInfo = snapshotFactory.getSnapshotWithRoleAndZone(snapshot.getId(), dataStoreRole, zoneId);
|
||||
kvmSnapshotOnlyInPrimaryStorage = snapshotHelper.isKvmSnapshotOnlyInPrimaryStorage(snapshot, dataStoreRole);
|
||||
logger.debug("Creating volume from snapshot, with dataStore role {} and on primary storage: {}", dataStoreRole, kvmSnapshotOnlyInPrimaryStorage);
|
||||
snapInfo = snapshotHelper.backupSnapshotToSecondaryStorageIfNotExists(snapInfo, dataStoreRole, snapshot, kvmSnapshotOnlyInPrimaryStorage);
|
||||
}
|
||||
} catch (CloudRuntimeException e) {
|
||||
|
|
@ -600,7 +604,7 @@ public class VolumeOrchestrator extends ManagerBase implements VolumeOrchestrati
|
|||
}
|
||||
|
||||
// don't try to perform a sync if the DataStoreRole of the snapshot is equal to DataStoreRole.Primary
|
||||
if (!DataStoreRole.Primary.equals(dataStoreRole) || !storageSupportSnapshotToTemplateEnabled) {
|
||||
if (!DataStoreRole.Primary.equals(dataStoreRole) || (kvmSnapshotOnlyInPrimaryStorage && !storageSupportSnapshotToTemplateEnabled)) {
|
||||
try {
|
||||
// sync snapshot to region store if necessary
|
||||
DataStore snapStore = snapInfo.getDataStore();
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloudstack</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
<build>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloud-engine</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ public interface ClusterDao extends GenericDao<ClusterVO, Long> {
|
|||
|
||||
List<HypervisorType> getAvailableHypervisorInZone(Long zoneId);
|
||||
|
||||
List<Pair<HypervisorType, CPU.CPUArch>> listDistinctHypervisorsArchAcrossClusters(Long zoneId);
|
||||
List<Pair<HypervisorType, CPU.CPUArch>> listDistinctHypervisorsAndArchExcludingExternalType(Long zoneId);
|
||||
|
||||
List<ClusterVO> listByDcHyType(long dcId, String hyType);
|
||||
|
||||
|
|
|
|||
|
|
@ -168,16 +168,26 @@ public class ClusterDaoImpl extends GenericDaoBase<ClusterVO, Long> implements C
|
|||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns distinct (HypervisorType, CPUArch) pairs from clusters in the given zone,
|
||||
* excluding clusters with {@link HypervisorType#External}.
|
||||
*
|
||||
* @param zoneId the zone ID to filter by, or {@code null} to include all zones
|
||||
* @return list of unique hypervisor type and CPU architecture pairs
|
||||
*/
|
||||
@Override
|
||||
public List<Pair<HypervisorType, CPU.CPUArch>> listDistinctHypervisorsArchAcrossClusters(Long zoneId) {
|
||||
public List<Pair<HypervisorType, CPU.CPUArch>> listDistinctHypervisorsAndArchExcludingExternalType(Long zoneId) {
|
||||
SearchBuilder<ClusterVO> sb = createSearchBuilder();
|
||||
sb.select(null, Func.DISTINCT_PAIR, sb.entity().getHypervisorType(), sb.entity().getArch());
|
||||
sb.and("zoneId", sb.entity().getDataCenterId(), SearchCriteria.Op.EQ);
|
||||
sb.and("hypervisorType", sb.entity().getHypervisorType(), SearchCriteria.Op.NEQ);
|
||||
sb.done();
|
||||
SearchCriteria<ClusterVO> sc = sb.create();
|
||||
if (zoneId != null) {
|
||||
sc.setParameters("zoneId", zoneId);
|
||||
}
|
||||
sc.setParameters("hypervisorType", HypervisorType.External);
|
||||
|
||||
final List<ClusterVO> clusters = search(sc, null);
|
||||
return clusters.stream()
|
||||
.map(c -> new Pair<>(c.getHypervisorType(), c.getArch()))
|
||||
|
|
|
|||
|
|
@ -50,6 +50,9 @@ public class SecurityGroupVMMapVO implements InternalIdentity {
|
|||
@Column(name = "ip4_address", table = "nics", insertable = false, updatable = false)
|
||||
private String guestIpAddress;
|
||||
|
||||
@Column(name = "ip6_address", table = "nics", insertable = false, updatable = false)
|
||||
private String guestIpv6Address;
|
||||
|
||||
@Column(name = "state", table = "vm_instance", insertable = false, updatable = false)
|
||||
private State vmState;
|
||||
|
||||
|
|
@ -77,6 +80,10 @@ public class SecurityGroupVMMapVO implements InternalIdentity {
|
|||
return guestIpAddress;
|
||||
}
|
||||
|
||||
public String getGuestIpv6Address() {
|
||||
return guestIpv6Address;
|
||||
}
|
||||
|
||||
public long getInstanceId() {
|
||||
return instanceId;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ import javax.persistence.Transient;
|
|||
|
||||
import com.cloud.cpu.CPU;
|
||||
import com.cloud.user.UserData;
|
||||
import com.cloud.utils.UuidUtils;
|
||||
import org.apache.cloudstack.util.CPUArchConverter;
|
||||
import org.apache.cloudstack.util.HypervisorTypeConverter;
|
||||
import org.apache.cloudstack.utils.reflectiontostringbuilderutils.ReflectionToStringBuilderUtils;
|
||||
|
|
@ -344,7 +345,7 @@ public class VMTemplateVO implements VirtualMachineTemplate {
|
|||
name.append("-");
|
||||
name.append(userId);
|
||||
name.append("-");
|
||||
name.append(UUID.nameUUIDFromBytes((displayName + System.currentTimeMillis()).getBytes()).toString());
|
||||
name.append(UuidUtils.nameUUIDFromBytes((displayName + System.currentTimeMillis()).getBytes()).toString());
|
||||
return name.toString();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -90,6 +90,7 @@ import com.cloud.upgrade.dao.Upgrade41900to41910;
|
|||
import com.cloud.upgrade.dao.Upgrade41910to42000;
|
||||
import com.cloud.upgrade.dao.Upgrade42000to42010;
|
||||
import com.cloud.upgrade.dao.Upgrade42010to42100;
|
||||
import com.cloud.upgrade.dao.Upgrade42100to42200;
|
||||
import com.cloud.upgrade.dao.Upgrade420to421;
|
||||
import com.cloud.upgrade.dao.Upgrade421to430;
|
||||
import com.cloud.upgrade.dao.Upgrade430to440;
|
||||
|
|
@ -234,6 +235,7 @@ public class DatabaseUpgradeChecker implements SystemIntegrityChecker {
|
|||
.next("4.19.1.0", new Upgrade41910to42000())
|
||||
.next("4.20.0.0", new Upgrade42000to42010())
|
||||
.next("4.20.1.0", new Upgrade42010to42100())
|
||||
.next("4.21.0.0", new Upgrade42100to42200())
|
||||
.build();
|
||||
}
|
||||
|
||||
|
|
@ -379,6 +381,9 @@ public class DatabaseUpgradeChecker implements SystemIntegrityChecker {
|
|||
} finally {
|
||||
txn.close();
|
||||
}
|
||||
if (upgrade.refreshPoolConnectionsAfterUpgrade()) {
|
||||
TransactionLegacy.refreshConnections(TransactionLegacy.CLOUD_DB);
|
||||
}
|
||||
return version;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -917,7 +917,7 @@ public class SystemVmTemplateRegistration {
|
|||
String nfsVersion = getNfsVersion(storeUrlAndId.second());
|
||||
mountStore(storeUrlAndId.first(), filePath, nfsVersion);
|
||||
List<Pair<Hypervisor.HypervisorType, CPU.CPUArch>> hypervisorArchList =
|
||||
clusterDao.listDistinctHypervisorsArchAcrossClusters(zoneId);
|
||||
clusterDao.listDistinctHypervisorsAndArchExcludingExternalType(zoneId);
|
||||
for (Pair<Hypervisor.HypervisorType, CPU.CPUArch> hypervisorArch : hypervisorArchList) {
|
||||
Hypervisor.HypervisorType hypervisorType = hypervisorArch.first();
|
||||
MetadataTemplateDetails templateDetails = getMetadataTemplateDetails(hypervisorType,
|
||||
|
|
@ -1065,7 +1065,7 @@ public class SystemVmTemplateRegistration {
|
|||
public void doInTransactionWithoutResult(final TransactionStatus status) {
|
||||
List<Pair<Hypervisor.HypervisorType, CPU.CPUArch>> hypervisorsInUse;
|
||||
try {
|
||||
hypervisorsInUse = clusterDao.listDistinctHypervisorsArchAcrossClusters(null);
|
||||
hypervisorsInUse = clusterDao.listDistinctHypervisorsAndArchExcludingExternalType(null);
|
||||
} catch (final Exception e) {
|
||||
throw new CloudRuntimeException("Exception while getting hypervisor types from clusters", e);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,6 +16,8 @@
|
|||
// under the License.
|
||||
package com.cloud.upgrade.dao;
|
||||
|
||||
import com.cloud.utils.exception.CloudRuntimeException;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.sql.Connection;
|
||||
|
||||
|
|
@ -24,18 +26,45 @@ public interface DbUpgrade {
|
|||
|
||||
String getUpgradedVersion();
|
||||
|
||||
boolean supportsRollingUpgrade();
|
||||
default boolean supportsRollingUpgrade() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the script to prepare the database schema for the
|
||||
* data migration step.
|
||||
*/
|
||||
InputStream[] getPrepareScripts();
|
||||
default InputStream[] getPrepareScripts() {
|
||||
String fromVersion = getUpgradableVersionRange()[0];
|
||||
String toVersion = getUpgradableVersionRange()[1];
|
||||
final String scriptFile = String.format("META-INF/db/schema-%sto%s.sql", fromVersion.replace(".", ""), toVersion.replace(".", ""));
|
||||
final InputStream script = Thread.currentThread().getContextClassLoader().getResourceAsStream(scriptFile);
|
||||
if (script == null) {
|
||||
throw new CloudRuntimeException("Unable to find " + scriptFile);
|
||||
}
|
||||
|
||||
return new InputStream[]{script};
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs the actual data migration.
|
||||
*/
|
||||
void performDataMigration(Connection conn);
|
||||
default void performDataMigration(Connection conn) {
|
||||
}
|
||||
|
||||
InputStream[] getCleanupScripts();
|
||||
default InputStream[] getCleanupScripts() {
|
||||
String fromVersion = getUpgradableVersionRange()[0];
|
||||
String toVersion = getUpgradableVersionRange()[1];
|
||||
final String scriptFile = String.format("META-INF/db/schema-%sto%s-cleanup.sql", fromVersion.replace(".", ""), toVersion.replace(".", ""));
|
||||
final InputStream script = Thread.currentThread().getContextClassLoader().getResourceAsStream(scriptFile);
|
||||
if (script == null) {
|
||||
throw new CloudRuntimeException("Unable to find " + scriptFile);
|
||||
}
|
||||
|
||||
return new InputStream[]{script};
|
||||
}
|
||||
|
||||
default boolean refreshPoolConnectionsAfterUpgrade() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,9 +17,23 @@
|
|||
|
||||
package com.cloud.upgrade.dao;
|
||||
|
||||
import com.cloud.upgrade.SystemVmTemplateRegistration;
|
||||
import com.cloud.utils.exception.CloudRuntimeException;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
import java.sql.Connection;
|
||||
|
||||
public interface DbUpgradeSystemVmTemplate {
|
||||
|
||||
void updateSystemVmTemplates(Connection conn);
|
||||
default void updateSystemVmTemplates(Connection conn) {
|
||||
Logger logger = LogManager.getLogger(getClass());
|
||||
logger.debug("Updating System Vm template IDs");
|
||||
try {
|
||||
SystemVmTemplateRegistration systemVmTemplateRegistration = new SystemVmTemplateRegistration("");
|
||||
systemVmTemplateRegistration.updateSystemVmTemplates(conn);
|
||||
} catch (Exception e) {
|
||||
throw new CloudRuntimeException("Failed to find / register SystemVM template(s)");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,10 +16,6 @@
|
|||
// under the License.
|
||||
package com.cloud.upgrade.dao;
|
||||
|
||||
import com.cloud.upgrade.SystemVmTemplateRegistration;
|
||||
import com.cloud.utils.db.TransactionLegacy;
|
||||
import com.cloud.utils.exception.CloudRuntimeException;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
|
|
@ -32,6 +28,10 @@ import java.util.Map;
|
|||
|
||||
import org.apache.cloudstack.framework.config.ConfigKey;
|
||||
|
||||
import com.cloud.upgrade.SystemVmTemplateRegistration;
|
||||
import com.cloud.utils.db.TransactionLegacy;
|
||||
import com.cloud.utils.exception.CloudRuntimeException;
|
||||
|
||||
public class Upgrade42010to42100 extends DbUpgradeAbstractImpl implements DbUpgrade, DbUpgradeSystemVmTemplate {
|
||||
private SystemVmTemplateRegistration systemVmTemplateRegistration;
|
||||
|
||||
|
|
@ -212,4 +212,9 @@ public class Upgrade42010to42100 extends DbUpgradeAbstractImpl implements DbUpgr
|
|||
throw new CloudRuntimeException(String.format("Failed to migrate existing configuration scope values to bitmask due to: %s", e.getMessage()));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean refreshPoolConnectionsAfterUpgrade() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,30 @@
|
|||
// Licensed to the Apache Software Foundation (ASF) under one
|
||||
// or more contributor license agreements. See the NOTICE file
|
||||
// distributed with this work for additional information
|
||||
// regarding copyright ownership. The ASF licenses this file
|
||||
// to you under the Apache License, Version 2.0 (the
|
||||
// "License"); you may not use this file except in compliance
|
||||
// with the License. You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing,
|
||||
// software distributed under the License is distributed on an
|
||||
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
// KIND, either express or implied. See the License for the
|
||||
// specific language governing permissions and limitations
|
||||
// under the License.
|
||||
package com.cloud.upgrade.dao;
|
||||
|
||||
public class Upgrade42100to42200 extends DbUpgradeAbstractImpl implements DbUpgrade, DbUpgradeSystemVmTemplate {
|
||||
|
||||
@Override
|
||||
public String[] getUpgradableVersionRange() {
|
||||
return new String[]{"4.21.0.0", "4.22.0.0"};
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUpgradedVersion() {
|
||||
return "4.22.0.0";
|
||||
}
|
||||
}
|
||||
|
|
@ -755,31 +755,5 @@ SET `cs`.`domain_id` = (
|
|||
WHERE `acc`.`id` = `cs`.`account_id`
|
||||
);
|
||||
|
||||
-- Disk controller mappings
|
||||
CREATE TABLE IF NOT EXISTS `cloud`.`disk_controller_mapping` (
|
||||
`id` bigint(20) unsigned NOT NULL auto_increment,
|
||||
`uuid` varchar(255) UNIQUE NOT NULL,
|
||||
`name` varchar(255) NOT NULL,
|
||||
`controller_reference` varchar(255) NOT NULL,
|
||||
`bus_name` varchar(255) NOT NULL,
|
||||
`hypervisor` varchar(40) NOT NULL,
|
||||
`max_device_count` bigint unsigned DEFAULT NULL,
|
||||
`max_controller_count` bigint unsigned DEFAULT NULL,
|
||||
`vmdk_adapter_type` varchar(255) DEFAULT NULL,
|
||||
`min_hardware_version` varchar(20) DEFAULT NULL,
|
||||
`created` datetime NOT NULL,
|
||||
`removed` datetime DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
);
|
||||
|
||||
-- Add VMware's default disk controller mappings
|
||||
CALL `cloud`.`ADD_DISK_CONTROLLER_MAPPING` ('osdefault', 'unused', 'unused', 'VMware', NULL, NULL, NULL, NULL);
|
||||
CALL `cloud`.`ADD_DISK_CONTROLLER_MAPPING` ('ide', 'com.vmware.vim25.VirtualIDEController', 'ide', 'VMware', 2, 2, 'ide', NULL);
|
||||
CALL `cloud`.`ADD_DISK_CONTROLLER_MAPPING` ('scsi', 'com.vmware.vim25.VirtualLsiLogicController', 'scsi', 'VMware', 16, 4, 'lsilogic', NULL);
|
||||
CALL `cloud`.`ADD_DISK_CONTROLLER_MAPPING` ('buslogic', 'com.vmware.vim25.VirtualBusLogicController', 'scsi', 'VMware', 16, 4, 'buslogic', NULL);
|
||||
CALL `cloud`.`ADD_DISK_CONTROLLER_MAPPING` ('lsilogic', 'com.vmware.vim25.VirtualLsiLogicController', 'scsi', 'VMware', 16, 4, 'lsilogic', NULL);
|
||||
CALL `cloud`.`ADD_DISK_CONTROLLER_MAPPING` ('lsisas1068', 'com.vmware.vim25.VirtualLsiLogicSASController', 'scsi', 'VMware', 16, 4, 'lsilogic', NULL);
|
||||
CALL `cloud`.`ADD_DISK_CONTROLLER_MAPPING` ('pvscsi', 'com.vmware.vim25.ParaVirtualSCSIController', 'scsi', 'VMware', 16, 4, 'lsilogic', '7');
|
||||
CALL `cloud`.`ADD_DISK_CONTROLLER_MAPPING` ('sata', 'com.vmware.vim25.VirtualAHCIController', 'sata', 'VMware', 30, 4, 'ide', '10');
|
||||
CALL `cloud`.`ADD_DISK_CONTROLLER_MAPPING` ('ahci', 'com.vmware.vim25.VirtualAHCIController', 'sata', 'VMware', 30, 4, 'ide', '10');
|
||||
CALL `cloud`.`ADD_DISK_CONTROLLER_MAPPING` ('nvme', 'com.vmware.vim25.VirtualNVMEController', 'nvme', 'VMware', 15, 4, 'ide', '13');
|
||||
-- Re-apply VPC: update default network offering for vpc tier to conserve_mode=1 (#8309)
|
||||
UPDATE `cloud`.`network_offerings` SET conserve_mode = 1 WHERE name = 'DefaultIsolatedNetworkOfferingForVpcNetworks';
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
-- Licensed to the Apache Software Foundation (ASF) under one
|
||||
-- or more contributor license agreements. See the NOTICE file
|
||||
-- distributed with this work for additional information
|
||||
-- regarding copyright ownership. The ASF licenses this file
|
||||
-- to you under the Apache License, Version 2.0 (the
|
||||
-- "License"); you may not use this file except in compliance
|
||||
-- with the License. You may obtain a copy of the License at
|
||||
--
|
||||
-- http://www.apache.org/licenses/LICENSE-2.0
|
||||
--
|
||||
-- Unless required by applicable law or agreed to in writing,
|
||||
-- software distributed under the License is distributed on an
|
||||
-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
-- KIND, either express or implied. See the License for the
|
||||
-- specific language governing permissions and limitations
|
||||
-- under the License.
|
||||
|
||||
--;
|
||||
-- Schema upgrade cleanup from 4.21.0.0 to 4.22.0.0
|
||||
--;
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
-- Licensed to the Apache Software Foundation (ASF) under one
|
||||
-- or more contributor license agreements. See the NOTICE file
|
||||
-- distributed with this work for additional information
|
||||
-- regarding copyright ownership. The ASF licenses this file
|
||||
-- to you under the Apache License, Version 2.0 (the
|
||||
-- "License"); you may not use this file except in compliance
|
||||
-- with the License. You may obtain a copy of the License at
|
||||
--
|
||||
-- http://www.apache.org/licenses/LICENSE-2.0
|
||||
--
|
||||
-- Unless required by applicable law or agreed to in writing,
|
||||
-- software distributed under the License is distributed on an
|
||||
-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
-- KIND, either express or implied. See the License for the
|
||||
-- specific language governing permissions and limitations
|
||||
-- under the License.
|
||||
|
||||
--;
|
||||
-- Schema upgrade from 4.21.0.0 to 4.22.0.0
|
||||
--;
|
||||
|
||||
-- Disk controller mappings
|
||||
CREATE TABLE IF NOT EXISTS `cloud`.`disk_controller_mapping` (
|
||||
`id` bigint(20) unsigned NOT NULL auto_increment,
|
||||
`uuid` varchar(255) UNIQUE NOT NULL,
|
||||
`name` varchar(255) NOT NULL,
|
||||
`controller_reference` varchar(255) NOT NULL,
|
||||
`bus_name` varchar(255) NOT NULL,
|
||||
`hypervisor` varchar(40) NOT NULL,
|
||||
`max_device_count` bigint unsigned DEFAULT NULL,
|
||||
`max_controller_count` bigint unsigned DEFAULT NULL,
|
||||
`vmdk_adapter_type` varchar(255) DEFAULT NULL,
|
||||
`min_hardware_version` varchar(20) DEFAULT NULL,
|
||||
`created` datetime NOT NULL,
|
||||
`removed` datetime DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
);
|
||||
|
||||
-- Add VMware's default disk controller mappings
|
||||
CALL `cloud`.`ADD_DISK_CONTROLLER_MAPPING` ('osdefault', 'unused', 'unused', 'VMware', NULL, NULL, NULL, NULL);
|
||||
CALL `cloud`.`ADD_DISK_CONTROLLER_MAPPING` ('ide', 'com.vmware.vim25.VirtualIDEController', 'ide', 'VMware', 2, 2, 'ide', NULL);
|
||||
CALL `cloud`.`ADD_DISK_CONTROLLER_MAPPING` ('scsi', 'com.vmware.vim25.VirtualLsiLogicController', 'scsi', 'VMware', 16, 4, 'lsilogic', NULL);
|
||||
CALL `cloud`.`ADD_DISK_CONTROLLER_MAPPING` ('buslogic', 'com.vmware.vim25.VirtualBusLogicController', 'scsi', 'VMware', 16, 4, 'buslogic', NULL);
|
||||
CALL `cloud`.`ADD_DISK_CONTROLLER_MAPPING` ('lsilogic', 'com.vmware.vim25.VirtualLsiLogicController', 'scsi', 'VMware', 16, 4, 'lsilogic', NULL);
|
||||
CALL `cloud`.`ADD_DISK_CONTROLLER_MAPPING` ('lsisas1068', 'com.vmware.vim25.VirtualLsiLogicSASController', 'scsi', 'VMware', 16, 4, 'lsilogic', NULL);
|
||||
CALL `cloud`.`ADD_DISK_CONTROLLER_MAPPING` ('pvscsi', 'com.vmware.vim25.ParaVirtualSCSIController', 'scsi', 'VMware', 16, 4, 'lsilogic', '7');
|
||||
CALL `cloud`.`ADD_DISK_CONTROLLER_MAPPING` ('sata', 'com.vmware.vim25.VirtualAHCIController', 'sata', 'VMware', 30, 4, 'ide', '10');
|
||||
CALL `cloud`.`ADD_DISK_CONTROLLER_MAPPING` ('ahci', 'com.vmware.vim25.VirtualAHCIController', 'sata', 'VMware', 30, 4, 'ide', '10');
|
||||
CALL `cloud`.`ADD_DISK_CONTROLLER_MAPPING` ('nvme', 'com.vmware.vim25.VirtualNVMEController', 'nvme', 'VMware', 15, 4, 'ide', '13');
|
||||
|
|
@ -92,7 +92,7 @@ public class ClusterDaoImplTest {
|
|||
when(cluster2.getArch()).thenReturn(CPU.CPUArch.arm64);
|
||||
List<ClusterVO> dummyHosts = Arrays.asList(cluster1, cluster2);
|
||||
doReturn(dummyHosts).when(clusterDao).search(any(SearchCriteria.class), isNull());
|
||||
List<Pair<Hypervisor.HypervisorType, CPU.CPUArch>> result = clusterDao.listDistinctHypervisorsArchAcrossClusters(zoneId);
|
||||
List<Pair<Hypervisor.HypervisorType, CPU.CPUArch>> result = clusterDao.listDistinctHypervisorsAndArchExcludingExternalType(zoneId);
|
||||
assertNotNull(result);
|
||||
assertEquals(2, result.size());
|
||||
assertEquals(Hypervisor.HypervisorType.XenServer, result.get(0).first());
|
||||
|
|
@ -109,7 +109,7 @@ public class ClusterDaoImplTest {
|
|||
when(cluster.getArch()).thenReturn(CPU.CPUArch.amd64);
|
||||
List<ClusterVO> dummyHosts = Collections.singletonList(cluster);
|
||||
doReturn(dummyHosts).when(clusterDao).search(any(SearchCriteria.class), isNull());
|
||||
List<Pair<Hypervisor.HypervisorType, CPU.CPUArch>> result = clusterDao.listDistinctHypervisorsArchAcrossClusters(zoneId);
|
||||
List<Pair<Hypervisor.HypervisorType, CPU.CPUArch>> result = clusterDao.listDistinctHypervisorsAndArchExcludingExternalType(zoneId);
|
||||
assertNotNull(result);
|
||||
assertEquals(1, result.size());
|
||||
assertEquals(Hypervisor.HypervisorType.VMware, result.get(0).first());
|
||||
|
|
|
|||
|
|
@ -404,7 +404,7 @@ public class SystemVmTemplateRegistrationTest {
|
|||
Hypervisor.HypervisorType hypervisorType = Hypervisor.HypervisorType.KVM;
|
||||
CPU.CPUArch arch = CPU.CPUArch.getDefault();
|
||||
hypervisorArchList.add(new Pair<>(hypervisorType, arch));
|
||||
doReturn(hypervisorArchList).when(clusterDao).listDistinctHypervisorsArchAcrossClusters(zoneId);
|
||||
doReturn(hypervisorArchList).when(clusterDao).listDistinctHypervisorsAndArchExcludingExternalType(zoneId);
|
||||
SystemVmTemplateRegistration.MetadataTemplateDetails details =
|
||||
Mockito.mock(SystemVmTemplateRegistration.MetadataTemplateDetails.class);
|
||||
String name = "existing";
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloud-engine</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<artifactId>cloud-engine-service</artifactId>
|
||||
<packaging>war</packaging>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloud-engine</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloud-engine</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloud-engine</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloud-engine</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloud-engine</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
|
|
|
|||
|
|
@ -100,6 +100,7 @@ import com.cloud.storage.VolumeVO;
|
|||
import com.cloud.storage.dao.SnapshotDao;
|
||||
import com.cloud.storage.dao.VMTemplateDao;
|
||||
import com.cloud.storage.dao.VolumeDao;
|
||||
import com.cloud.utils.UuidUtils;
|
||||
import com.cloud.utils.component.ComponentContext;
|
||||
|
||||
import junit.framework.Assert;
|
||||
|
|
@ -287,7 +288,7 @@ public class SnapshotTest extends CloudStackTestNGBase {
|
|||
|
||||
public DataStore createPrimaryDataStore() {
|
||||
try {
|
||||
String uuid = UUID.nameUUIDFromBytes(this.getPrimaryStorageUrl().getBytes()).toString();
|
||||
String uuid = UuidUtils.nameUUIDFromBytes(this.getPrimaryStorageUrl().getBytes()).toString();
|
||||
List<StoragePoolVO> pools = primaryDataStoreDao.findPoolByName(this.primaryName);
|
||||
if (pools.size() > 0) {
|
||||
return this.dataStoreMgr.getPrimaryDataStore(pools.get(0).getId());
|
||||
|
|
|
|||
|
|
@ -82,6 +82,7 @@ import com.cloud.storage.Volume;
|
|||
import com.cloud.storage.VolumeVO;
|
||||
import com.cloud.storage.dao.VMTemplateDao;
|
||||
import com.cloud.storage.dao.VolumeDao;
|
||||
import com.cloud.utils.UuidUtils;
|
||||
import com.cloud.utils.component.ComponentContext;
|
||||
|
||||
@ContextConfiguration(locations = {"classpath:/storageContext.xml"})
|
||||
|
|
@ -281,7 +282,7 @@ public class VolumeServiceTest extends CloudStackTestNGBase {
|
|||
params.put("name", this.primaryName);
|
||||
params.put("port", "1");
|
||||
params.put("roles", DataStoreRole.Primary.toString());
|
||||
params.put("uuid", UUID.nameUUIDFromBytes(this.getPrimaryStorageUrl().getBytes()).toString());
|
||||
params.put("uuid", UuidUtils.nameUUIDFromBytes(this.getPrimaryStorageUrl().getBytes()).toString());
|
||||
params.put("providerName", String.valueOf(provider.getName()));
|
||||
|
||||
DataStoreLifeCycle lifeCycle = provider.getDataStoreLifeCycle();
|
||||
|
|
@ -324,7 +325,7 @@ public class VolumeServiceTest extends CloudStackTestNGBase {
|
|||
params.put("name", this.primaryName);
|
||||
params.put("port", "1");
|
||||
params.put("roles", DataStoreRole.Primary.toString());
|
||||
params.put("uuid", UUID.nameUUIDFromBytes(this.getPrimaryStorageUrl().getBytes()).toString());
|
||||
params.put("uuid", UuidUtils.nameUUIDFromBytes(this.getPrimaryStorageUrl().getBytes()).toString());
|
||||
params.put("providerName", String.valueOf(provider.getName()));
|
||||
|
||||
DataStoreLifeCycle lifeCycle = provider.getDataStoreLifeCycle();
|
||||
|
|
|
|||
|
|
@ -86,6 +86,7 @@ import com.cloud.storage.Volume;
|
|||
import com.cloud.storage.VolumeVO;
|
||||
import com.cloud.storage.dao.VMTemplateDao;
|
||||
import com.cloud.storage.dao.VolumeDao;
|
||||
import com.cloud.utils.UuidUtils;
|
||||
import com.cloud.utils.component.ComponentContext;
|
||||
|
||||
@ContextConfiguration(locations = {"classpath:/storageContext.xml"})
|
||||
|
|
@ -264,7 +265,7 @@ public class VolumeTestVmware extends CloudStackTestNGBase {
|
|||
|
||||
public DataStore createPrimaryDataStore() {
|
||||
try {
|
||||
String uuid = UUID.nameUUIDFromBytes(this.getPrimaryStorageUrl().getBytes()).toString();
|
||||
String uuid = UuidUtils.nameUUIDFromBytes(this.getPrimaryStorageUrl().getBytes()).toString();
|
||||
List<StoragePoolVO> pools = primaryDataStoreDao.findPoolByName(this.primaryName);
|
||||
if (pools.size() > 0) {
|
||||
return this.dataStoreMgr.getPrimaryDataStore(pools.get(0).getId());
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloud-engine</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloud-engine</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloud-engine</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
|
|
|
|||
|
|
@ -202,10 +202,15 @@ public class SnapshotObject implements SnapshotInfo {
|
|||
@Override
|
||||
public long getPhysicalSize() {
|
||||
long physicalSize = 0;
|
||||
SnapshotDataStoreVO snapshotStore = snapshotStoreDao.findByStoreSnapshot(DataStoreRole.Image, store.getId(), snapshot.getId());
|
||||
if (snapshotStore != null) {
|
||||
physicalSize = snapshotStore.getPhysicalSize();
|
||||
for (DataStoreRole role : List.of(DataStoreRole.Image, DataStoreRole.Primary)) {
|
||||
logger.trace("Retrieving snapshot [{}] size from {} storage.", snapshot.getUuid(), role);
|
||||
SnapshotDataStoreVO snapshotStore = snapshotStoreDao.findByStoreSnapshot(role, store.getId(), snapshot.getId());
|
||||
if (snapshotStore != null) {
|
||||
return snapshotStore.getPhysicalSize();
|
||||
}
|
||||
logger.trace("Snapshot [{}] size not found on {} storage.", snapshot.getUuid(), role);
|
||||
}
|
||||
logger.warn("Snapshot [{}] reference not found in any storage. There may be an inconsistency on the database.", snapshot.getUuid());
|
||||
return physicalSize;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloud-engine</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
|
|
|
|||
|
|
@ -2795,6 +2795,8 @@ public class VolumeServiceImpl implements VolumeService {
|
|||
} catch (CloudRuntimeException cre) {
|
||||
logger.error("Take snapshot: {} failed", volume, cre);
|
||||
throw cre;
|
||||
} catch (UnsupportedOperationException ex) {
|
||||
throw ex;
|
||||
} catch (Exception e) {
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug("unknown exception while taking snapshot for volume {} was caught", volume, e);
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@
|
|||
<parent>
|
||||
<artifactId>cloud-engine</artifactId>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloud-engine</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
|
|
|
|||
|
|
@ -16,6 +16,9 @@
|
|||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import warnings
|
||||
warnings.filterwarnings('ignore')
|
||||
|
||||
import json
|
||||
import sys
|
||||
import winrm
|
||||
|
|
@ -200,12 +203,11 @@ class HyperVManager:
|
|||
def status(self):
|
||||
command = f'(Get-VM -Name "{self.data["vmname"]}").State'
|
||||
state = self.run_ps(command)
|
||||
if state.lower() == "running":
|
||||
power_state = "unknown"
|
||||
if state.strip().lower() == "running":
|
||||
power_state = "poweron"
|
||||
elif state.lower() == "off":
|
||||
elif state.strip().lower() == "off":
|
||||
power_state = "poweroff"
|
||||
else:
|
||||
power_state = "unknown"
|
||||
succeed({"status": "success", "power_state": power_state})
|
||||
|
||||
def delete(self):
|
||||
|
|
|
|||
|
|
@ -334,7 +334,11 @@ restore_snapshot() {
|
|||
|
||||
execute_and_wait POST "/nodes/${node}/qemu/${vmid}/snapshot/${snap_name}/rollback"
|
||||
|
||||
execute_and_wait POST "/nodes/${node}/qemu/${vmid}/status/start"
|
||||
status_response=$(call_proxmox_api GET "/nodes/${node}/qemu/${vmid}/status/current")
|
||||
vm_status=$(echo "$status_response" | jq -r '.data.status')
|
||||
if [ "$vm_status" = "stopped" ];then
|
||||
execute_and_wait POST "/nodes/${node}/qemu/${vmid}/status/start"
|
||||
fi
|
||||
|
||||
echo '{"status": "success", "message": "Instance Snapshot restored"}'
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<artifactId>cloudstack-framework</artifactId>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
</project>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloudstack-framework</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
</project>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloudstack-framework</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloudstack-framework</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
|
|
|
|||
|
|
@ -107,7 +107,6 @@ public class ConfigDepotImplTest {
|
|||
String result = configDepotImpl.getConfigStringValue(key, ConfigKey.Scope.Global, null);
|
||||
Assert.assertEquals(value, result);
|
||||
Mockito.verify(_configDao, Mockito.times(configDBRetrieval)).findById(key);
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloudstack-framework</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
|
|
|
|||
|
|
@ -605,6 +605,15 @@ public class TransactionLegacy implements Closeable {
|
|||
return _conn;
|
||||
}
|
||||
|
||||
public static void refreshConnections(final short dbId) {
|
||||
if (dbId != CLOUD_DB) {
|
||||
return;
|
||||
}
|
||||
if (s_ds instanceof HikariDataSource) {
|
||||
((HikariDataSource)s_ds).getHikariPoolMXBean().softEvictConnections();
|
||||
}
|
||||
}
|
||||
|
||||
protected boolean takeOver(final String name, final boolean create) {
|
||||
if (_stack.size() != 0) {
|
||||
if (!create) {
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
<parent>
|
||||
<artifactId>cloudstack-framework</artifactId>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
</project>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloudstack-framework</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloudstack-framework</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
|
|
@ -41,13 +41,13 @@
|
|||
<dependency>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloud-engine-schema</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloud-engine-components-api</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloudstack-framework</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloudstack-framework</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloudstack</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloudstack</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<build>
|
||||
<plugins>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloudstack-framework</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloudstack-framework</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
<artifactId>cloud-framework-rest</artifactId>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloudstack-framework</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloudstack</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../../../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloudstack</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../../../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ After=libvirtd.service
|
|||
[Service]
|
||||
Type=simple
|
||||
EnvironmentFile=/etc/default/cloudstack-agent
|
||||
ExecStartPre=/usr/share/cloudstack-common/scripts/installer/pre-check.sh
|
||||
ExecStart=/usr/bin/java $JAVA_OPTS $JAVA_DEBUG -cp $CLASSPATH $JAVA_CLASS
|
||||
Restart=always
|
||||
RestartSec=10s
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ User=cloud
|
|||
EnvironmentFile=/etc/default/cloudstack-management
|
||||
WorkingDirectory=/var/log/cloudstack/management
|
||||
PIDFile=/var/run/cloudstack-management.pid
|
||||
ExecStartPre=/usr/share/cloudstack-common/scripts/installer/pre-check.sh
|
||||
ExecStart=/usr/bin/java $JAVA_DEBUG $JAVA_OPTS -cp $CLASSPATH $BOOTSTRAP_CLASS
|
||||
StandardOutput=append:/var/log/cloudstack/management/management-server.out
|
||||
StandardError=append:/var/log/cloudstack/management/management-server.err
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ After=network.target network-online.target mariadb.service mysqld.service mysql.
|
|||
Type=simple
|
||||
EnvironmentFile=/etc/default/cloudstack-usage
|
||||
Environment=JAVA_PID=$$
|
||||
ExecStartPre=/usr/share/cloudstack-common/scripts/installer/pre-check.sh
|
||||
ExecStart=/bin/sh -ec '/usr/bin/java -Dpid=${JAVA_PID} $JAVA_OPTS $JAVA_DEBUG -cp $CLASSPATH $JAVA_CLASS'
|
||||
Restart=always
|
||||
RestartSec=10s
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloudstack-plugins</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
</project>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloudstack-plugins</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
</project>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloudstack-plugins</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
</project>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloudstack-plugins</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
</project>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloudstack-plugins</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
</project>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloudstack-plugins</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
</project>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloudstack-plugins</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
</project>
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloudstack-plugins</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
</project>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<artifactId>cloudstack-plugins</artifactId>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<artifactId>cloudstack-plugins</artifactId>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloudstack-plugins</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloudstack-plugins</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
<build>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloudstack-plugins</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloudstack-plugins</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@
|
|||
<parent>
|
||||
<artifactId>cloudstack-plugins</artifactId>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
<parent>
|
||||
<artifactId>cloudstack-plugins</artifactId>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
<parent>
|
||||
<artifactId>cloudstack-plugins</artifactId>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@
|
|||
<parent>
|
||||
<artifactId>cloudstack-plugins</artifactId>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloudstack-plugins</artifactId>
|
||||
<version>4.21.0.0-SNAPSHOT</version>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue