Scheduler Filters
The nova scheduler has a bunch of filters. See here: http://docs.openstack.org/developer/nova/devref/filter_scheduler.htmlL
This is a quick summary of the filters in grizzly:
* affinity_filter.py - Don't put instances in a set on the same host * aggregate_instance_extra_specs.py - Only build no hosts that support the desired instance type * aggregate_multitenancy_isolation.py - This host is reserved for 'tenant_id'; only his vms can go here * all_hosts_filter.py - All hosts are good, yippee! * availability_zone_filter.py - Can only build in hosts that are in the desired 'availability_zone' * compute_capabilities_filter.py - Check that vm's 'extra_specs' match hosts 'capabilities' * compute_filter.py - Only build on active compute nodes * core_filter.py - Only if we have enough cpu cores free * disk_filter.py - Only if we have enough disk space free * extra_specs_ops.py - NOT A FILTER - defines operators for compute_capabilities_filter, like >= * image_props_filter.py - Checks the requirement of the VM image on architecture, hypervisor type, or virtual machine mode properties * io_ops_filter.py - Don't build on hosts that are doing too much disk IO right now * isolated_hosts_filter.py - Lets you specify a list of 'isolated' images and 'isolated' hosts. If image is in the list, host has to be in the list too, and vice versa. * json_filter.py - Lets you make up your own filter using JSON in the configuration options * num_instances_filter.py - Don't build if host has > X instances * ram_filter.py - Don't build if there isn't enough free RAM * retry_filter.py - Don't try to build if we already tried on this host * trusted_filter.py - Only build in trusted compute pools * type_filter.py - Only allow one instance type per host, eg. All VMs must be 512 MB size