heat_template_version: rocky description: > OpenStack containerized Nova Scheduler service parameters: DockerNovaSchedulerImage: description: image type: string DockerNovaConfigImage: description: The container image to use for the nova config_volume type: string NovaSchedulerLoggingSource: type: json default: tag: openstack.nova.scheduler path: /var/log/containers/nova/nova-scheduler.log EndpointMap: default: {} description: Mapping of service endpoint -> protocol. Typically set via parameter_defaults in the resource registry. type: json ServiceData: default: {} description: Dictionary packing service data type: json ServiceNetMap: default: {} description: Mapping of service_name -> network name. Typically set via parameter_defaults in the resource registry. This mapping overrides those in ServiceNetMapDefaults. type: json DefaultPasswords: default: {} type: json RoleName: default: '' description: Role name on which the service is applied type: string RoleParameters: default: {} description: Parameters specific to the role type: json NovaSchedulerAvailableFilters: default: [] description: List of scheduler available filters type: comma_delimited_list NovaSchedulerDefaultFilters: type: comma_delimited_list default: [] description: > An array of filters used by Nova to filter a node.These filters will be applied in the order they are listed, so place your most restrictive filters first to make the filtering process more efficient. NovaSchedulerMaxAttempts: type: number default: 3 description: > Maximum number of attempts the scheduler will make when deploying the instance. You should keep it greater or equal to the number of bare metal nodes you expect to deploy at once to work around potential race conditions when scheduling. MonitoringSubscriptionNovaScheduler: default: 'overcloud-nova-scheduler' type: string NovaSchedulerDiscoverHostsInCellsInterval: type: number default: -1 description: > This value controls how often (in seconds) the scheduler should attempt to discover new hosts that have been added to cells. The default value of -1 disables the periodic task completely. It is recommended to set this parameter for deployments using Ironic. NovaSchedulerWorkers: default: 0 description: Number of workers for Nova Scheduler services. type: number conditions: nova_scheduler_workers_zero: {equals : [{get_param: NovaSchedulerWorkers}, 0]} resources: ContainersCommon: type: ../containers-common.yaml MySQLClient: type: ../../deployment/database/mysql-client.yaml NovaLogging: type: OS::TripleO::Services::Logging::NovaCommon properties: DockerNovaImage: {get_param: DockerNovaSchedulerImage} NovaServiceName: 'scheduler' NovaBase: type: ./nova-base-puppet.yaml properties: ServiceData: {get_param: ServiceData} ServiceNetMap: {get_param: ServiceNetMap} DefaultPasswords: {get_param: DefaultPasswords} EndpointMap: {get_param: EndpointMap} RoleName: {get_param: RoleName} RoleParameters: {get_param: RoleParameters} outputs: role_data: description: Role data for the Nova Scheduler service. value: service_name: nova_scheduler monitoring_subscription: {get_param: MonitoringSubscriptionNovaScheduler} config_settings: map_merge: - {get_attr: [NovaBase, role_data, config_settings]} - {get_attr: [NovaLogging, config_settings]} - nova::scheduler::filter::scheduler_available_filters: {get_param: NovaSchedulerAvailableFilters} nova::scheduler::filter::scheduler_default_filters: {get_param: NovaSchedulerDefaultFilters} nova::scheduler::filter::scheduler_max_attempts: {get_param: NovaSchedulerMaxAttempts} nova::scheduler::discover_hosts_in_cells_interval: {get_param: NovaSchedulerDiscoverHostsInCellsInterval} - if: - nova_scheduler_workers_zero - {} - nova::scheduler::workers: {get_param: NovaSchedulerWorkers} service_config_settings: fluentd: tripleo_fluentd_groups_nova_scheduler: - nova tripleo_fluentd_sources_nova_scheduler: - {get_param: NovaSchedulerLoggingSource} # BEGIN DOCKER SETTINGS puppet_config: config_volume: nova puppet_tags: nova_config step_config: list_join: - "\n" - - include tripleo::profile::base::nova::scheduler - {get_attr: [MySQLClient, role_data, step_config]} config_image: {get_param: DockerNovaConfigImage} kolla_config: /var/lib/kolla/config_files/nova_scheduler.json: command: list_join: - ' ' - - /usr/bin/nova-scheduler - get_attr: [NovaLogging, cmd_extra_args] config_files: - source: "/var/lib/kolla/config_files/src/*" dest: "/" merge: true preserve_properties: true permissions: - path: /var/log/nova owner: nova:nova recurse: true docker_config: step_4: nova_scheduler: image: {get_param: DockerNovaSchedulerImage} net: host privileged: false restart: always healthcheck: {get_attr: [ContainersCommon, healthcheck_rpc_port]} volumes: list_concat: - {get_attr: [ContainersCommon, volumes]} - {get_attr: [NovaLogging, volumes]} - - /var/lib/kolla/config_files/nova_scheduler.json:/var/lib/kolla/config_files/config.json:ro - /var/lib/config-data/puppet-generated/nova/:/var/lib/kolla/config_files/src:ro - /run:/run environment: - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS host_prep_tasks: list_concat: - {get_attr: [NovaLogging, host_prep_tasks]} - - name: enable virt_sandbox_use_netlink for healthcheck seboolean: name: virt_sandbox_use_netlink persistent: yes state: yes fast_forward_upgrade_tasks: - when: - step|int == 0 - release == 'ocata' block: - name: Check if nova_scheduler is deployed command: systemctl is-enabled --quiet openstack-nova-scheduler ignore_errors: True register: nova_scheduler_enabled_result - name: Set fact nova_scheduler_enabled set_fact: nova_scheduler_enabled: "{{ nova_scheduler_enabled_result.rc == 0 }}" - name: Stop and disable nova-scheduler service service: name=openstack-nova-scheduler state=stopped when: - step|int == 1 - release == 'ocata' - nova_scheduler_enabled|bool post_upgrade_tasks: - when: step|int == 1 import_role: name: tripleo-docker-rm vars: containers_to_rm: - nova_scheduler