Skip to content

Commit 1ca7e01

Browse files
committed
Merge remote-tracking branch 'apache/main' into configurable-repetitive-alerts
2 parents 195e4e5 + a60c8ca commit 1ca7e01

File tree

203 files changed

+12355
-2449
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

203 files changed

+12355
-2449
lines changed

agent/conf/agent.properties

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -447,3 +447,6 @@ iscsi.session.cleanup.enabled=false
447447

448448
# Timeout (in seconds) to wait for the incremental snapshot to complete.
449449
# incremental.snapshot.timeout=10800
450+
451+
# If set to true, creates VMs as full clones of their templates on KVM hypervisor. Creates as linked clones otherwise.
452+
# create.full.clone=false

agent/src/main/java/com/cloud/agent/Agent.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -968,9 +968,11 @@ private Answer migrateAgentToOtherMS(final MigrateAgentConnectionCommand cmd) {
968968
if (CollectionUtils.isNotEmpty(cmd.getMsList())) {
969969
processManagementServerList(cmd.getMsList(), cmd.getAvoidMsList(), cmd.getLbAlgorithm(), cmd.getLbCheckInterval(), false);
970970
}
971-
Executors.newSingleThreadScheduledExecutor(new NamedThreadFactory("MigrateAgentConnection-Job")).schedule(() -> {
971+
ScheduledExecutorService migrateAgentConnectionService = Executors.newSingleThreadScheduledExecutor(new NamedThreadFactory("MigrateAgentConnection-Job"));
972+
migrateAgentConnectionService.schedule(() -> {
972973
migrateAgentConnection(cmd.getAvoidMsList());
973974
}, 3, TimeUnit.SECONDS);
975+
migrateAgentConnectionService.shutdown();
974976
} catch (Exception e) {
975977
String errMsg = "Migrate agent connection failed, due to " + e.getMessage();
976978
logger.debug(errMsg, e);

agent/src/main/java/com/cloud/agent/properties/AgentProperties.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -863,6 +863,14 @@ public Property<Integer> getWorkers() {
863863
* */
864864
public static final Property<Integer> REVERT_SNAPSHOT_TIMEOUT = new Property<>("revert.snapshot.timeout", 10800);
865865

866+
/**
867+
* If set to true, creates VMs as full clones of their templates on KVM hypervisor. Creates as linked clones otherwise. <br>
868+
* Data type: Boolean. <br>
869+
* Default value: <code>false</code>
870+
*/
871+
public static final Property<Boolean> CREATE_FULL_CLONE = new Property<>("create.full.clone", false);
872+
873+
866874
public static class Property <T>{
867875
private String name;
868876
private T defaultValue;

api/src/main/java/com/cloud/capacity/Capacity.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,17 @@ public interface Capacity extends InternalIdentity, Identity {
3434
public static final short CAPACITY_TYPE_LOCAL_STORAGE = 9;
3535
public static final short CAPACITY_TYPE_VIRTUAL_NETWORK_IPV6_SUBNET = 10;
3636
public static final short CAPACITY_TYPE_GPU = 19;
37+
public static final short CAPACITY_TYPE_OBJECT_STORAGE = 20;
38+
public static final short CAPACITY_TYPE_BACKUP_STORAGE = 21;
3739

3840
public static final short CAPACITY_TYPE_CPU_CORE = 90;
3941

4042
public static final List<Short> STORAGE_CAPACITY_TYPES = List.of(CAPACITY_TYPE_STORAGE,
4143
CAPACITY_TYPE_STORAGE_ALLOCATED,
4244
CAPACITY_TYPE_SECONDARY_STORAGE,
43-
CAPACITY_TYPE_LOCAL_STORAGE);
45+
CAPACITY_TYPE_LOCAL_STORAGE,
46+
CAPACITY_TYPE_BACKUP_STORAGE,
47+
CAPACITY_TYPE_OBJECT_STORAGE);
4448

4549
public Long getHostOrPoolId();
4650

api/src/main/java/com/cloud/event/EventTypes.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -632,11 +632,13 @@ public class EventTypes {
632632
public static final String EVENT_VM_BACKUP_CREATE = "BACKUP.CREATE";
633633
public static final String EVENT_VM_BACKUP_RESTORE = "BACKUP.RESTORE";
634634
public static final String EVENT_VM_BACKUP_DELETE = "BACKUP.DELETE";
635+
public static final String EVENT_VM_BACKUP_OFFERING_REMOVED_AND_BACKUPS_DELETED = "BACKUP.OFFERING.BACKUPS.DEL";
635636
public static final String EVENT_VM_BACKUP_RESTORE_VOLUME_TO_VM = "BACKUP.RESTORE.VOLUME.TO.VM";
636637
public static final String EVENT_VM_BACKUP_SCHEDULE_CONFIGURE = "BACKUP.SCHEDULE.CONFIGURE";
637638
public static final String EVENT_VM_BACKUP_SCHEDULE_DELETE = "BACKUP.SCHEDULE.DELETE";
638639
public static final String EVENT_VM_BACKUP_USAGE_METRIC = "BACKUP.USAGE.METRIC";
639640
public static final String EVENT_VM_BACKUP_EDIT = "BACKUP.OFFERING.EDIT";
641+
public static final String EVENT_VM_CREATE_FROM_BACKUP = "VM.CREATE.FROM.BACKUP";
640642

641643
// external network device events
642644
public static final String EVENT_EXTERNAL_NVP_CONTROLLER_ADD = "PHYSICAL.NVPCONTROLLER.ADD";

api/src/main/java/com/cloud/network/NetworkService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,5 +272,7 @@ Network createPrivateNetwork(String networkName, String displayText, long physic
272272

273273
boolean handleCksIsoOnNetworkVirtualRouter(Long virtualRouterId, boolean mount) throws ResourceUnavailableException;
274274

275+
IpAddresses getIpAddressesFromIps(String ipAddress, String ip6Address, String macAddress);
276+
275277
String getNicVlanValueForExternalVm(NicTO nic);
276278
}

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,13 @@ public DiskOfferingInfo(DiskOffering diskOffering) {
3131
_diskOffering = diskOffering;
3232
}
3333

34+
public DiskOfferingInfo(DiskOffering diskOffering, Long size, Long minIops, Long maxIops) {
35+
_diskOffering = diskOffering;
36+
_size = size;
37+
_minIops = minIops;
38+
_maxIops = maxIops;
39+
}
40+
3441
public void setDiskOffering(DiskOffering diskOffering) {
3542
_diskOffering = diskOffering;
3643
}

api/src/main/java/com/cloud/storage/StorageService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ public interface StorageService {
134134

135135
void removeSecondaryStorageHeuristic(RemoveSecondaryStorageSelectorCmd cmd);
136136

137-
ObjectStore discoverObjectStore(String name, String url, String providerName, Map details) throws IllegalArgumentException, DiscoveryException, InvalidParameterValueException;
137+
ObjectStore discoverObjectStore(String name, String url, Long size, String providerName, Map details) throws IllegalArgumentException, DiscoveryException, InvalidParameterValueException;
138138

139139
boolean deleteObjectStore(DeleteObjectStoragePoolCmd cmd);
140140

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

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.apache.cloudstack.api.command.admin.vm.AssignVMCmd;
2828
import org.apache.cloudstack.api.command.admin.vm.RecoverVMCmd;
2929
import org.apache.cloudstack.api.command.user.vm.AddNicToVMCmd;
30+
import org.apache.cloudstack.api.command.user.vm.CreateVMFromBackupCmd;
3031
import org.apache.cloudstack.api.command.user.vm.DeployVMCmd;
3132
import org.apache.cloudstack.api.command.user.vm.DestroyVMCmd;
3233
import org.apache.cloudstack.api.command.user.vm.RebootVMCmd;
@@ -220,7 +221,7 @@ void startVirtualMachineForHA(VirtualMachine vm, Map<VirtualMachineProfile.Param
220221
* available.
221222
*/
222223
UserVm createBasicSecurityGroupVirtualMachine(DataCenter zone, ServiceOffering serviceOffering, VirtualMachineTemplate template, List<Long> securityGroupIdList,
223-
Account owner, String hostName, String displayName, Long diskOfferingId, Long diskSize, String group, HypervisorType hypervisor, HTTPMethod httpmethod,
224+
Account owner, String hostName, String displayName, Long diskOfferingId, Long diskSize, List<VmDiskInfo> dataDiskInfoList, String group, HypervisorType hypervisor, HTTPMethod httpmethod,
224225
String userData, Long userDataId, String userDataDetails, List<String> sshKeyPairs, Map<Long, IpAddresses> requestedIps, IpAddresses defaultIp, Boolean displayVm, String keyboard,
225226
List<Long> affinityGroupIdList, Map<String, String> customParameter, String customId, Map<String, Map<Integer, String>> dhcpOptionMap,
226227
Map<Long, DiskOffering> dataDiskTemplateToDiskOfferingMap,
@@ -297,7 +298,7 @@ UserVm createBasicSecurityGroupVirtualMachine(DataCenter zone, ServiceOffering s
297298
* available.
298299
*/
299300
UserVm createAdvancedSecurityGroupVirtualMachine(DataCenter zone, ServiceOffering serviceOffering, VirtualMachineTemplate template, List<Long> networkIdList,
300-
List<Long> securityGroupIdList, Account owner, String hostName, String displayName, Long diskOfferingId, Long diskSize, String group, HypervisorType hypervisor,
301+
List<Long> securityGroupIdList, Account owner, String hostName, String displayName, Long diskOfferingId, Long diskSize, List<VmDiskInfo> dataDiskInfoList, String group, HypervisorType hypervisor,
301302
HTTPMethod httpmethod, String userData, Long userDataId, String userDataDetails, List<String> sshKeyPairs, Map<Long, IpAddresses> requestedIps, IpAddresses defaultIps, Boolean displayVm, String keyboard,
302303
List<Long> affinityGroupIdList, Map<String, String> customParameters, String customId, Map<String, Map<Integer, String>> dhcpOptionMap,
303304
Map<Long, DiskOffering> dataDiskTemplateToDiskOfferingMap, Map<String, String> userVmOVFProperties, boolean dynamicScalingEnabled, Long overrideDiskOfferingId, String vmType, Volume volume, Snapshot snapshot) throws InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException, StorageUnavailableException, ResourceAllocationException;
@@ -369,7 +370,7 @@ UserVm createAdvancedSecurityGroupVirtualMachine(DataCenter zone, ServiceOfferin
369370
* available.
370371
*/
371372
UserVm createAdvancedVirtualMachine(DataCenter zone, ServiceOffering serviceOffering, VirtualMachineTemplate template, List<Long> networkIdList, Account owner,
372-
String hostName, String displayName, Long diskOfferingId, Long diskSize, String group, HypervisorType hypervisor, HTTPMethod httpmethod, String userData,
373+
String hostName, String displayName, Long diskOfferingId, Long diskSize, List<VmDiskInfo> dataDiskInfoList, String group, HypervisorType hypervisor, HTTPMethod httpmethod, String userData,
373374
Long userDataId, String userDataDetails, List<String> sshKeyPairs, Map<Long, IpAddresses> requestedIps, IpAddresses defaultIps, Boolean displayVm, String keyboard, List<Long> affinityGroupIdList,
374375
Map<String, String> customParameters, String customId, Map<String, Map<Integer, String>> dhcpOptionMap, Map<Long, DiskOffering> dataDiskTemplateToDiskOfferingMap,
375376
Map<String, String> templateOvfPropertiesMap, boolean dynamicScalingEnabled, String vmType, Long overrideDiskOfferingId, Volume volume, Snapshot snapshot)
@@ -516,4 +517,8 @@ UserVm importVM(final DataCenter zone, final Host host, final VirtualMachineTemp
516517
* @return true if the VM is successfully unmanaged, false if not.
517518
*/
518519
boolean unmanageUserVM(Long vmId);
520+
521+
UserVm allocateVMFromBackup(CreateVMFromBackupCmd cmd) throws InsufficientCapacityException, ResourceAllocationException, ResourceUnavailableException;
522+
523+
UserVm restoreVMFromBackup(CreateVMFromBackupCmd cmd) throws ResourceUnavailableException, InsufficientCapacityException, ResourceAllocationException;
519524
}

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,6 @@ public static StateMachine2<State, VirtualMachine.Event, VirtualMachine> getStat
128128
s_fsm.addTransition(new Transition<State, Event>(State.Error, VirtualMachine.Event.DestroyRequested, State.Expunging, null));
129129
s_fsm.addTransition(new Transition<State, Event>(State.Error, VirtualMachine.Event.ExpungeOperation, State.Expunging, null));
130130
s_fsm.addTransition(new Transition<State, Event>(State.Stopped, Event.RestoringRequested, State.Restoring, null));
131-
s_fsm.addTransition(new Transition<State, Event>(State.Expunging, Event.RestoringRequested, State.Restoring, null));
132131
s_fsm.addTransition(new Transition<State, Event>(State.Destroyed, Event.RestoringRequested, State.Restoring, null));
133132
s_fsm.addTransition(new Transition<State, Event>(State.Restoring, Event.RestoringSuccess, State.Stopped, null));
134133
s_fsm.addTransition(new Transition<State, Event>(State.Restoring, Event.RestoringFailed, State.Stopped, null));

0 commit comments

Comments
 (0)