This is an automated email from the ASF dual-hosted git repository. winterhazel pushed a commit to branch 4.22 in repository https://gitbox.apache.org/repos/asf/cloudstack.git
commit 21b2025c5055d4580e828f708d406510853f0060 Merge: d1e1aa5d203 c267ad39bcd Author: Fabricio Duarte <[email protected]> AuthorDate: Fri May 22 08:31:35 2026 -0300 Merge release branch 4.20 to 4.22 * 4.20: Fix/flasharray delete rename destroy patch conflict (#13049) Fix VPC network offerings listing in isolated network creation form (#12645) Update mysql java connector version to 8.4.0 (matching version for MySQL 8.4) (#12640) adaptive: honor user-provided capacityBytes when provider stats are unavailable (#13059) Flexibilize public IP selection (#11076) .github/workflows/ci.yml | 2 +- .../cloud/network/dao/PublicIpQuarantineDao.java | 12 +++ .../network/dao/PublicIpQuarantineDaoImpl.java | 22 ++++++ engine/storage/snapshot/pom.xml | 4 +- framework/db/pom.xml | 4 +- packaging/systemd/cloudstack-management.default | 2 +- packaging/systemd/cloudstack-usage.default | 2 +- plugins/network-elements/globodns/pom.xml | 4 +- plugins/network-elements/tungsten/pom.xml | 4 +- .../lifecycle/AdaptiveDataStoreLifeCycleImpl.java | 13 ++-- .../adapter/flasharray/FlashArrayAdapter.java | 67 ++++++++++++---- pom.xml | 12 +-- .../com/cloud/network/IpAddressManagerImpl.java | 91 +++++++++++++--------- .../com/cloud/network/IpAddressManagerTest.java | 1 + setup/db/deploy-db-dev.sh | 5 +- test/integration/smoke/test_quarantined_ips.py | 8 +- tools/docker/Dockerfile | 2 +- tools/marvin/setup.py | 2 +- ui/public/locales/en.json | 1 + ui/public/locales/pt_BR.json | 1 + ui/src/views/network/CreateIsolatedNetworkForm.vue | 28 ++++--- .../java/com/cloud/usage/UsageSanityChecker.java | 2 +- 22 files changed, 193 insertions(+), 96 deletions(-) diff --cc ui/public/locales/en.json index 4bc005c0be1,3160e00ba30..fe3678c9f37 --- a/ui/public/locales/en.json +++ b/ui/public/locales/en.json @@@ -4089,9 -3728,10 +4089,10 @@@ "message.vr.alert.upon.network.offering.creation.others": "As none of the obligatory services for creating a virtual router (VPN, DHCP, DNS, Firewall, LB, UserData, SourceNat, StaticNat, PortForwarding) are enabled, the virtual router will not be created and the compute offering will not be used.", "message.warn.change.primary.storage.scope": "This feature is tested and supported for the following configurations:<br>KVM - NFS/Ceph - DefaultPrimary<br>VMware - NFS - DefaultPrimary<br>*There might be extra steps involved to make it work for other configurations.", "message.warn.filetype": "jpg, jpeg, png, bmp and svg are the only supported image formats.", -"message.warn.importing.instance.without.nic": "WARNING: This Instance is being imported without NICs and many Network resources will not be available. Consider creating a NIC via vCenter before importing or as soon as the Instance is imported.", +"message.warn.importing.instance.without.nic": "WARNING: This Instance is being imported without NICs and many Network resources will not be available. Consider creating a NIC via vCenter before importing or as soon as the Instance is imported. For KVM host, allocate a NIC to Instance after import.", +"message.warn.select.template": "Please select a Template for Registration.", "message.warn.zone.mtu.update": "Please note that this limit won't affect pre-existing Network's MTU settings", + "message.warn.vpc.offerings": "VPC offerings will only be shown if the selected account has at least one VPC.", "message.webhook.deliveries.time.filter": "Webhook deliveries list can be filtered based on date-time. Select 'Custom' for specifying start and end date range.", "message.zone.creation.complete": "Zone creation complete.", "message.zone.detail.description": "Populate Zone details.", diff --cc ui/src/views/network/CreateIsolatedNetworkForm.vue index 7dc4dbe75e3,93fef14d601..aebc928d371 --- a/ui/src/views/network/CreateIsolatedNetworkForm.vue +++ b/ui/src/views/network/CreateIsolatedNetworkForm.vue @@@ -515,13 -521,17 +521,17 @@@ export default if (this.vpc !== null) { // from VPC section this.fetchNetworkOfferingData(true) } else { // from guest network section - var params = {} + const params = { + account: this.owner.account, + projectid: this.owner.projectid, + domainid: this.owner.domainid + } this.networkOfferingLoading = true if ('listVPCs' in this.$store.getters.apis) { - api('listVPCs', params).then(json => { + getAPI('listVPCs', params).then(json => { const listVPCs = json.listvpcsresponse.vpc - var vpcAvailable = this.arrayHasItems(listVPCs) - if (vpcAvailable === false) { + this.hasVPC = this.arrayHasItems(listVPCs) + if (!this.hasVPC) { this.fetchNetworkOfferingData(false) } else { this.fetchNetworkOfferingData()
