Commit Graph

11766 Commits

Author SHA1 Message Date
Pearl Dsilva ce1659e8fc
NSX: Create and Delete static NAT & Port forward rules (#8131)
* NSX: Create and delete NSX Static Nat rules

* fix issues with static nat

* add static nat

* Support to add and delete Port forward rules

* add license

* fix adding multiple pf rules

* cleanup

* fix lint check

* fix smoke tests

* fix smoke tests
2023-10-30 19:37:12 -04:00
Wei Zhou bd52fa8a12
New feature: VNF templates and appliances integration (#8022) 2023-10-27 10:23:00 +02:00
Vishesh a06f8a8763
Fixup updateSnapshotInfo failure due to forward merging (#8150)
Fixes build failures
2023-10-26 17:14:11 +05:30
Daan Hoogland 587d1d7dba Merge remote-tracking branch 'apache/4.18' into main 2023-10-26 09:37:38 +02:00
slavkap 6ae3b73ca2
Create snapshot from VM snapshot without memory for NFS/Local storage (#8117) 2023-10-26 08:46:14 +02:00
Marcus Sorensen 4ff592ac2c
Use UserVmDao for listVirtualMachines API to increase performance (#8012)
Co-authored-by: Marcus Sorensen <mls@apple.com>
2023-10-26 08:44:09 +02:00
Vishesh ea90848429
Feature: Add support for DRS in a Cluster (#7723)
This pull request (PR) implements a Distributed Resource Scheduler (DRS) for a CloudStack cluster. The primary objective of this feature is to enable automatic resource optimization and workload balancing within the cluster by live migrating the VMs as per configuration.
Administrators can also execute DRS manually for a cluster, using the UI or the API.
Adds support for two algorithms - condensed & balanced. Algorithms are pluggable allowing ACS Administrators to have customized control over scheduling.

Implementation
There are three top level components:

    Scheduler
    A timer task which:

    Generate DRS plan for clusters
    Process DRS plan
    Remove old DRS plan records

    DRS Execution
    We go through each VM in the cluster and use the specified algorithm to check if DRS is required and to calculate cost, benefit & improvement of migrating that VM to another host in the cluster. On the basis of cost, benefit & improvement, the best migration is selected for the current iteration and the VM is migrated. The maximum number of iterations (live migrations) possible on the cluster is defined by drs.iterations which is defined as a percentage (as a value between 0 and 1) of total number of workloads.

    Algorithm
    Every algorithms implements two methods:
        needsDrs - to check if drs is required for cluster
        getMetrics - to calculate cost, benefit & improvement of a migrating a VM to another host.

Algorithms

    Condensed - Packs all the VMs on minimum number of hosts in the cluster.
    Balanced - Distributes the VMs evenly across hosts in the cluster.
    Algorithms use drs.level to decide the amount of imbalance to allow in the cluster.

APIs Added

listClusterDrsPlan

    id - ID of the DRS plan to list
    clusterid - to list plans for a cluster id

generateClusterDrsPlan

    id - cluster id
    iterations - The maximum number of iterations in a DRS job defined as a percentage (as a value between 0 and 1) of total number of workloads. Defaults to value of cluster's drs.iterations setting.

executeClusterDrsPlan

    id - ID of the cluster for which DRS plan is to be executed.
    migrateto - This parameter specifies the mapping between a vm and a host to migrate that VM. Format of this parameter: migrateto[vm-index].vm=<uuid>&migrateto[vm-index].host=<uuid>.

Config Keys Added

    ClusterDrsPlanExpireInterval
    Key drs.plan.expire.interval
    Scope Global
    Default Value 30 days
    Description The interval in days after which old DRS records will be cleaned up.

    ClusterDrsEnabled
    Key drs.automatic.enable
    Scope Cluster
    Default Value false
    Description Enable/disable automatic DRS on a cluster.

    ClusterDrsInterval
    Key drs.automatic.interval
    Scope Cluster
    Default Value 60 minutes
    Description The interval in minutes after which a periodic background thread will schedule DRS for a cluster.

    ClusterDrsIterations
    Key drs.max.migrations
    Scope Cluster
    Default Value 50
    Description Maximum number of live migrations in a DRS execution.

    ClusterDrsAlgorithm
    Key drs.algorithm
    Scope Cluster
    Default Value condensed
    Description DRS algorithm to execute on the cluster. This PR implements two algorithms - balanced & condensed.

    ClusterDrsLevel
    Key drs.imbalance
    Scope Cluster
    Default Value 0.5
    Description Percentage (as a value between 0.0 and 1.0) of imbalance allowed in the cluster. 1.0 means no imbalance
    is allowed and 0.0 means imbalance is allowed.

    ClusterDrsMetric
    Key drs.imbalance.metric
    Scope Cluster
    Default Value memory
    Description The cluster imbalance metric to use when checking the drs.imbalance.threshold. Possible values are memory and cpu.
2023-10-26 11:48:18 +05:30
Vishesh 27ae7d8bc4
Fixup: register vmscheduler configkey (#8116)
This PR registers the global setting VMScheduledJobExpireInterval.
2023-10-26 00:57:10 +05:30
Pearl Dsilva 714a0a22d4
NSX: Add Step for Adding Public traffic network for NSX During zone creation (#8126)
* NSX: Add Step for Adding Public traffic network for NSX

* address comments and cleanup

* address comment

* remove indent
2023-10-25 11:09:05 -03:00
Aakash Sinha 8fe13f91a1
OSType response: isuserdefined as string not bool #8127 (#8128)
Co-authored-by: Aakash Sinha <mailtomeaakash@gmail.com>
2023-10-25 11:02:57 +02:00
Nicolas Vazquez f46b7883a8
[NSX] Allow NSX isolated networks (#8132)
* Add network offerings for NSX on isolated networks

* Fix offerings creation

* In progress NSX isolated network

* Fixes

* Fix NIC allocation to router
2023-10-24 15:00:41 -03:00
Pearl Dsilva c135fa13ae fix test 2023-10-23 12:11:12 -04:00
Pearl Dsilva 2fe8e9cd96 Merge branch 'nsx-integration' of https://github.com/apache/cloudstack into nsx-integration 2023-10-23 11:53:01 -04:00
Pearl Dsilva be2b8edd20
NSX: Refactor Network & VPC offering (#8110)
* [NSX] Refactor API wrapper operations

* Network offering changes for NSX

* fix services and provider combination

* address comments: rename param

* update nsx_mode parameter

---------

Co-authored-by: nvazquez <nicovazquez90@gmail.com>
2023-10-23 12:50:13 -03:00
Pearl Dsilva 69ded800e9
modify NSX resource naming convention (#8095)
* modify NSX resource naming convention

* remove unused imports

* add a setup phase between desgin and implementation of a network for intermediary steps

* add method to all classes
2023-10-23 12:31:30 -03:00
Pearl Dsilva dc25278f28 Merge branch 'main' of https://github.com/apache/cloudstack into nsx-integration 2023-10-23 08:53:48 -04:00
Abhishek Kumar 543c54c718
api,server,ui: snapshot copy, multi-zone replica (#7873)
This PR adds new functionality to copy snapshots across zones and take snapshots for multiple zones.

Copy functionality is similar to template copy. The source zone acts as the web server from where the destination zone(s) can download the snapshot files. For this purpose, a new API - `copySnapshot` has been added. The response for copySnapshot will be returning zone and download details from the first destination zone of the request. This behaviour is similar to the `copyTemplate` API.

In a similar manner, multiple zones can be selected while taking the snapshots or creating snapshot policies. For this snapshot will be taken in the base zone(in which volume is present) and then copied to the additional zones. A new parameter - `zoneids` has been added to `createSnapshot` and `createSnapshotPolicy` APIs.

As snapshots can be present on multiple zones (secondary stores), a new parameter `zoneid` has been added to delete the snapshot copy on a specific zone.

`listSnapshots` API has been updated to allow listing snapshot entries for different zones/datastores. New parameters - `showUnique`, `locationType` have been added.

Events generated during snapshot operations will now be linked to the snapshot itself rather than the volume of the snapshot.

`listSnapshotPolicies` and `createSnapshotPolicy` APIs will return zone details of the zones in which backup will be scheduled for the policy.

----
New API added
`copySnapshot`

Request and response params updated for APIs
```
- listSnapshots
- deleteSnapshot
- createTemplate
- listZones
- listSnapshotPolicies
- createSnapshotPolicy
```
UI updated for
- Snapshot detail view
- Create snapshot form
- Create snapshot policy form
- Create volume (from snapshot) form
- Create template (from snapshot) form

Doc PR: https://github.com/apache/cloudstack-documentation/pull/344
PR: https://github.com/apache/cloudstack/pull/7873
2023-10-23 09:01:58 +02:00
Abhishek Kumar 99ded8169b Merge remote-tracking branch 'apache/4.18' into main 2023-10-20 17:40:19 +05:30
sato03 a8700bff7f
server: set Default NIC when VM has no default NIC (#7859)
Co-authored-by: Henrique Sato <henrique.sato@scclouds.com.br>
2023-10-20 11:40:10 +02:00
Fabricio Duarte d3d3027ba6
Fix ISOs and templates listing pagination (#7974) 2023-10-20 11:37:04 +02:00
John Bampton 9834d5168f
pre-commit: standardize more line endings to `lf` (#7804)
https://github.com/pre-commit/pre-commit-hooks#mixed-line-ending
2023-10-18 11:25:00 +02:00
sato03 e437d1016f
Snapshot removal and storage cleanup logs (#8031) 2023-10-16 16:20:09 +02:00
Nicolas Vazquez 3f8f9e294b
[NSX] Refactor API wrapper operations (#8059)
* [NSX] Refactor API wrapper operations

* Big refactor

* Address review comment

* change network cidr to cidr to prevent NPE

* add domain and zone names to the various networks - vpc & tier

---------

Co-authored-by: Pearl Dsilva <pearl1594@gmail.com>
2023-10-12 19:39:01 -03:00
Pierre Le Fevre 3486a3c310
Add domainpath to listnetwork and UI network tab (#7386) 2023-10-12 16:12:39 +02:00
Stephan Krug 0c14e4603d
Allow password definition during VM deploy (#6947)
Co-authored-by: Stephan Krug <stephan.krug@scclouds.com.br>
Co-authored-by: dahn <daan.hoogland@gmail.com>
Co-authored-by: GaOrtiga <49285692+GaOrtiga@users.noreply.github.com>
Co-authored-by: Gabriel Pordeus Santos <gabrielpordeus@gmail.com>
Co-authored-by: Gabriel <gabriel.fernandes@scclouds.com.br>
2023-10-12 15:16:37 +02:00
Abhishek Kumar 9df580cef4 Merge remote-tracking branch 'apache/4.18' into main 2023-10-12 16:54:19 +05:30
Nicolas Vazquez dccd37af50
Run ResourceCountCheckTask only in the longest running management server (#7977)
* Run recalculation recurrent task only in the longest running management server

* Address review comments
2023-10-12 14:21:39 +05:30
Abhishek Kumar 3e7f21a190
vm-import: fix stopped managed vms listing in unmanaged instances (#7606)
Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
Co-authored-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2023-10-12 09:21:47 +02:00
Harikrishna fb3a2ecb57
Fix NPE if global setting implicit.host.tags is set to null (#8066) 2023-10-11 20:55:34 +02:00
Rohit Yadav c3aeba1f4a Merge remote-tracking branch 'origin/4.18' 2023-10-09 19:11:47 +05:30
Oscar Sandoval c0128e2f9a
Improve template download error message (#8029) 2023-10-09 10:20:13 +02:00
Wei Zhou e333f2705a
user-shared networks: fix few issues (#6887)
This PR fixes few issues:

    - check ip range of new network instead of network cidr, so that the two networks can use same cidr but no IP conflicts.
    - Private gateways: return vlan number only for root admins
    - when update isolated network, check new guest vm cidr and IPs of neworks/vpc gateways associated to it
2023-10-09 13:11:44 +05:30
nvazquez 5ec455228d
Merge branch 'main' into nsx-integration 2023-10-08 21:08:53 -03:00
Nicolas Vazquez e7e511b685
[NSX] Create a DHCP relay and add it to a VPC tier segment (#107)
* Create DHCP relay command and execute request

* In progress integrate with networking

* Create DHCP relay config on the network VR allocation

* Revert domain router dao changes

* Create DHCP relay con VR nic plug to NSX network

* Link DHCP relay config to segment after creation
2023-10-08 20:59:16 -03:00
Pearl Dsilva 83540aab27 revert reserving 1st IP in vpc segments 2023-10-05 06:56:43 -04:00
SadiJr 4c59dea0d1
[Veeam] Don't interrupt backup syncronization (#7225)
When ACS  is synchronizing the Veeam backups, if one backup fails in this process, all the other backups are skipped and ignored. This behavior is fixed by this PR; if one backup fails in syncronization, only this backup is skipped, and the others continue the process.

Co-authored-by: SadiJr <sadi@scclouds.com.br>
2023-10-05 13:59:18 +05:30
Pearl Dsilva be9e06f6af reserve first IP (after g/w) of subnet for router nic - NSX 2023-10-04 17:50:57 -04:00
Pearl Dsilva 58eb567b25 Add public nic for NSX 2023-10-03 17:43:39 -04:00
Pearl Dsilva e1d56d0a62 Merge branch 'main' of https://github.com/apache/cloudstack into nsx-integration 2023-10-03 07:32:12 -04:00
Pearl Dsilva b2d34e65a7 change provider to VPC router for Dhcp & dns service in an nsx offering 2023-10-03 07:25:42 -04:00
Daan Hoogland 2e9b3d8e08 Merge release branch 4.18 to main
* 4.18:
  server: fix mysql error when list Shared templates for project (#8020)
2023-10-03 10:48:09 +02:00
Wei Zhou 3d8cc63bc3
server: fix mysql error when list Shared templates for project (#8020) 2023-10-03 10:45:47 +02:00
SadiJr 9f5c3ffc55
Improve logs in UnmanagedVMsManagerImpl class (#7213)
Co-authored-by: SadiJr <sadi@scclouds.com.br>
Co-authored-by: Stephan Krug <stekrug@icloud.com>
2023-09-29 16:12:26 +02:00
sato03 31e2b629ee
Removed state for removed accounts (#7868)
Co-authored-by: Henrique Sato <henrique.sato@scclouds.com.br>
2023-09-28 16:49:12 +02:00
Bryan Lima ae5dda867f
Normalize encryption on global configurations values (#6812) 2023-09-28 16:44:36 +02:00
SadiJr 1bda2343f3
Improve logs when searching one storage pool to allocate a new volume (#7212)
Co-authored-by: SadiJr <sadi@scclouds.com.br>
2023-09-28 13:42:42 +02:00
Gabriel Pordeus Santos 7541cb97bd
Add Service Offering to listSystemVMs and fix link from VR to its offering (#7938)
Co-authored-by: João Jandre <48719461+JoaoJandre@users.noreply.github.com>
2023-09-28 09:10:03 +02:00
Fabricio Duarte ca54e6c788
Improve the description of config password.policy.minimum.digits (#7989) 2023-09-28 09:08:54 +02:00
Rohit Yadav 8cd7147b25 Merge remote-tracking branch 'origin/4.18' 2023-09-28 12:15:23 +05:30
Marcus Sorensen 221f863939
Use direct download timeout configs for URL check (#7948)
Signed-off-by: Marcus Sorensen <mls@apple.com>
Co-authored-by: Marcus Sorensen <mls@apple.com>
2023-09-28 12:11:38 +05:30
Marcus Sorensen 348a63dc98
LibvirtServerDiscoverer should only process added KVM hosts (#7979)
Don't use LibvirtServerDiscoverer's processHostAdded() in CustomServerDiscoverer

Signed-off-by: Marcus Sorensen <mls@apple.com>
Co-authored-by: Marcus Sorensen <mls@apple.com>
2023-09-28 12:10:26 +05:30
Pearl Dsilva 272704c4a7 move creation of segments to design phase 2023-09-27 11:32:17 -04:00
Pearl Dsilva cec7bebce6 Merge branch 'main' of https://github.com/apache/cloudstack into nsx-integration 2023-09-27 11:01:03 -04:00
Pearl Dsilva c65076bd62 update offering 2023-09-26 15:07:10 -04:00
Pearl Dsilva 3132bfdffa update offering 2023-09-26 09:37:53 -04:00
Marcus Sorensen 155a30748c
Allow configkey to set 'cloud-name' cloud-init metadata (#7964)
* Allow configkey to set 'cloud-name' cloud-init metadata

* Update engine/api/src/main/java/com/cloud/vm/VirtualMachineManager.java

Co-authored-by: Daniel Augusto Veronezi Salvador <38945620+GutoVeronezi@users.noreply.github.com>

* Update server/src/main/java/com/cloud/network/NetworkModelImpl.java

Co-authored-by: Daniel Augusto Veronezi Salvador <38945620+GutoVeronezi@users.noreply.github.com>

* Update server/src/main/java/com/cloud/network/router/CommandSetupHelper.java

Co-authored-by: Daniel Augusto Veronezi Salvador <38945620+GutoVeronezi@users.noreply.github.com>

* Revert "Update server/src/main/java/com/cloud/network/router/CommandSetupHelper.java"

This reverts commit 8abc3e38c4.

* Revert "Update server/src/main/java/com/cloud/network/NetworkModelImpl.java"

This reverts commit 7f239be919.

* Rework/Fix review code suggestions

---------

Co-authored-by: Marcus Sorensen <mls@apple.com>
Co-authored-by: Daniel Augusto Veronezi Salvador <38945620+GutoVeronezi@users.noreply.github.com>
2023-09-26 14:51:11 +05:30
Rohit Yadav 30e34ef310 Merge remote-tracking branch 'origin/4.18' 2023-09-26 14:43:23 +05:30
Fabricio Duarte ef742210b5
Fix 2FA becoming enabled when the user inputs the wrong code during setup (#7972) 2023-09-26 08:59:11 +02:00
Pearl Dsilva 33a29dce03 add route advertisement 2023-09-25 12:09:14 -04:00
Vishesh b614a74027
Fixup CheckedReservationTest (#7997) 2023-09-25 20:20:45 +05:30
Pearl Dsilva eae9c4784e Merge branch 'main' of https://github.com/apache/cloudstack into nsx-integration 2023-09-25 07:57:43 -04:00
Vishesh e721f3b379
Remove powermock from server (#7986) 2023-09-22 14:07:08 +02:00
Pearl Dsilva 61bc513d6f add ui changes + update nsx_provider table transport zones + use NSX broadcast domain for add nics to router 2023-09-21 17:59:56 -04:00
Daan Hoogland 0375714ded Merge release branch 4.18 to main
* 4.18:
  ldap trust map cleanup on domain delete (#7915)
  upgrade: fix upgrade from 4.18.1.0 to 4.18.2.0-SNAPSHOT (#7959)
2023-09-19 11:20:58 +02:00
Stephan Krug c428d3bb34
Add and improve logs in snapshot scheduling (#6925)
Co-authored-by: Stephan Krug <stephan.krug@scclouds.com.br>
2023-09-19 08:54:52 +02:00
dahn 09ae0499b2
ldap trust map cleanup on domain delete (#7915)
Co-authored-by: Wei Zhou <weizhou@apache.org>
2023-09-19 08:01:15 +02:00
Vishesh d25521e96f
Fix issues in VM Scheduler (#7782) 2023-09-18 14:11:06 +02:00
John Bampton 4eb110af73
Remove unneeded duplicate words (#7850) 2023-09-18 13:16:33 +02:00
Pearl Dsilva 56861e1f36 fix test / build failure 2023-09-13 14:23:16 -04:00
Pearl Dsilva 9d9c334bd2 address code smells - part 1 2023-09-13 14:23:16 -04:00
Pearl Dsilva 43443a5074 add default VPC offering and update upgrade path 2023-09-13 14:23:16 -04:00
Pearl Dsilva 0aafa68a66 add upgrade path and daos
\n add nsx controller command
2023-09-13 14:23:15 -04:00
Pearl Dsilva a533af4c2b NSX integration - skeletal code 2023-09-13 14:23:15 -04:00
Wei Zhou 246bb24b0f Updating pom.xml version numbers for release 4.18.2.0-SNAPSHOT
Signed-off-by: Wei Zhou <weizhou@apache.org>
2023-09-12 17:26:53 +02:00
Nicolas Vazquez 940733cedf
UI: Fix user role login due to missing API access on custom hypervisor name (#7939)
* UI: Fix user role login due to missing API access on custom hypervisor name

* Refactor to include the custom HW display name as part of the response of listCapabilities API

* Add since parameter
2023-09-11 14:08:05 +05:30
Wei Zhou f6b2a58727 Merge branch '4.18' 2023-09-07 08:56:35 +02:00
Wei Zhou 4bdff06acd Updating pom.xml version numbers for release 4.18.1.0
Signed-off-by: Wei Zhou <weizhou@apache.org>
2023-09-07 08:50:50 +02:00
Abhishek Kumar f049f5409e
server: fix dualstack ipv6 networks for vxlan (#7933)
Fixes #7926

Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
2023-09-07 08:46:45 +02:00
GaOrtiga 819dd7b75c
server: remove supportedOwner from Resource.ResourceType (#7416) 2023-08-30 11:29:16 +02:00
Rohit Yadav 7362e5338c Merge remote-tracking branch 'origin/4.18' 2023-08-28 12:54:36 +05:30
Wei Zhou 26581b7741
server: throw new exception when rootdisksize is required but not set (#7913)
* server: throw new exception when rootdisksize is required but not set

* PR7913: fix an issue with PR6441
2023-08-28 08:57:40 +02:00
Wei Zhou 0dd6bb7c67
systemvm: update size and state of systemvm template during registration (#7874) 2023-08-25 16:46:32 +02:00
Daan Hoogland 24ae5aa5fa Merge branch '4.18' 2023-08-25 14:27:34 +02:00
Wei Zhou b19db10ea6
server: try with all supported hypervisors (ordered, no duplications) when deploy a virtual router (#7877) 2023-08-25 11:49:03 +02:00
Wei Zhou 8dc5fdd067
server: fix cannot get systemvm ips in dedicated ranges (#7144)
This fixes #6698
2023-08-25 11:36:39 +02:00
Wei Zhou f5a1f4130d
server: fix global setting system.vm.public.ip.reservation.mode.strictness is not really dynamic (#7909)
If the original value is `false`, and search build is configured without the condition. Now change the value to `true`, it will not get effective due to missing condition.
2023-08-25 11:35:31 +02:00
Wei Zhou 3b05797344 Merge remote-tracking branch 'origin/4.18' 2023-08-24 18:32:56 +02:00
Wei Zhou 3c38ed7a65
server: allow user to list available IPs on shared networks (#7898)
This fixes #7817
2023-08-24 21:42:01 +05:30
Marcus Sorensen a0702279aa
server Don't allow inadvertent deletion of hidden details via API (#7880)
* Don't allow inadvertent deletion of hidden details via API

* Update VM details unit test ensuring system/hidden details not removed

* Update test/integration/component/test_update_vm.py

---------

Co-authored-by: Marcus Sorensen <mls@apple.com>
Co-authored-by: dahn <daan.hoogland@gmail.com>
2023-08-24 10:45:39 +02:00
Daan Hoogland 27f148e79e Merge branch '4.18' 2023-08-23 11:15:56 +02:00
Wei Zhou e4117e68d2
engine/schema: fix duplicated guest OSes in 4.18.0.0 (#7799)
Co-authored-by: Daan Hoogland <daan@onecht.net>
2023-08-23 09:44:34 +02:00
Daan Hoogland 2ef159eeb8 merge issues 2023-08-22 13:44:21 +02:00
Daan Hoogland ea832bce13 Merge branch '4.18' 2023-08-22 11:44:45 +02:00
Wei Zhou 78bdde9e98
AutoScaling: support Managed User Data (#7769) 2023-08-22 11:07:16 +02:00
Fabricio Duarte 6d24217636
server: Allow admins to disable the 2FA of users in subdomains (#7870) 2023-08-21 15:48:33 +02:00
Sina Kashipazha d296f54c7f
Api: update command domainId/account descriptions (#7876) 2023-08-20 15:44:31 +02:00
Sina Kashipazha add64bd7e6
security group: replace vm.getPrivateMacAddress() with nic.getMacAddress() (#7293) 2023-08-18 10:49:16 +02:00
Wei Zhou d8a5c89060
server: get only Ready ISO to mount (#7848) 2023-08-17 11:04:14 +02:00
Nicolas Vazquez 8b5ba13b81
plugins: Add Custom hypervisor minimal changes (#7692)
### Description

Design document: https://cwiki.apache.org/confluence/display/CLOUDSTACK/%5BDRAFT%5D+Minimal+changes+to+allow+new+dynamic+hypervisor+type%3A+Custom+Hypervisor

This PR introduces the minimal changes to add a new hypervisor type (internally named Custom in the codebase, and configurable display name), allowing to write an external hypervisor plugin as a Custom Hypervisor to CloudStack

The custom hypervisor name is set by the setting: 'hypervisor.custom.display.name'. The new hypervisor type does not affect the behaviour of any CloudStack operation, it simply introduces a new hypervisor type into the system.

CloudStack does not have any means to dynamically add new hypervisor types. The hypervisor types are internally preset by an enum defined within the CloudStack codebase and unless a new version supports a new hypervisor it is not possible to add a host of a hypervisor that is not in part of the enum. It is possible to implement minimal changes in CloudStack to support a new hypervisor plugin that may be developed privately

This PR is an initial work on allowing new dynamic hypervisor types (adds a new element to the HypervisorType enum, but allows variable display name for the hypervisor)

##### Proposed Future work:
Replace the HypervisorType from a fixed enum to an extensible registry mechanism, registered from the hypervisor plugin

#### Feature Specifications
- The new hypervisor type is internally named 'Custom' to the CloudStack services (management server and agent services, database records).
- A new global setting ‘hypervisor.custom.display.name’ allows administrators to set the display name of the hypervisor type. The display name will be shown in the CloudStack UI and API.
   - In case the ‘hypervisor.list’ setting contains the display name of the new hypervisor type, the setting value is automatically updated after the ‘hypervisor.custom.display.name’ setting is updated.
- The new Custom hypervisor type supports:
   - Direct downloads (the ability to download templates into primary storage from the hypervisor hosts without using secondary storage)
   - Local storage (use hypervisor hosts local storage as primary storage)
   - Template format: RAW format (the templates to be registered on the new hypervisor type must be in RAW format)
- The UI is also extended to display the new hypervisor type and the supported features listed above.
- The above are the minimal changes for CloudStack to support the new hypervisor type, which can be tested by integrating the plugin codebase with this feature.


#### Use cases
This PR allows the cloud administrators to test custom hypervisor plugins implementations in CloudStack and easily integrate it into CloudStack as a new hypervisor type ("Custom"), reducing the implementation to only the hypervisor supported specific storage/networking and the hypervisor resource to communicate with the management server.

- CloudStack admin should be able to create a zone for the new custom hypervisor and add clusters, hosts into the zone with normal operations
- CloudStack users should be able to execute normal VMs/volumes/network/storage operations on VMs/volumes running on the custom hypervisor hosts
2023-08-16 20:53:24 +05:30
Charles Queiroz e8b491177f
server: Replace Hashtable with LinkedHashMap in createIsoResponse (#7844)
* Replace Hashtable with LinkedHashMap in createIsoResponse

This change replaces the use of Hashtable with LinkedHashMap in the `createIsoResponse` method of `ViewResponseHelper`.
 The reason for this modification is to maintain the insertion order of entries, which isn't the case with Hashtable.
  This could lead to more predictable results and behaviors in calling methods.

* Replace Hashtable with LinkedHashMap in view response creation methods

Changed Hashtable to LinkedHashMap in various response creation methods within ViewResponseHelper class.
This modification ensures an ordered iteration which is beneficial for scenarios where the insertion order of responses needs to be maintained consistently.

---------

Co-authored-by: Sina Kashipazha <soreana@users.noreply.github.com>
2023-08-16 08:58:41 +02:00