Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
216 commits
Select commit Hold shift + click to select a range
b869913
noVNC: support Spanish Latin American keyboard on VMware (#12484)
weizhouapache Feb 2, 2026
ce42ce5
Fix template details deletion while updating template from UI (#12559)
sureshanaparti Feb 3, 2026
9ae696d
Preserve VM settings on Instance Snapshot revert for Custom Service O…
abh1sar Feb 3, 2026
349eea5
Mvn updates (#12575)
DaanHoogland Feb 5, 2026
e32d08e
Create new generic method for resource UUID obtention in event's desc…
erikbocks Feb 5, 2026
3d7d412
UI: Add comprehensive domain deletion confirmation dialog (Feature Re…
Imvedansh Feb 5, 2026
cd6a8f6
Merge branch '4.20' into 4.22
Feb 5, 2026
53c98c3
ui build fixes (after merge)
sureshanaparti Feb 5, 2026
e929f20
Merge branch '4.22'
Feb 5, 2026
408e8c0
Merge branch '4.22'
sureshanaparti Feb 5, 2026
a0f35a1
Fixes issue with loading Capacity dashboard when mulitple backup prov…
Pearl1594 Feb 9, 2026
7324ef4
Merge branch '4.20' into 4.22
Feb 9, 2026
d3e1976
Merge release branch 4.22 to main
Feb 9, 2026
b45726f
ssvm: delete temp directory while deleting entity download url (#12562)
shwstppr Feb 11, 2026
4de8c2b
Add a Prometheus metric to track host certificate expiry (#12613)
nvazquez Feb 11, 2026
b7c970f
Fix issue with multiple KVM Host entries in host table (#12589)
nvazquez Feb 11, 2026
34f6f41
Fix injection of preset variables into the JS interpreter (#12515)
winterhazel Feb 11, 2026
b1edfb8
Remove and Update collaborators list in .asf.yaml (#12627)
DaanHoogland Feb 12, 2026
18d6659
engine/schema: fix cluster/zone settings with encrypted values (#12626)
weizhouapache Feb 12, 2026
e22f842
Allow limit queries without random ordering (#12598)
sureshanaparti Feb 13, 2026
d8230c9
Usage: Heartbeat should not schedule usage job when a job is already …
abh1sar Feb 13, 2026
ae5308b
Fix issue when restoring backup after migration of volume (#12549)
Pearl1594 Feb 13, 2026
c79b33c
Allow enforcing password change for a user after reset by admin (root…
sudo87 Feb 16, 2026
11df71e
Merge branch '4.20' into '4.22'
Feb 17, 2026
a7dc5ef
Merge release branch 4.22 to main
Feb 17, 2026
22cda0c
constructing the expiry Prometheus Item according to new format (#12653)
DaanHoogland Feb 17, 2026
62eb4b7
Remove acs-robot from collaborators list
DaanHoogland Feb 17, 2026
a1bcae9
Agentic workflow experiment (#12652)
DaanHoogland Feb 17, 2026
c0db75b
agentic workflow daily report
Feb 18, 2026
8c12a13
Fix NPE during reset password (#12585)
sureshanaparti Feb 18, 2026
9dd93ce
Support for custom SSH port for KVM hosts from the host url on add ho…
sureshanaparti Feb 18, 2026
8b38cea
Fix NPE while stopping the RabbitMQEventBus bean when there is no con…
sureshanaparti Feb 18, 2026
32c0cdb
Add volumes in 'Expunging' state to storage cleanup thread and during…
sureshanaparti Feb 18, 2026
5caf6cd
Merge branch '4.20' into 4.22
sureshanaparti Feb 19, 2026
30e6c22
Merge branch '4.22'
sureshanaparti Feb 19, 2026
37e3657
[22.0] resource allocation
GutoVeronezi Feb 20, 2026
003c840
[22.0] resource instance limits
GutoVeronezi Feb 20, 2026
8d269cf
[22.0] Implement/fix limit validation for projects
GutoVeronezi Feb 20, 2026
831ef82
[22.0] resource allocation vpc
GutoVeronezi Feb 20, 2026
1f849ca
[22.0] resource reservation on volume creation
GutoVeronezi Feb 20, 2026
46a6bba
Fix: KVM Direct Download URL injection (#60)
DaanHoogland Feb 9, 2026
7703fda
[minio] Handle user's canned policy when a bucket is deleted
abh1sar Dec 2, 2025
3d678e7
[22.0] resource reservation on volume snapshot creation
GutoVeronezi Feb 18, 2026
d11d182
[22.0] Fix resource limit reservation and check during StartVirtualMa…
GutoVeronezi Feb 20, 2026
95816b4
extensions: allow reserved resource details
shwstppr Jan 15, 2026
87c8e74
Fix github action workflow (#12675)
Pearl1594 Feb 23, 2026
da7ac80
prevent user.uuid from being regenerated on each operation by reading…
DaanHoogland Feb 23, 2026
d054344
Changes to the error message displayed during the removal of public t…
erikbocks Feb 23, 2026
cf71938
[UI] Allow change password for native users only. (#12584)
sureshanaparti Feb 23, 2026
c748b69
Fix NPE during public IP listing when a removed network or VPC ID is …
erikbocks Feb 23, 2026
744c8af
fix primary storage maintenance on xcpng (#12694)
abh1sar Feb 25, 2026
17ec4fc
UI: Fix duplicate quickview (for provider column) in backup repositor…
sureshanaparti Feb 26, 2026
b74f21b
Merge branch '4.20' into 4.22
sureshanaparti Feb 26, 2026
a8bd02f
Merge branch '4.22'
sureshanaparti Feb 26, 2026
da85858
unit test fix (after merge)
sureshanaparti Feb 26, 2026
6419e1c
[VMware to KVM Migration] Fix unused convert env vars (#11947)
nvazquez Feb 26, 2026
9e386a3
PowerFlex/ScaleIO client initialization, authentication and command e…
sureshanaparti Feb 26, 2026
56dc119
test_accounts.py failure fix - keep the camelCase parameter "domainId…
sureshanaparti Feb 27, 2026
6516f7f
Fix query execution in countVgpuVMs (#12713)
vishesh92 Feb 27, 2026
608345d
Update collaborators list in .asf.yaml
DaanHoogland Mar 2, 2026
9cc6c09
Remove broken ViserJS attribution link from UI README (#12724)
amizurov Mar 3, 2026
65e5409
Merge branch '4.20' into 4.22
sureshanaparti Mar 4, 2026
7562030
Merge branch '4.22'
sureshanaparti Mar 4, 2026
7ad68aa
Enable defining a network as redundant during restart through the UI …
GaOrtiga Mar 4, 2026
120a436
set width of dropdown select items for Network Offering during add ti…
DaanHoogland Mar 5, 2026
58916eb
Use lateral join (introduced in MySQL 8.0.14) with subquery on user_s…
sureshanaparti Mar 5, 2026
c3d6a8c
server: fix templatetype during iso upload (#12151)
shwstppr Mar 9, 2026
9bbd32a
Add DaanHoogland to the list of contributors
DaanHoogland Mar 9, 2026
74af9b9
API key pair restructure (#9504)
KlausDornsbach Mar 9, 2026
db83622
ui: fix create network from global create menu (#12677)
shwstppr Mar 9, 2026
7aa0558
ui: avoid 404 after deleting template zones (#12681)
dheeraj12347 Mar 9, 2026
d8f748a
Update .asf.yaml
DaanHoogland Mar 10, 2026
faaf766
Update isolation methods description for physical network (#12759)
daviftorres Mar 10, 2026
71daf84
Show security group selection in Basic zone VM deployment and fix SG …
Damans227 Mar 12, 2026
7f7d0b0
Remove unnecessary stubbings in ManagementServerMaintenanceManagerImp…
shwstppr Mar 12, 2026
2359061
api: remove required flag of gatewayid in CreateStaticRouteCmd (#12786)
weizhouapache Mar 12, 2026
27bce46
Clear System VM IP from NICs for PublicNetworkGuru (#11992)
Pearl1594 Mar 12, 2026
3b42fbf
Fixing CI failures (#12789)
vishesh92 Mar 13, 2026
4855d40
[22.0] secondary storage resource limit for download
abh1sar Mar 2, 2026
5d5ee7b
volume download fix
abh1sar Mar 6, 2026
d722415
[22.0] secondary storage resource limit for upload
abh1sar Mar 9, 2026
07c3dc8
[22.0] Consider infinite resources when calculating secondary storage…
winterhazel Mar 9, 2026
f7f0e75
Fixed a merge issue in ImageStoreUploadMonitorImpl
abh1sar Mar 13, 2026
8c57953
CKS: Allow affinity group selection during cluster creation (#12386)
Damans227 Mar 13, 2026
7048944
[Fix] VMware to KVM migration instances listing failure (#12766)
nvazquez Mar 13, 2026
09ee092
[4.22] Prevent Load Balancer rule creation when adding a VM from a di…
nvazquez Mar 16, 2026
93239e0
Add conserve mode for VPC offerings (#12487)
nvazquez Mar 16, 2026
89df318
[20.3] resource allocation
DaanHoogland Feb 20, 2026
4dd91fe
[20.3] resource instance limits
DaanHoogland Feb 20, 2026
1593944
[20.3] Implement/fix limit validation for projects
DaanHoogland Feb 20, 2026
7faa1b6
[20.3] resource allocation vpc
DaanHoogland Feb 20, 2026
b025e85
Check resource reservation on volume creation
DaanHoogland Feb 20, 2026
0edd577
Fix: KVM Direct Download URL injection
DaanHoogland Feb 20, 2026
3b987f2
[20.3] handle user's canned policy when a bucket is deleted
DaanHoogland Feb 20, 2026
e0ef3a6
Check resource reservation on volume snapshot creation
DaanHoogland Feb 20, 2026
06ee2fe
Implement/fix limit validation for secondary storage
GutoVeronezi Feb 22, 2026
4bcd509
Fix resource limit reservation and check during StartVirtualMachine
abh1sar Feb 20, 2026
03dfe4d
secondary storage resource limit for download
abh1sar Mar 2, 2026
d0f6730
volume download fix
abh1sar Mar 6, 2026
81a8ac8
secondary storage resource limit for upload
abh1sar Mar 9, 2026
360b64c
Consider infinite resources when calculating secondary storage limit …
winterhazel Mar 9, 2026
0a4b4c6
[20.3] Address limit checks for VM, CPU, memory, volume, and primary …
winterhazel Mar 6, 2026
4972662
Cleanup imported VM from disk on failure due to volume allocation + p…
winterhazel Mar 8, 2026
e8f8aca
Fix failing tests
winterhazel Mar 8, 2026
dc7068a
Address public IP limit validations
winterhazel Mar 10, 2026
23b19a9
review comments
abh1sar Mar 13, 2026
61afb4c
fix identation
abh1sar Mar 13, 2026
3bd5410
Add support to clone existing offerings and update them (#12357)
Pearl1594 Mar 17, 2026
b744824
Add code owners for nsx network elements plugin (#12838)
DaanHoogland Mar 17, 2026
9c0c8da
[22.0] Address limit checks for VM, CPU, memory, volume, and primary …
winterhazel Mar 6, 2026
e93ae1a
New config key "allow.import.volume.with.backing.file" to skip volume…
sudo87 Mar 17, 2026
88a12a8
Cleanup imported VM from disk on failure due to volume allocation + p…
winterhazel Mar 8, 2026
c6b20b8
Fix failing tests
winterhazel Mar 8, 2026
9db6309
Address public IP limit validations
winterhazel Mar 10, 2026
8ce1c98
fix restore volume from backup and attach
Nov 26, 2025
24fd440
Fix create VM from backup
Nov 26, 2025
86c9f7b
Fix backup list
Nov 25, 2025
e8d57d1
Implement/fix limit validation for secondary storage
GutoVeronezi Feb 22, 2026
f333134
Address merge issues
winterhazel Mar 17, 2026
8608b4e
Fix snapshot copy resource limit concurrency
winterhazel Mar 18, 2026
7cdcf57
Fix xcpng test failures (#12812)
vishesh92 Mar 19, 2026
b497f58
Fix K8s scaling and deletion issue if firewall rule is for ALL ports …
Pearl1594 Mar 19, 2026
c19630f
Fix snapshot copy resource limit concurrency
abh1sar Mar 17, 2026
bce5594
Mark VMs in error state when expunge fails during destroy operation (…
sureshanaparti Mar 24, 2026
7107d28
[VMware to KVM] Add guest OS for importing VM based on the source VM …
nvazquez Mar 24, 2026
7c3637a
Fix duplicate dummy templates, and update guest os for dummy template…
sureshanaparti Mar 24, 2026
d6c3977
Set management server id from cookies after saml login (#12858)
sureshanaparti Mar 25, 2026
4b7370a
upgrade: skip the upgrade paths which are not needed (#12881)
weizhouapache Mar 26, 2026
84676af
Check for null host before proceeding with VM volume operations in ma…
sureshanaparti Mar 26, 2026
c1af36f
[4.22] Prevent unmanaging or reinstalling a VM if it is part of a CKS…
nvazquez Mar 26, 2026
1bff543
Merge branch '4.22'
sureshanaparti Mar 26, 2026
b22dbbe
Fix Revert Instance to Snapshot with custom service offering (#12885)
abh1sar Mar 27, 2026
2416db2
Fix NPE on external/unmanaged instance import using custom offerings …
winterhazel Mar 27, 2026
d38c1f8
Fix error message while creating local storage pool (#12767)
vishesh92 Mar 27, 2026
131ea9f
Fix PowerFlex 4.x issues with take & revert instance snapshots (#12880)
owsferraro Mar 27, 2026
6ca6aa1
Fix NPE in NASBackupProvider when no running KVM host is available (#…
jmsperu Mar 27, 2026
68030df
VM start error handling improvements and config to expose error to us…
sureshanaparti Mar 27, 2026
71bd26f
PowerFlex/ScaleIO storage - the MDMs validation improvements (#12893)
sureshanaparti Mar 27, 2026
4ebe334
add user-agent header to template downloader request (#12791)
sudo87 Mar 30, 2026
59b6c32
[UI] Fix create backup notification (#12903)
sureshanaparti Mar 30, 2026
6bcbb00
Bump `actions/checkout` to `v6` (#12164)
jbampton Mar 30, 2026
cf9bda2
[CI] Add github-actions ecosystem to Dependabot (#12823)
jbampton Mar 30, 2026
18075ae
Add support for Headlamp dashboard for kubernetes; deprecate legacy k…
Pearl1594 Mar 30, 2026
7eea9ed
Add API to enable/disable NICs for KVM (#12819)
hsato03 Mar 31, 2026
5d95bdd
pre-commit trailing whitespace auto clean up (#12841)
jbampton Mar 31, 2026
5d61ba3
[CI] Create `.codespellrc`; upgrade codespell hook; fix typos (#12824)
jbampton Mar 31, 2026
4f93ba8
Refactor Quota Summary API (#10505)
julien-vaz Mar 31, 2026
e2497cf
backport: default system vm template update implementation (#12935)
shwstppr Apr 1, 2026
b805766
Fix Host setup when persistent networks exist (#12751)
Pearl1594 Apr 1, 2026
e10c066
Fix NPE during VM setup for pvlan (#12781)
sureshanaparti Apr 1, 2026
4708121
server: set template type to ROUTING or USER if template type is not …
weizhouapache Apr 2, 2026
e2d18c0
Merge branch '4.22'
sureshanaparti Apr 2, 2026
6f1aa96
engine/schema: fix new systemvm template is not registered during upg…
weizhouapache Apr 6, 2026
c859904
Updating pom.xml version numbers for release 4.20.3.0
abh1sar Apr 6, 2026
30dd234
fix: NsxResource.executeRequest DeleteNsxNatRuleCommand comparison bu…
ZhyliaievD Apr 6, 2026
abdf926
Revert "Use lateral join (introduced in MySQL 8.0.14) with subquery o…
sureshanaparti Apr 8, 2026
03de62b
Support Linstor Primary Storage for NAS BnR (#12796)
abh1sar Apr 8, 2026
c361409
Merge branch '4.22'
sureshanaparti Apr 8, 2026
7ba5240
Block backup deletion while create-VM-from-backup or restore jobs are…
Damans227 Apr 9, 2026
1ff9eec
Load arch data for backup from template during create instance from b…
sudo87 Apr 9, 2026
b585802
Fix listing service offerings with different host tags (#12919)
nvazquez Apr 9, 2026
b0b3dc9
fix: support SharedMountPoint volume checks for importVm (#12946)
prashanthr2 Apr 9, 2026
b1bc538
fix: support SharedMountPoint for KVM volume import and unmanage (#12…
prashanthr2 Apr 9, 2026
416679f
Fix domain parsing for GPU & add Display controller in the supported …
vishesh92 Apr 10, 2026
4ba4bd3
replace GROUP_CONCAT with JSON_ARRAYAGG to avoid errors like Row 19 w…
abh1sar Apr 10, 2026
68bd056
Support timeout configuration for Create and Restore NAS backup (#12964)
abh1sar Apr 10, 2026
7b46749
Do not include snapshots with Group type in snapshots resource count …
sureshanaparti Apr 10, 2026
2a60305
Fix snapshot chaining on Xen (#12597)
JoaoJandre Apr 10, 2026
11538df
Merge branch '4.22'
sureshanaparti Apr 10, 2026
e297644
KVM: Enable HA heartbeat on ShareMountPoint (#12773)
weizhouapache Apr 10, 2026
80ee7f1
Fix six package incompatiblity with EL10 (#12799)
vishesh92 Apr 10, 2026
27e4d97
Clean up backup references to their schedules when the schedules are …
bernardodemarco Apr 10, 2026
8f3c6fa
set snapcpg config on copy (#12955)
poddm Apr 10, 2026
273699c
kvm: fix wrong CheckVirtualMachineAnswer when vm does not exist (#12928)
weizhouapache Apr 10, 2026
df7ff97
Create volume on a specified storage pool (#12966)
abh1sar Apr 10, 2026
b196e97
Prevent deletion of account and domain if either of them has deleted …
sudo87 Apr 10, 2026
7c7b2ae
Fix KVM incremental volume snapshot creation (#12666)
JoaoJandre Apr 10, 2026
9f57a4d
Unhide setting `js.interpretation.enabled` (#12605)
winterhazel Apr 11, 2026
19b4ef1
server: reserve backup, bucket resource limits during operations
shwstppr Feb 26, 2026
d6f4fc3
Updating pom.xml version numbers for release 22.0.1
Apr 13, 2026
8eb162c
Updating pom.xml version numbers for release 4.20.4.0-SNAPSHOT
abh1sar Apr 13, 2026
5b696c0
Create, Delete, Enable, Disable, Enter, Cancel maintenance of Primary…
sandeeplocharla Apr 13, 2026
47c5bb8
Support list/query async jobs by resource (#12983)
sureshanaparti Apr 13, 2026
ae455ee
VPC restart cleanup for Public networks with multi-CIDR data (#12622)
jeanvetorello Apr 13, 2026
ed575cc
New config.json variable to set the ACS default language (#12863)
hsato03 Apr 13, 2026
161b417
Add logs for storage pools reordering (#10419)
julien-vaz Apr 14, 2026
feb6076
Remove unused config consoleproxy.cmd.port (#12807)
sureshanaparti Apr 14, 2026
38abe2d
Allow list async jobs by resource type alone (#13011)
sureshanaparti Apr 14, 2026
d75acb6
Fix rollback disk snapshots on instance snapshot failure (#12949)
sureshanaparti Apr 14, 2026
1085da4
Merge commit '19b4ef106931aa1d6a8fed06984009d86760e4de' into 4.22
Apr 14, 2026
23f633a
Merge tag '4.22.0.1' into 4.22
Apr 14, 2026
82bfa9f
Merge branch '4.22'
Apr 14, 2026
0c86899
Added VDDK support in VMware to KVM migrations (#12970)
harikrishna-patnala Apr 14, 2026
5013cf2
Fix user password reset mail template value (#12882)
erikbocks Apr 15, 2026
160876c
Fix: API Thread held forever during force deleting across MS (#12968)
nvazquez Apr 15, 2026
13842a6
Address reviews
winterhazel Mar 17, 2026
2511fdf
Implement limit validations on updateBucket
winterhazel Mar 17, 2026
c298f8f
Merge release branch 4.22.0.1 to 4.22
Apr 15, 2026
f5e7577
merge forwards fix
Apr 15, 2026
c693688
server: prevent adding vm compute details when not applicable (#12637)
shwstppr Apr 15, 2026
1fc4cb9
Routed VR: accept packets from related and established connections (#…
weizhouapache Apr 15, 2026
05c5963
fix: LB Creation avoid 404 API errors due to non-needed patches (#12835)
ZhyliaievD Apr 16, 2026
e0fe953
fix: NSX SDK list operations are pageable: the API returns a non-null…
ZhyliaievD Apr 16, 2026
6e81098
HAProxy Configuration: network.loadbalancer.haproxy.idle.timeout (#12…
bradh352 Apr 16, 2026
83f705d
Static Routes with nexthop non-functional for private gateways (#12859)
bhouse-nexthop Apr 16, 2026
13a2c77
Merge branch '4.20' into 4.22
sureshanaparti Apr 16, 2026
2d6280b
Merge branch '4.22'
sureshanaparti Apr 16, 2026
f820d01
fix end of files and codespell errors
weizhouapache Apr 17, 2026
3166e64
Add support for new variables to the GUI whitelabel runtime system (#…
hsato03 Apr 17, 2026
b58fd24
Merge branch 'main' of github.com:netapp/cloudstack into sync/apache-…
rajiv-jain-netapp Apr 20, 2026
0f5370a
Resolving conflicts from rebase
rajiv-jain-netapp Apr 20, 2026
ddb119f
conflicts are resolvd which are originated from rebase
rajiv-jain-netapp Apr 20, 2026
929d30f
Correction on conflict resolution
rajiv-jain-netapp Apr 21, 2026
a20b6cc
Correction on merge conflicts for constants
rajiv-jain-netapp Apr 21, 2026
66f0151
Merge branch 'main' of https://github.com/apache/cloudstack into sync…
Apr 21, 2026
27502b5
Merge remote-tracking branch 'origin/main' into sync/apache-main-proper
Apr 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions agent/conf/agent.properties
Original file line number Diff line number Diff line change
Expand Up @@ -457,3 +457,18 @@ iscsi.session.cleanup.enabled=false

# Instance conversion VIRT_V2V_TMPDIR env var
#convert.instance.env.virtv2v.tmpdir=

# Time, in seconds, to wait before retrying to rebase during the incremental snapshot process.
# incremental.snapshot.retry.rebase.wait=60

# Path to the VDDK library directory for VMware to KVM conversion via VDDK,
# passed to virt-v2v as -io vddk-libdir=<path>
#vddk.lib.dir=

# Ordered VDDK transport preference for VMware to KVM conversion via VDDK, passed as
# -io vddk-transports=<value> to virt-v2v. Example: nbd:nbdssl
#vddk.transports=

# Optional vCenter SHA1 thumbprint for VMware to KVM conversion via VDDK, passed as
# -io vddk-thumbprint=<value>. If unset, CloudStack computes it on the KVM host via openssl.
#vddk.thumbprint=
Original file line number Diff line number Diff line change
Expand Up @@ -808,6 +808,30 @@ public Property<Integer> getWorkers() {
*/
public static final Property<String> CONVERT_ENV_VIRTV2V_TMPDIR = new Property<>("convert.instance.env.virtv2v.tmpdir", null, String.class);

/**
* Path to the VDDK library directory on the KVM conversion host, used when converting VMs from VMware to KVM via VDDK.
* This directory is passed to virt-v2v as <code>-io vddk-libdir=&lt;path&gt;</code>.
* Data type: String.<br>
* Default value: <code>null</code>
*/
public static final Property<String> VDDK_LIB_DIR = new Property<>("vddk.lib.dir", null, String.class);

/**
* Ordered list of VDDK transports for virt-v2v, passed as <code>-io vddk-transports=&lt;value&gt;</code>.
* Example: <code>nbd:nbdssl</code>.
* Data type: String.<br>
* Default value: <code>null</code>
*/
public static final Property<String> VDDK_TRANSPORTS = new Property<>("vddk.transports", null, String.class);

/**
* vCenter TLS certificate thumbprint used by virt-v2v VDDK mode, passed as <code>-io vddk-thumbprint=&lt;value&gt;</code>.
* If unset, the KVM host computes it at runtime from the vCenter endpoint.
* Data type: String.<br>
* Default value: <code>null</code>
*/
public static final Property<String> VDDK_THUMBPRINT = new Property<>("vddk.thumbprint", null, String.class);

/**
* BGP controll CIDR
* Data type: String.<br>
Expand Down Expand Up @@ -885,6 +909,11 @@ public Property<Integer> getWorkers() {
*/
public static final Property<Boolean> CREATE_FULL_CLONE = new Property<>("create.full.clone", false);

/**
* Time, in seconds, to wait before retrying to rebase during the incremental snapshot process.
* */
public static final Property<Integer> INCREMENTAL_SNAPSHOT_RETRY_REBASE_WAIT = new Property<>("incremental.snapshot.retry.rebase.wait", 60);


public static class Property <T>{
private String name;
Expand Down
7 changes: 7 additions & 0 deletions api/src/main/java/com/cloud/agent/api/to/BucketTO.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,13 @@ public final class BucketTO {

private String secretKey;

private long accountId;

public BucketTO(Bucket bucket) {
this.name = bucket.getName();
this.accessKey = bucket.getAccessKey();
this.secretKey = bucket.getSecretKey();
this.accountId = bucket.getAccountId();
}

public BucketTO(String name) {
Expand All @@ -47,4 +50,8 @@ public String getAccessKey() {
public String getSecretKey() {
return this.secretKey;
}

public long getAccountId() {
return this.accountId;
}
}
20 changes: 19 additions & 1 deletion api/src/main/java/com/cloud/agent/api/to/RemoteInstanceTO.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,17 @@ public class RemoteInstanceTO implements Serializable {
private String vcenterPassword;
private String vcenterHost;
private String datacenterName;
private String clusterName;
private String hostName;

public RemoteInstanceTO() {
}

public RemoteInstanceTO(String instanceName) {
public RemoteInstanceTO(String instanceName, String clusterName, String hostName) {
this.hypervisorType = Hypervisor.HypervisorType.VMware;
this.instanceName = instanceName;
this.clusterName = clusterName;
this.hostName = hostName;
}

public RemoteInstanceTO(String instanceName, String instancePath, String vcenterHost, String vcenterUsername, String vcenterPassword, String datacenterName) {
Expand All @@ -55,6 +59,12 @@ public RemoteInstanceTO(String instanceName, String instancePath, String vcenter
this.datacenterName = datacenterName;
}

public RemoteInstanceTO(String instanceName, String instancePath, String vcenterHost, String vcenterUsername, String vcenterPassword, String datacenterName, String clusterName, String hostName) {
this(instanceName, instancePath, vcenterHost, vcenterUsername, vcenterPassword, datacenterName);
this.clusterName = clusterName;
this.hostName = hostName;
}

public Hypervisor.HypervisorType getHypervisorType() {
return this.hypervisorType;
}
Expand Down Expand Up @@ -82,4 +92,12 @@ public String getVcenterHost() {
public String getDatacenterName() {
return datacenterName;
}

public String getClusterName() {
return clusterName;
}

public String getHostName() {
return hostName;
}
}
3 changes: 3 additions & 0 deletions api/src/main/java/com/cloud/host/Host.java
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,9 @@ public static String[] toStrings(Host.Type... types) {
String HOST_UEFI_ENABLE = "host.uefi.enable";
String HOST_VOLUME_ENCRYPTION = "host.volume.encryption";
String HOST_INSTANCE_CONVERSION = "host.instance.conversion";
String HOST_VDDK_SUPPORT = "host.vddk.support";
String HOST_VDDK_LIB_DIR = "vddk.lib.dir";
String HOST_VDDK_VERSION = "host.vddk.version";
String HOST_OVFTOOL_VERSION = "host.ovftool.version";
String HOST_VIRTV2V_VERSION = "host.virtv2v.version";
String HOST_SSH_PORT = "host.ssh.port";
Expand Down
4 changes: 2 additions & 2 deletions api/src/main/java/com/cloud/projects/ProjectService.java
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ public interface ProjectService {

Project updateProject(long id, String name, String displayText, String newOwnerName, Long userId, Role newRole) throws ResourceAllocationException;

boolean addAccountToProject(long projectId, String accountName, String email, Long projectRoleId, Role projectRoleType);
boolean addAccountToProject(long projectId, String accountName, String email, Long projectRoleId, Role projectRoleType) throws ResourceAllocationException;

boolean deleteAccountFromProject(long projectId, String accountName);

Expand All @@ -100,6 +100,6 @@ public interface ProjectService {

Project findByProjectAccountIdIncludingRemoved(long projectAccountId);

boolean addUserToProject(Long projectId, String username, String email, Long projectRoleId, Role projectRole);
boolean addUserToProject(Long projectId, String username, String email, Long projectRoleId, Role projectRole) throws ResourceAllocationException;

}
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,10 @@

public interface VMTemplateStorageResourceAssoc extends InternalIdentity {
public static enum Status {
UNKNOWN, DOWNLOAD_ERROR, NOT_DOWNLOADED, DOWNLOAD_IN_PROGRESS, DOWNLOADED, ABANDONED, UPLOADED, NOT_UPLOADED, UPLOAD_ERROR, UPLOAD_IN_PROGRESS, CREATING, CREATED, BYPASSED
UNKNOWN, DOWNLOAD_ERROR, NOT_DOWNLOADED, DOWNLOAD_IN_PROGRESS, DOWNLOADED, ABANDONED, LIMIT_REACHED, UPLOADED, NOT_UPLOADED, UPLOAD_ERROR, UPLOAD_IN_PROGRESS, CREATING, CREATED, BYPASSED
}

List<Status> ERROR_DOWNLOAD_STATES = List.of(Status.DOWNLOAD_ERROR, Status.ABANDONED, Status.LIMIT_REACHED, Status.UNKNOWN);
List<Status> PENDING_DOWNLOAD_STATES = List.of(Status.NOT_DOWNLOADED, Status.DOWNLOAD_IN_PROGRESS);

String getInstallPath();
Expand Down
20 changes: 10 additions & 10 deletions api/src/main/java/com/cloud/user/ResourceLimitService.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import com.cloud.offering.DiskOffering;
import com.cloud.offering.ServiceOffering;
import com.cloud.template.VirtualMachineTemplate;
import org.apache.cloudstack.resourcelimit.Reserver;

public interface ResourceLimitService {

Expand Down Expand Up @@ -191,6 +192,7 @@ public interface ResourceLimitService {
*/
public void checkResourceLimit(Account account, ResourceCount.ResourceType type, long... count) throws ResourceAllocationException;
public void checkResourceLimitWithTag(Account account, ResourceCount.ResourceType type, String tag, long... count) throws ResourceAllocationException;
public void checkResourceLimitWithTag(Account account, Long domainId, boolean considerSystemAccount, ResourceCount.ResourceType type, String tag, long... count) throws ResourceAllocationException;

/**
* Gets the count of resources for a resource type and account
Expand Down Expand Up @@ -251,12 +253,12 @@ public interface ResourceLimitService {
List<String> getResourceLimitStorageTags(DiskOffering diskOffering);
void updateTaggedResourceLimitsAndCountsForAccounts(List<AccountResponse> responses, String tag);
void updateTaggedResourceLimitsAndCountsForDomains(List<DomainResponse> responses, String tag);
void checkVolumeResourceLimit(Account owner, Boolean display, Long size, DiskOffering diskOffering) throws ResourceAllocationException;

void checkVolumeResourceLimit(Account owner, Boolean display, Long size, DiskOffering diskOffering, List<Reserver> reservations) throws ResourceAllocationException;
List<String> getResourceLimitStorageTagsForResourceCountOperation(Boolean display, DiskOffering diskOffering);
void checkVolumeResourceLimitForDiskOfferingChange(Account owner, Boolean display, Long currentSize, Long newSize,
DiskOffering currentOffering, DiskOffering newOffering) throws ResourceAllocationException;
DiskOffering currentOffering, DiskOffering newOffering, List<Reserver> reservations) throws ResourceAllocationException;

void checkPrimaryStorageResourceLimit(Account owner, Boolean display, Long size, DiskOffering diskOffering) throws ResourceAllocationException;
void checkPrimaryStorageResourceLimit(Account owner, Boolean display, Long size, DiskOffering diskOffering, List<Reserver> reservations) throws ResourceAllocationException;

void incrementVolumeResourceCount(long accountId, Boolean display, Long size, DiskOffering diskOffering);
void decrementVolumeResourceCount(long accountId, Boolean display, Long size, DiskOffering diskOffering);
Expand All @@ -273,25 +275,23 @@ void updateVolumeResourceCountForDiskOfferingChange(long accountId, Boolean disp

void incrementVolumePrimaryStorageResourceCount(long accountId, Boolean display, Long size, DiskOffering diskOffering);
void decrementVolumePrimaryStorageResourceCount(long accountId, Boolean display, Long size, DiskOffering diskOffering);
void checkVmResourceLimit(Account owner, Boolean display, ServiceOffering serviceOffering, VirtualMachineTemplate template) throws ResourceAllocationException;
void checkVmResourceLimit(Account owner, Boolean display, ServiceOffering serviceOffering, VirtualMachineTemplate template, List<Reserver> reservations) throws ResourceAllocationException;
void incrementVmResourceCount(long accountId, Boolean display, ServiceOffering serviceOffering, VirtualMachineTemplate template);
void decrementVmResourceCount(long accountId, Boolean display, ServiceOffering serviceOffering, VirtualMachineTemplate template);

void checkVmResourceLimitsForServiceOfferingChange(Account owner, Boolean display, Long currentCpu, Long newCpu,
Long currentMemory, Long newMemory, ServiceOffering currentOffering, ServiceOffering newOffering, VirtualMachineTemplate template) throws ResourceAllocationException;
Long currentMemory, Long newMemory, ServiceOffering currentOffering, ServiceOffering newOffering, VirtualMachineTemplate template, List<Reserver> reservations) throws ResourceAllocationException;

void checkVmResourceLimitsForTemplateChange(Account owner, Boolean display, ServiceOffering offering,
VirtualMachineTemplate currentTemplate, VirtualMachineTemplate newTemplate) throws ResourceAllocationException;
VirtualMachineTemplate currentTemplate, VirtualMachineTemplate newTemplate, List<Reserver> reservations) throws ResourceAllocationException;

void checkVmCpuResourceLimit(Account owner, Boolean display, ServiceOffering serviceOffering, VirtualMachineTemplate template, Long cpu) throws ResourceAllocationException;
void incrementVmCpuResourceCount(long accountId, Boolean display, ServiceOffering serviceOffering, VirtualMachineTemplate template, Long cpu);
void decrementVmCpuResourceCount(long accountId, Boolean display, ServiceOffering serviceOffering, VirtualMachineTemplate template, Long cpu);
void checkVmMemoryResourceLimit(Account owner, Boolean display, ServiceOffering serviceOffering, VirtualMachineTemplate template, Long memory) throws ResourceAllocationException;
void incrementVmMemoryResourceCount(long accountId, Boolean display, ServiceOffering serviceOffering, VirtualMachineTemplate template, Long memory);
void decrementVmMemoryResourceCount(long accountId, Boolean display, ServiceOffering serviceOffering, VirtualMachineTemplate template, Long memory);

void checkVmGpuResourceLimit(Account owner, Boolean display, ServiceOffering serviceOffering, VirtualMachineTemplate template, Long gpu) throws ResourceAllocationException;
void incrementVmGpuResourceCount(long accountId, Boolean display, ServiceOffering serviceOffering, VirtualMachineTemplate template, Long gpu);
void decrementVmGpuResourceCount(long accountId, Boolean display, ServiceOffering serviceOffering, VirtualMachineTemplate template, Long gpu);

long recalculateDomainResourceCount(final long domainId, final ResourceType type, String tag);
}
Original file line number Diff line number Diff line change
Expand Up @@ -127,8 +127,8 @@ public String toString() {
}

public static ApiCommandResourceType fromString(String value) {
if (StringUtils.isNotEmpty(value) && EnumUtils.isValidEnum(ApiCommandResourceType.class, value)) {
return valueOf(value);
if (StringUtils.isNotBlank(value) && EnumUtils.isValidEnumIgnoreCase(ApiCommandResourceType.class, value)) {
return EnumUtils.getEnumIgnoreCase(ApiCommandResourceType.class, value);
}
return null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -509,6 +509,7 @@ public class ApiConstants {
public static final String REPAIR = "repair";
public static final String REPETITION_ALLOWED = "repetitionallowed";
public static final String REQUIRES_HVM = "requireshvm";
public static final String RESERVED_RESOURCE_DETAILS = "reservedresourcedetails";
public static final String RESOURCES = "resources";
public static final String RESOURCE_COUNT = "resourcecount";
public static final String RESOURCE_NAME = "resourcename";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,10 @@ public Long getStoragePoolId() {
return storagePoolId;
}

public boolean getUseVddk() {
return BooleanUtils.toBooleanDefaultIfNull(useVddk, true);
}

public String getTmpPath() {
return tmpPath;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

import java.util.List;

import com.cloud.exception.ResourceAllocationException;
import org.apache.cloudstack.api.ApiArgValidator;
import org.apache.cloudstack.api.ApiCommandResourceType;
import org.apache.cloudstack.api.BaseCmd;
Expand Down Expand Up @@ -106,7 +107,7 @@ public ProjectAccount.Role getRoleType() {
/////////////////////////////////////////////////////

@Override
public void execute() {
public void execute() throws ResourceAllocationException {
if (accountName == null && email == null) {
throw new InvalidParameterValueException("Either accountName or email is required");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

package org.apache.cloudstack.api.command.user.account;

import com.cloud.exception.ResourceAllocationException;
import org.apache.cloudstack.acl.RoleType;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiArgValidator;
Expand Down Expand Up @@ -111,7 +112,7 @@ public String getEventDescription() {
/////////////////////////////////////////////////////

@Override
public void execute() {
public void execute() throws ResourceAllocationException {
validateInput();
boolean result = _projectService.addUserToProject(getProjectId(), getUsername(), getEmail(), getProjectRoleId(), getRoleType());
if (result) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import javax.inject.Inject;

import org.apache.cloudstack.acl.RoleType;
import org.apache.cloudstack.api.ACL;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
import org.apache.cloudstack.api.ApiErrorCode;
Expand Down Expand Up @@ -53,19 +54,22 @@ public class RestoreVolumeFromBackupAndAttachToVMCmd extends BaseAsyncCmd {
//////////////// API parameters /////////////////////
/////////////////////////////////////////////////////

@ACL
@Parameter(name = ApiConstants.BACKUP_ID,
type = CommandType.UUID,
entityType = BackupResponse.class,
required = true,
description = "ID of the Instance backup")
private Long backupId;

@ACL
@Parameter(name = ApiConstants.VOLUME_ID,
type = CommandType.STRING,
required = true,
description = "ID of the volume backed up")
private String volumeUuid;

@ACL
@Parameter(name = ApiConstants.VIRTUAL_MACHINE_ID,
type = CommandType.UUID,
entityType = UserVmResponse.class,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
package org.apache.cloudstack.api.command.user.bucket;

import com.cloud.exception.ConcurrentOperationException;
import com.cloud.exception.ResourceAllocationException;
import org.apache.cloudstack.acl.RoleType;
import org.apache.cloudstack.storage.object.Bucket;
import com.cloud.user.Account;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import java.util.Date;

import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiArgValidator;
import org.apache.cloudstack.api.ApiConstants;
import org.apache.cloudstack.api.BaseListAccountResourcesCmd;
import org.apache.cloudstack.api.Parameter;
Expand All @@ -40,6 +41,12 @@ public class ListAsyncJobsCmd extends BaseListAccountResourcesCmd {
@Parameter(name = ApiConstants.MANAGEMENT_SERVER_ID, type = CommandType.UUID, entityType = ManagementServerResponse.class, description = "The id of the management server", since="4.19")
private Long managementServerId;

@Parameter(name = ApiConstants.RESOURCE_ID, validations = {ApiArgValidator.UuidString}, type = CommandType.STRING, description = "the ID of the resource associated with the job", since="4.22.1")
private String resourceId;

@Parameter(name = ApiConstants.RESOURCE_TYPE, type = CommandType.STRING, description = "the type of the resource associated with the job", since="4.22.1")
private String resourceType;

/////////////////////////////////////////////////////
/////////////////// Accessors ///////////////////////
/////////////////////////////////////////////////////
Expand All @@ -52,6 +59,14 @@ public Long getManagementServerId() {
return managementServerId;
}

public String getResourceId() {
return resourceId;
}

public String getResourceType() {
return resourceType;
}

/////////////////////////////////////////////////////
/////////////// API Implementation///////////////////
/////////////////////////////////////////////////////
Expand Down
Loading
Loading