This commits introduces a new framework for OpenNebula, it is based on
standard the OpenNebula middleware access driver (mad) model. Benefits
compared to the current implementation:
* Less overhead on API server and streamlined communications
* Ease integration with third party schedulers
* New "optimize" action to balance the workload of a cluster
* Embedded Plan Manager to apply optimization and deployment plans with
custom parameters for the scheduling window
* Custom optimization policies per cluster
This commits introduces 2 schedulers:
* Rank scheduler based on the match-making algorithm present in 6.x
series
* OpenNebula DRS an optimization algorithm based on an ILP solver for
placement and cluster optimization
Also new API calls has been added for onecluster as well as the CLI
updates to expose them.
co-authored-by: MarioRobres <mrobres@opennebula.io>
co-authored-by: Pavel Czerny <pczerny@opennebula.io>
co-authored-by: Mirko Stojiljkovic <mstojiljkovic@opennebula.io>
co-authored-by: Valentyn Bohdan <vbohdan@opennebula.io>
track the ports in use in the cluster and avoid port collision. VNC ports are
assigned when the VM is deployed and released when the VM is stopped, undeployed
or done.
Includes the following:
- 9da66150dc0e3dc2731518d8a215f9598696a999
- 4c35a9fcccf70cbe87d2947403ea815967e7b605
- ccfccb6d2fc40aa1c07eb994f37b8da4fb479082
- b1b64e61a39f4452c7ba00e581de42888e0e84a5
- d474ee4db9ed520bcae743d510be35b25ea988ed
- dacb61b1402da2ec309b6e79bdd285d0d11de84f
methods. ACL filter is generated in the ClusterPool class, moved DB name
to private scope. Copy constructor for object collection. Uniform
get_cluster_id function.
When the end_id of pool.info xmlrpc call is lower than -1 the parameters
do not refer to object ids but offset and cuantity used for pool pagination.r
The SQL query will have "LIMIT start_id,-end_id".
The cluster id -1 is used to indicate objects that can be clustered,
but are not assigned to any cluster. The new methods to remove objects
from their current datastore actually set this 'none' or -1 cluster
ID.
VNets are always created in this 'none' cluster. Hosts and DS require
a cluster ID to be placed when allocated, and the ruby OCA by default
sets it to 'none'
* Chown method: destination user and group are checked, auth. manager request used.
* New one.group.chown method.
* New ObjectCollection class to store sets of IDs.
* New RM user.addgroup user.delgroup methods, users and groups store a cross-reference ID set.
* Clusters store a set of Host IDs. The RM part of the add/remove host functionality works, but should be re-done to avoid deadlocks.
* Fix onedb schmea for template_pool table bug.