mirror of https://github.com/apache/cloudstack.git
Merge branch 'main' of https://github.com/apache/cloudstack into change-cp-settings-to-zonelevel
This commit is contained in:
commit
ebbfa3602a
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -24,12 +24,15 @@ import java.io.IOException;
|
|||
import java.io.InputStream;
|
||||
import java.lang.management.ManagementFactory;
|
||||
import java.net.URL;
|
||||
import java.util.Arrays;
|
||||
import java.util.Properties;
|
||||
|
||||
import com.cloud.api.ApiServer;
|
||||
import org.apache.commons.daemon.Daemon;
|
||||
import org.apache.commons.daemon.DaemonContext;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.eclipse.jetty.jmx.MBeanContainer;
|
||||
import org.eclipse.jetty.server.ForwardedRequestCustomizer;
|
||||
import org.eclipse.jetty.server.HttpConfiguration;
|
||||
import org.eclipse.jetty.server.HttpConnectionFactory;
|
||||
import org.eclipse.jetty.server.RequestLog;
|
||||
|
|
@ -83,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 ///////////////////
|
||||
|
|
@ -103,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 ///////////////////
|
||||
|
|
@ -144,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 {
|
||||
|
|
@ -161,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);
|
||||
|
|
@ -184,6 +193,7 @@ public class ServerDaemon implements Daemon {
|
|||
httpConfig.setResponseHeaderSize(8192);
|
||||
httpConfig.setSendServerVersion(false);
|
||||
httpConfig.setSendDateHeader(false);
|
||||
addForwardingCustomiser(httpConfig);
|
||||
|
||||
// HTTP Connector
|
||||
createHttpConnector(httpConfig);
|
||||
|
|
@ -206,6 +216,21 @@ public class ServerDaemon implements Daemon {
|
|||
server.join();
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a ForwardedRequestCustomizer to the HTTP configuration to handle forwarded headers.
|
||||
* The header used for forwarding is determined by the ApiServer.listOfForwardHeaders property.
|
||||
* Only non empty headers are considered and only the first of the comma-separated list is used.
|
||||
* @param httpConfig the HTTP configuration to which the customizer will be added
|
||||
*/
|
||||
private static void addForwardingCustomiser(HttpConfiguration httpConfig) {
|
||||
ForwardedRequestCustomizer customiser = new ForwardedRequestCustomizer();
|
||||
String header = Arrays.stream(ApiServer.listOfForwardHeaders.value().split(",")).findFirst().orElse(null);
|
||||
if (com.cloud.utils.StringUtils.isNotEmpty(header)) {
|
||||
customiser.setForwardedForHeader(header);
|
||||
}
|
||||
httpConfig.addCustomizer(customiser);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stop() throws Exception {
|
||||
server.stop();
|
||||
|
|
@ -375,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
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ override_dh_auto_install:
|
|||
cp client/target/lib/*jar $(DESTDIR)/usr/share/$(PACKAGE)-management/lib/
|
||||
cp -r engine/schema/dist/systemvm-templates/* $(DESTDIR)/usr/share/$(PACKAGE)-management/templates/systemvm/
|
||||
cp -r plugins/integrations/kubernetes-service/src/main/resources/conf/* $(DESTDIR)/usr/share/$(PACKAGE)-management/cks/conf/
|
||||
rm -rf $(DESTDIR)/usr/share/$(PACKAGE)-management/templates/systemvm/md5sum.txt
|
||||
rm -rf $(DESTDIR)/usr/share/$(PACKAGE)-management/templates/systemvm/sha512sum.txt
|
||||
|
||||
# Bundle cmk in cloudstack-management
|
||||
wget https://github.com/apache/cloudstack-cloudmonkey/releases/download/$(CMK_REL)/cmk.linux.x86-64 -O $(DESTDIR)/usr/bin/cmk
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
@ -106,7 +106,7 @@
|
|||
templateList.add("systemvmtemplate-${csVersion}.${patch}-x86_64-xen")
|
||||
templateList.add("systemvmtemplate-${csVersion}.${patch}-x86_64-ovm")
|
||||
templateList.add("systemvmtemplate-${csVersion}.${patch}-x86_64-hyperv")
|
||||
File file = new File("./engine/schema/dist/systemvm-templates/md5sum.txt")
|
||||
File file = new File("./engine/schema/dist/systemvm-templates/sha512sum.txt")
|
||||
def lines = file.readLines()
|
||||
for (template in templateList) {
|
||||
def data = lines.findAll { it.contains(template) }
|
||||
|
|
@ -135,7 +135,7 @@
|
|||
<goal>wget</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<url>${project.systemvm.template.location}/${cs.version}/md5sum.txt</url>
|
||||
<url>${project.systemvm.template.location}/${cs.version}/sha512sum.txt</url>
|
||||
<outputDirectory>${basedir}/dist/systemvm-templates/</outputDirectory>
|
||||
<skipCache>true</skipCache>
|
||||
<overwrite>true</overwrite>
|
||||
|
|
@ -205,7 +205,7 @@
|
|||
<checkSignature>true</checkSignature>
|
||||
<url>${project.systemvm.template.location}/${cs.version}/systemvmtemplate-${cs.version}.${patch.version}-x86_64-kvm.qcow2.bz2</url>
|
||||
<outputDirectory>${basedir}/dist/systemvm-templates/</outputDirectory>
|
||||
<md5>${kvm.checksum}</md5>
|
||||
<sha512>${kvm.checksum}</sha512>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
|
|
@ -241,7 +241,7 @@
|
|||
<checkSignature>true</checkSignature>
|
||||
<url>${project.systemvm.template.location}/${cs.version}/systemvmtemplate-${cs.version}.${patch.version}-x86_64-vmware.ova</url>
|
||||
<outputDirectory>${basedir}/dist/systemvm-templates/</outputDirectory>
|
||||
<md5>${vmware.checksum}</md5>
|
||||
<sha512>${vmware.checksum}</sha512>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
|
|
@ -277,7 +277,7 @@
|
|||
<checkSignature>true</checkSignature>
|
||||
<url>${project.systemvm.template.location}/${cs.version}/systemvmtemplate-${cs.version}.${patch.version}-x86_64-xen.vhd.bz2</url>
|
||||
<outputDirectory>${basedir}/dist/systemvm-templates/</outputDirectory>
|
||||
<md5>${xen.checksum}</md5>
|
||||
<sha512>${xen.checksum}</sha512>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
|
|
@ -313,7 +313,7 @@
|
|||
<checkSignature>true</checkSignature>
|
||||
<url>${project.systemvm.template.location}/${cs.version}/systemvmtemplate-${cs.version}.${patch.version}-x86_64-ovm.raw.bz2</url>
|
||||
<outputDirectory>${basedir}/dist/systemvm-templates/</outputDirectory>
|
||||
<md5>${ovm.checksum}</md5>
|
||||
<sha512>${ovm.checksum}</sha512>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
|
|
@ -349,7 +349,7 @@
|
|||
<checkSignature>true</checkSignature>
|
||||
<url>${project.systemvm.template.location}/${cs.version}/systemvmtemplate-${cs.version}.${patch.version}-x86_64-hyperv.vhd.zip</url>
|
||||
<outputDirectory>${basedir}/dist/systemvm-templates/</outputDirectory>
|
||||
<md5>${hyperv.checksum}</md5>
|
||||
<sha512>${hyperv.checksum}</sha512>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
}
|
||||
}
|
||||
|
|
@ -754,3 +754,6 @@ SET `cs`.`domain_id` = (
|
|||
FROM `cloud`.`account` `acc`
|
||||
WHERE `acc`.`id` = `cs`.`account_id`
|
||||
);
|
||||
|
||||
-- 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,23 @@
|
|||
-- 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
|
||||
--;
|
||||
|
||||
-- Increase length of scripts_version column to 128 due to md5sum to sha512sum change
|
||||
CALL `cloud`.`IDEMPOTENT_CHANGE_COLUMN`('cloud.domain_router', 'scripts_version', 'scripts_version', 'VARCHAR(128)');
|
||||
|
|
@ -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";
|
||||
|
|
|
|||
|
|
@ -94,5 +94,5 @@ PARENTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )/dist/systemvm-
|
|||
mkdir -p $PARENTPATH
|
||||
METADATAFILE=${PARENTPATH}"metadata.ini"
|
||||
echo > $METADATAFILE
|
||||
SOURCEFILE=${PARENTPATH}'md5sum.txt'
|
||||
SOURCEFILE=${PARENTPATH}'sha512sum.txt'
|
||||
createMetadataFile
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -317,7 +317,7 @@ install -D plugins/integrations/kubernetes-service/src/main/resources/conf/k8s-n
|
|||
# SystemVM template
|
||||
mkdir -p ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/templates/systemvm
|
||||
cp -r engine/schema/dist/systemvm-templates/* ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/templates/systemvm
|
||||
rm -rf ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/templates/systemvm/md5sum.txt
|
||||
rm -rf ${RPM_BUILD_ROOT}%{_datadir}/%{name}-management/templates/systemvm/sha512sum.txt
|
||||
|
||||
# Sample Extensions
|
||||
mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/%{name}/extensions
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -191,7 +191,7 @@ public class DummyBackupProvider extends AdapterBase implements BackupProvider {
|
|||
|
||||
@Override
|
||||
public Pair<Long, Long> getBackupStorageStats(Long zoneId) {
|
||||
return new Pair<>(8L * 1024 * 1024 * 1024, 10L * 1024 * 1024 * 1024);
|
||||
return new Pair<>(0L, 0L);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue