We need to move TenantRackConstraint to a stand alone module, it should not be
a part of rack affinity constraint. No user impact. This patch also cleans up
and fixes some minor codes in the rack_affinity_constraint and
tenant_rack_constraint modules.
Change-Id: I3dacb3979d5a134817f2502a4f419597e3413180
This adds the ExactVcpuConstraint, ExactRamConstraint, and ExactDiskConstraint
that matches the ExactCoreFilter, ExactRamFilter and ExactDiskFilter in filter
scheduler.
Change-Id: I942e7a6287b5b5927c4271ba56fd5a769ac5e227
This adds the AggregateNumInstancesConstraint that matches NumInstancesFilter
in filter scheduler.
Change-Id: If57070755b9f9a99379008aa519250f80cdb7b4e
This adds the TenantRackAffinityCost, which tends to place instances in the
racks that contain existing instances of the tenant. If a rack has existing
instances of the same tenant as that making request, then the hosts in the
rack will get lower cost value.
Change-Id: Iff9283ebdfb46a44978342430e453c24aea7c3d0
This helps to limit the maximum number of racks that each tenant's VMs can
spread across. The max rack number can be set via config option, and if the
limit is not reached for a tenant the constraint logic will automatically look
for additional rack(s) and mark hosts in the additional rack(s) as available.
Change-Id: I792ac2e0ad75a6df8e8874b159a26760c47cfbd7
This adds two constraint classes, SameRackConstraint and DifferentRackConstraint,
to support rack-based affinity placement functionality, which are similar as the
same/different host constraints but in rack's level.
Change-Id: I4e06ab74808b565da6e93a5817ff095ae97b2c9c
This enables solver scheduler to do soft affinity placement by adding two cost
classes: affinity cost and anti-affinity cost. User can specify scheduler hint
soft_same_host/soft_different_host=<a_list_of_instance_uuids>. The scheduler
will tend to put instances in same/different hosts as those existing instances
specified by user. If no instance uuid is provided, then scheduler should tend
to schedule all requested instances in same/different hosts. The affinity and
anti-affinity costs are not treated as hard restrictions which means if there
is no host that can meet the same/different host requirements then other hosts
may be chosen.
Change-Id: Ie12af12d6e11c1dd815a2b1a81ef5376a02be057
The methods in filters.utils are needed by solver scheduler, this enables the
solvers.utils to extend from the filters.utils in nova scheduler.
Change-Id: Ie13d2f3bd32ec4e25b5e4289a3eebe1c141263a2
This adds a utility module to solver-scheduler's solver directory, together
with a method to get rack configurations from an external config file. This
will be needed by rack based constraints for solver scheduler.
Change-Id: I2f81fc47f374cb90d19dc1a1cafcb3beb76d4bb5
This patch includes the minimum updates needed to fill the gap between solver
scheduler and kilo version of nova. It ensures that solver scheduler's tests
can pass under the kilo's nova environment. The patch does not include changes
that match all features in current nova codes. More changes are needed in the
future to fully port solver scheduler to the current nova version.
The main changes in this patch include:
- Switch from incubated depencies to corresponding oslo_* libraries.
- Minimum and necessary changes in solver_scheduler_host_manager,
solver_scheduler, and several unit testing modules to ensure that tests can
pass in the latest nova environment.
- Removed some unneeded tests which are not compatible with current nova
environment.
- Updated test dependencies to kilo.
TODO:
Future changes should cover all the features/changes in kilo and current nova.
Testings need to be enhanced to ensure the coverage and compatibility to kilo,
current and future nova versions.
Change-Id: Ib37b9361d3824fc12620db72892fcdcd0cab09af
Implements: blueprint update-to-liberty
Add back the missing _get_disk_allocation_ratio() method and related calls
which are supposed to be in disk_constraint.py.
Change-Id: I69fbc02387c9c4735568af126eae6c7d6e2e84f1
The nova solver scheduler was designed to be a drop-in patch for nova, and it
uses 'nova' as the directory now, however it's easier to manage the project
as an individual python package, therefore we want to move the top directory
out to a separate one, which is called 'nova_solverscheduler'. This patch
will modify the module import dependencies and also add necessary init files
so as to turn the project into a complete python package.
Change-Id: I62550c84f157db398da5edbef514832e1351f66f
This patch updates the codes to the latest status at the time of commit.
The updated codes should be compatible with stable icehouse version openstack.
Change-Id: I6d1d3a7da929f0737fbe6279be796e3bb4648991