# == Class: nova::scheduler # # Install and manage nova scheduler # # === Parameters: # # [*enabled*] # (Optional) Whether to run the scheduler service # Defaults to true # # [*manage_service*] # (Optional) Whether to start/stop the service # Defaults to true # # [*ensure_package*] # (Optional) The state of the scheduler package # Defaults to 'present' # # [*workers*] # (Optional) The amount of scheduler workers. # Defaults to $::os_workers # # [*max_attempts*] # (optional) Maximum number of attempts to schedule an instance # Defaults to $::os_service_default # # [*periodic_task_interval*] # (Optional) This value controls how often (in seconds) to run periodic tasks # in the scheduler. The specific tasks that are run for each period are # determined by the particular scheduler being used. # Defaults to $::os_service_default # # [*discover_hosts_in_cells_interval*] # (Optional) This value controls how often (in seconds) the scheduler should # attempt to discover new hosts that have been added to cells. # Defaults to $::os_service_default # # [*query_placement_for_image_type_support*] # (Optional) This setting causes the scheduler to ask placement only for # compute hosts that support the ``disk_format`` of the image used in the # request. # Defaults to $::os_service_default # # [*limit_tenants_to_placement_aggregate*] # (Optional) This setting allows to have tenant isolation with placement. # It ensures hosts in tenant-isolated host aggregate and availability # zones will only be available to specific set of tenants. # Defaults to $::os_service_default # # [*placement_aggregate_required_for_tenants*] # (Optional) This setting controls if a tenant with no aggregate affinity # will be allowed to schedule to any availalbe node when # ``limit_tenants_to_placement_aggregate`` is set to True. # If aggregates are used to limit some tenants but not all, then this should # be False. # If all tenants should be confined via aggregate, then this should be True. # Defaults to $::os_service_default # # [*max_placement_results*] # (Optional) This setting determines the maximum limit on results received # from the placement service during a scheduling operation. # Defaults to $::os_service_default # # [*enable_isolated_aggregate_filtering*] # (Optional) This setting allows the scheduler to restrict hosts in aggregates # based on matching required traits in the aggregate metadata and the instance # flavor/image. # Defaults to $::os_service_default # # [*query_placement_for_availability_zone*] # (Optional) This setting allows the scheduler to look up a host aggregate # with metadata key of availability zone set to the value provided by # incoming request, and request result from placement be limited to that # aggregate. # Defaults to $::os_service_default # # DEPRECATED PARAMETERS # # [*scheduler_driver*] # (Optional) Default driver to use for the scheduler # Defaults to undef # class nova::scheduler( $enabled = true, $manage_service = true, $ensure_package = 'present', $workers = $::os_workers, $max_attempts = $::os_service_default, $periodic_task_interval = $::os_service_default, $discover_hosts_in_cells_interval = $::os_service_default, $query_placement_for_image_type_support = $::os_service_default, $limit_tenants_to_placement_aggregate = $::os_service_default, $placement_aggregate_required_for_tenants = $::os_service_default, $max_placement_results = $::os_service_default, $enable_isolated_aggregate_filtering = $::os_service_default, $query_placement_for_availability_zone = $::os_service_default, # DEPRECATED PARAMETERS $scheduler_driver = undef, ) { include nova::deps include nova::db include nova::params include nova::availability_zone nova::generic_service { 'scheduler': enabled => $enabled, manage_service => $manage_service, package_name => $::nova::params::scheduler_package_name, service_name => $::nova::params::scheduler_service_name, ensure_package => $ensure_package, } # TODO(tkajinam): Remove this when we remove the deprecated parameters # from the nova::scheduler::filter class $max_attempts_real = pick($::nova::scheduler::filter::scheduler_max_attempts, $max_attempts) $periodic_task_interval_real = pick($::nova::scheduler::filter::periodic_task_interval, $periodic_task_interval) nova_config { 'scheduler/workers': value => $workers; 'scheduler/max_attempts': value => $max_attempts_real; 'scheduler/periodic_task_interval': value => $periodic_task_interval_real; 'scheduler/discover_hosts_in_cells_interval': value => $discover_hosts_in_cells_interval; 'scheduler/query_placement_for_image_type_support': value => $query_placement_for_image_type_support; 'scheduler/limit_tenants_to_placement_aggregate': value => $limit_tenants_to_placement_aggregate; 'scheduler/placement_aggregate_required_for_tenants': value => $placement_aggregate_required_for_tenants; 'scheduler/max_placement_results': value => $max_placement_results; 'scheduler/enable_isolated_aggregate_filtering': value => $enable_isolated_aggregate_filtering; 'scheduler/query_placement_for_availability_zone': value => $query_placement_for_availability_zone; } if $scheduler_driver != undef { warning('The scheduler_driver parameter is deprecated and will be removed \ in a future release') nova_config { 'scheduler/driver': value => $scheduler_driver; } } else { nova_config { 'scheduler/driver': ensure => absent; } } }