* refactor vmschedule to make it more generic and add new commands for it
* fixup
* update marvin tests to use the new APIs
* Update UI to use new APIs
* minor fixups
* Add support scheduling min & max for autoscaling groups
* Add marvin test for ASG
* fixup
* fixup
* fixup
* Fixup
* pre-allocate a second empty cdrom slot at boot (hardcoded)
* drive cdrom slot count via vm.cdrom.max.count ConfigKey
* add vm_iso_map table + VO/DAO
* persist multi-ISO state via vm_iso_map
* carry target cdrom slot through AttachCommand to KVM agent
* enforce per-VM cdrom cap, clamp to hypervisor max
* make detachIso accepts an ISO id
* expose attached ISOs as isos[] in listVirtualMachines response
* extract CDROM_PRIMARY_DEVICE_SEQ constant
* unit tests for cdrom slot allocation logic
* implement multi-ISO attachment and detachment for VMs with enhanced validation
* implement multi-ISO display in InstanceTab with computed property for attached ISOs
* add warning alert for max CDROM selections and enhance global capacity fetching
* enhance ISO attachment validation to handle multiple ISOs and prevent duplicates
* refactor ISO attachment logic for detachment and validation
* add unit tests for ISO detachment resolution and validation logic
* add mock for VmIsoMapDao in UserVmJoinDaoImplTest and set lenient behavior for listByVmId
* refactor ISO attachment logic and enhance UI for multi-CDROM management
* refactor ISO attachment methods to use VM ID and improve parameter handling
* remove unnecessary mock for VM ISO mapping in TemplateManagerImplTest
* add 'since' attribute to ISO detach command parameter description
* scope vm.cdrom.max.count to cluster
* add support for configurable CD-ROM count per VM and improve handling in TemplateManager
* add HostDetailsDao mock to UserVmJoinDaoImplTest
* fix: handle null poolId when loading attached ISO slots in prepareIsoForVmProfile
* implement listByIsoId method in VmIsoMapDao and update TemplateManagerImpl for ISO deletion checks
* improve logging messages for ISO deletion checks
* add unit tests for CD-ROM handling and enforce limits in TemplateManager
* refactor: update configuration value handling and improve notification logic
* refactor: rename CD-ROM references to ISO and update related logic
* refactor: enhance effective CD-ROM max count logic to handle missing host IDs and improve cluster ID retrieval
* refactor: enhance effective CD-ROM max count logic to handle misconfigurations during VM boot
* refactor: enhance effective CD-ROM max count logic to retrieve host ID from candidates based on hypervisor type
* refactor: enhance host ID retrieval logic for VMs based on hypervisor type
* feat: add bootable ISO flag to AttachedIsoResponse and update UI to display it
* refactor: simplify effectiveMaxCdroms method and improve logging for CD-ROM capacity
* test: update AttachedIsoResponseTest to include bootable flag in constructor tests
* feat: include bootable flag in AttachedIsoResponse for user VMs
* feat: enhance CD-ROM management by defining empty slots for user VMs
* Addition of description field for NIC's secondary IP addresses
* Address copilot's review
* Add newline at the end of file
Co-authored-by: dahn <daan.hoogland@gmail.com>
* Address Wei's label changes
* Remove colon from label
* Apply suggestions from code review
Co-authored-by: Bernardo De Marco Gonçalves <bernardomg2004@gmail.com>
* Fix missing newline at end of SQL file
---------
Co-authored-by: dahn <daan.hoogland@gmail.com>
Co-authored-by: Bernardo De Marco Gonçalves <bernardomg2004@gmail.com>
This PR introduces the initial implementation of Veeam integration support for KVM in CloudStack by adding a UHAPI-compatible server and image server components.
Veeam Backup & Replication interacts with virtualization platforms using its Universal Hypervisor API (UHAPI). To enable backup and restore workflows for CloudStack-managed KVM environments, this change introduces a UHAPI server that exposes CloudStack resources through a UHAPI-compatible interface.
In addition to the control plane APIs, an image server component is introduced to handle the data transfer operations required during backup and restore workflows.
The integration consists of two main components:
1. UHAPI Server (Control Plane) named CloudStack Veeam Control Service
A lightweight UHAPI server runs inside the CloudStack management server and exposes endpoints under:
/ovirt-engine
- /api - For APIs
- /sso - For authentication
- /services/pki-resource - For certificates
This server provides inventory discovery APIs required by Veeam and translates CloudStack resources into the structures expected by UHAPI.
The server:
- exposes infrastructure inventory
- handles authentication and session tokens
- maps CloudStack resources to UHAPI-compatible representations
2. Image Server (Data Plane) named CloudStack Image Service
A separate image server component is introduced to handle backup and restore data transfer operations.
This component:
- serves disk image data during backup
- receives image data during restore operations
- exposes endpoints used by Veeam worker components
- integrates with CloudStack storage to read and write VM disk data
The separation between both these components server ensures that:
- metadata APIs and control operations remain lightweight
- bulk image transfer operations are handled independently
Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
Co-authored-by: Abhisar Sinha <63767682+abh1sar@users.noreply.github.com>
Co-authored-by: abh1sar <abhisar.sinha@gmail.com>
Co-authored-by: Wei Zhou <weizhou@apache.org>
* 4.22:
VM Deployment using snapshot in new zone (#13178)
Change exception treatment on incremental snapshot wait (#12665)
Move checkRoleEscalation outside DB transaction in createAccount (#13044)
Fix/flasharray delete rename destroy patch conflict (#13049)
Fix VPC network offerings listing in isolated network creation form (#12645)
systemvm: accept ipv6 established/related return traffic (#13173)
update debian change log
Updating pom.xml version numbers for release 4.22.2.0-SNAPSHOT
Updating pom.xml version numbers for release 4.22.1.0
Update suse15 packaging spec, use qemu-ovmf-x86_64 package instead of edk2-ovmf for agent (#13133)
Change disk-only VM snapshot removal message (#11182)
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)
* 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)
* Refactoring Allocator classes
* Break into smaller methods random and firfit allocators.
* Added unit tests for random and firstfit allocators
* Move random allocator from cloud-plugins to cloud-server
* Add BaseAllocator abstract class for duplicate code
* Add missing license
* Add missing license to unit test file
* Remove host allocator random dependency
* Change exception message on smoke tests
* Remove conditional as it was never actually reached in the original flow
* Fix tests
* Fix flipped parameters
* Fix NPE while listing hosts for migration when suitableHosts is null
* Remove unnecessary stubbings
* Fix checkstyle
* Remove unnecessary file
* Rename exception error messages
* Apply suggestions from code review
Co-authored-by: Fabricio Duarte <fabricio.duarte.jr@gmail.com>
* Rename UserVmDetailVO references to VMInstanceDetailVO
* Remove unused imports
* Add new line at EOF
* Remove unnecessary random allocator pom
* Fix GPU allocation mistake
* Fix failing tests
---------
Co-authored-by: Fabricio Duarte <fabricio.duarte@scclouds.com.br>
Co-authored-by: Fabricio Duarte <fabricio.duarte.jr@gmail.com>
* Fix bulk power state query missing VM lifecycle state field
The IdsPowerStateSelectSearch partial select did not include the VM
lifecycle state, causing isPowerStateInSyncWithInstanceState to always
return true when state was null. This prevented retry of failed
StopCommands on subsequent ping cycles.
* Add defensive check for instance host ID to prevent NPE
Co-authored-by: Sachin R Doddaguni <s_rudrappadoddagu@apple.com>
Co-authored-by: nvazquez <nicovazquez90@gmail.com>
* Fix VPC restart with multi-CIDR networks: handle comma-separated CIDR in NetworkVO.equals()
When a network has multiple CIDRs (e.g. '192.168.2.0/24,160.0.0.0/24'),
NetworkVO.equals() passes the raw comma-separated string to
NetUtils.isNetworkAWithinNetworkB() which expects a single CIDR,
causing 'cidr is not formatted correctly' error during VPC restart
with cleanup=true.
Extract only the first CIDR value before passing to NetUtils.
* Fix root cause: skip CIDR/gateway updates for Public traffic type networks
addCidrAndGatewayForIpv4/Ipv6 (introduced by PR #11249) was called for all
network types without checking if the network is Public. This caused
comma-separated CIDRs to be stored on Public networks, which then triggered
'cidr is not formatted correctly' errors during VPC restart.
Add TrafficType.Public guard in both the VLAN creation (addCidr) and
VLAN deletion (removeCidr) paths in ConfigurationManagerImpl.
* Sanitize legacy network-level addressing fields for Public networks
---------
Co-authored-by: dahn <daan@onecht.net>