Mathieu,

How do you handle issues where compute nodes are associated with multiple aggregates and both aggregates have different values for a particular filter key?

Is that a human-based validation process to ensure you don't have that situation?

Best,
-jay

On 04/30/2018 12:41 PM, Mathieu Gagné wrote:
Hi,

On Sun, Apr 29, 2018 at 5:29 PM, Ed Leafe <e...@leafe.com> wrote:
On Apr 29, 2018, at 1:34 PM, Artom Lifshitz <alifs...@redhat.com> wrote:

Based on that, we can definitely say that SameHostFilter and
DifferentHostFilter do *not* belong in the defaults. In fact, we got
our defaults pretty spot on, based on this admittedly very limited
dataset. The only frequently occurring filter that's not in our
defaults is AggregateInstanceExtraSpecsFilter.

Another data point that might be illuminating is: how many sites use a custom 
(i.e., not in-tree) filter or weigher? One of the original design tenets of the 
scheduler was that we did not want to artificially limit what people could use 
to control their deployments, but inside of Nova there is a lot of confusion as 
to whether anyone is using anything but the included filters.

So - does anyone out there rely on a filter and/or weigher that they wrote 
themselves, and maintain outside of OpenStack?

Yes and we have a bunch.

Here are our filters and weighers with explanations.

Filters for cells:
* InstanceTypeClassFilter [0]

Filters for cloud/virtual cells:
* RetryFilter
* AvailabilityZoneFilter
* RamFilter
* ComputeFilter
* AggregateCoreFilter
* ImagePropertiesFilter
* AggregateImageOsTypeIsolationFilter [1]
* AggregateInstanceExtraSpecsFilter
* AggregateProjectsIsolationFilter [2]

Weighers for cloud/virtual cells:
* MetricsWeigher
* AggregateRAMWeigher [3]

Filters for baremetal cells:
* ComputeFilter
* NetworkModelFilter [4]
* TenantFilter [5]
* UserFilter [6]
* RetryFilter
* AvailabilityZoneFilter
* ComputeCapabilitiesFilter
* ImagePropertiesFilter
* ExactRamFilter
* ExactDiskFilter
* ExactCoreFilter

Weighers for baremetal cells:
* ReservedHostForTenantWeigher [7]
* ReservedHostForUserWeigher [8]

[0] Used to scheduler instances based on flavor class found in
extra_specs (virtual/baremetal)
[1] Allows to properly isolated hosts for licensing purposes.
     The upstream filter is not strict as per bugs/reviews/specs:
     * https://bugs.launchpad.net/nova/+bug/1293444
     * https://bugs.launchpad.net/nova/+bug/1677217
     * https://review.openstack.org/#/c/56420/
     * https://review.openstack.org/#/c/85399/
     Our custom implementation for Mitaka:
     https://gist.github.com/mgagne/462e7fa8417843055aa6da7c5fd51c00
[2] Similar filter to AggregateImageOsTypeIsolationFilter but for projects.
     Our custom implementation for Mitaka:
     https://gist.github.com/mgagne/d729ccb512b0434568ffb094441f643f
[3] Allows to change stacking behavior based on the 'ram_weight_multiplier'
     aggregate key. (emptiest/fullest)
     Our custom implementation for Mitaka:
     https://gist.github.com/mgagne/65f033cbc5fdd4c8d1f45e90c943a5f4
[4] Used to filter Ironic nodes based on supported network models as requested
     by flavor extra_specs. We support JIT network configuration (flat/bond) and
     need to know which nodes support what network models beforehand.
[5] Used to filter Ironic nodes based on the 'reserved_for_tenant_id'
Ironic node property.
     This is used to reserve Ironic node to specific projects.
     Some customers order lot of machines in advance. We reserve those for them.
[6] Used to filter Ironic nodes based on the 'reserved_for_user_id'
Ironic node property.
     This is mainly used when enrolling existing nodes already living
on a different system.
     We reserve the node to a special internal user so the customer
cannot reserve
     the node by mistake until the process is completed.
     Latest version of Nova dropped user_id from RequestSpec. We had to
add it back.
[7] Used to favor reserved host over non-reserved ones based on project.
[8] Used to favor reserved host over non-reserved ones based on user.
     Latest version of Nova dropped user_id from RequestSpec. We had to
add it back.

--
Mathieu

__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to