b98100fe0c
Currently when multiple services share a host, the restart order is random. This is due to an unordered dict being used to facilitate the mapping of services to their groups, names and other options. Based on [1], this patch implements changes to the role to ensure that services on the same host are restarted in the correct order when the software/config changes. [1] https://docs.openstack.org/developer/cinder/upgrade.html#minimal-downtime-upgrade-procedure Change-Id: If5729671cb69f928df660ec2d9ba83fe3f567946
50 lines
1.8 KiB
YAML
50 lines
1.8 KiB
YAML
---
|
|
# Copyright 2017, Rackspace US, Inc.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
#
|
|
# Compile a list of the distro packages to install based on
|
|
# whether the host is in the host group and the service is
|
|
# enabled.
|
|
#
|
|
cinder_package_list: |-
|
|
{% set packages = cinder_distro_packages %}
|
|
{% if cinder_services['cinder-volume']['group'] in group_names %}
|
|
{% set _ = packages.extend(cinder_volume_distro_packages) %}
|
|
{% if cinder_backend_lvm_inuse | bool %}
|
|
{% set _ = packages.extend(cinder_lvm_volume_distro_packages) %}
|
|
{% endif %}
|
|
{% endif %}
|
|
{% if cinder_developer_mode | bool %}
|
|
{% set _ = packages.extend(cinder_developer_mode_distro_packages) %}
|
|
{% endif %}
|
|
{{ packages }}
|
|
|
|
#
|
|
# Compile a list of the services on a host based on whether
|
|
# the host is in the host group and the service is enabled.
|
|
# The service list is provided in the defined start order.
|
|
#
|
|
filtered_cinder_services: |-
|
|
{% set services = [] %}
|
|
{% for key, value in cinder_services.items() %}
|
|
{% if (value['group'] in group_names) and
|
|
(('condition' not in value) or
|
|
('condition' in value and value['condition'])) %}
|
|
{% set _ = value.update({'service_key': key}) %}
|
|
{% set _ = services.append(value) %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{{ services | sort(attribute='start_order') }}
|