Implement support for cinder qos specs
Currently, there is no support for creating qos specs and associations in cinder. This patch enables deployers to create qos specs and associate them to any desired cinder volume-types. Change-Id: I5d493fb3987849f071c6df5241466c993009389b
This commit is contained in:
parent
0c518f1b58
commit
dc055ee999
@ -265,8 +265,25 @@ cinder_services:
|
||||
# by the py_pkgs lookup.
|
||||
cinder_role_project_group: cinder_all
|
||||
|
||||
# Define the following dictionary variable to enable qos settings on volumes.
|
||||
# cinder_qos_specs
|
||||
# - name: high-iops
|
||||
# options:
|
||||
# consumer: front-end
|
||||
# read_iops_sec: 2000
|
||||
# write_iops_sec: 2000
|
||||
# cinder_volume_types:
|
||||
# - volumes-1
|
||||
# - volumes-2
|
||||
# - name: low-iops
|
||||
# options:
|
||||
# consumer: front-end
|
||||
# write_iops_sec: 100
|
||||
|
||||
## Tunable overrides
|
||||
cinder_policy_overrides: {}
|
||||
cinder_rootwrap_conf_overrides: {}
|
||||
cinder_api_paste_ini_overrides: {}
|
||||
cinder_cinder_conf_overrides: {}
|
||||
|
||||
_UUID_regex: "[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}"
|
||||
|
@ -461,3 +461,27 @@ each storage node that will use it.
|
||||
The ``cinder-volume.yml`` playbook will automatically install the
|
||||
``nfs-common`` file across the hosts, transitioning from an LVM to a
|
||||
NetApp back end.
|
||||
|
||||
Configuring cinder qos specs
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Deployers may optionally define the variable ``cinder_qos_specs``
|
||||
to create qos specs. This variable is a list of dictionaries that
|
||||
contain the options for each qos spec. cinder volume-types may be
|
||||
assigned to a qos spec by defining the key ``cinder_volume_types`` in
|
||||
the desired qos spec dictionary.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
- name: high-iops
|
||||
options:
|
||||
consumer: front-end
|
||||
read_iops_sec: 2000
|
||||
write_iops_sec: 2000
|
||||
cinder_volume_types:
|
||||
- volumes-1
|
||||
- volumes-2
|
||||
- name: low-iops
|
||||
options:
|
||||
consumer: front-end
|
||||
write_iops_sec: 100
|
||||
|
5
releasenotes/notes/qos-support-1c601862ab2f9825.yaml
Normal file
5
releasenotes/notes/qos-support-1c601862ab2f9825.yaml
Normal file
@ -0,0 +1,5 @@
|
||||
---
|
||||
features:
|
||||
- Deployers can now define the varible ``cinder_qos_specs``
|
||||
to create qos specs and assign those specs to desired
|
||||
cinder volume types.
|
@ -42,3 +42,9 @@
|
||||
{% endfor %}
|
||||
with_dict: "{{ cinder_backends|default({}) }}"
|
||||
when: item.value.extra_volume_types is defined
|
||||
|
||||
- include: cinder_qos.yml
|
||||
static: no
|
||||
when: cinder_qos_specs is defined
|
||||
tags:
|
||||
- cinder-qos
|
||||
|
39
tasks/cinder_qos.yml
Normal file
39
tasks/cinder_qos.yml
Normal file
@ -0,0 +1,39 @@
|
||||
---
|
||||
# Copyright 2016, Walmart Stores, 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.
|
||||
|
||||
- name: Add in cinder qos types
|
||||
shell: |
|
||||
. {{ ansible_env.HOME }}/openrc
|
||||
{{ cinder_bin }}/cinder qos-list | grep {{ item.name }} || \
|
||||
{{ cinder_bin }}/cinder qos-create {{ item.name }}\
|
||||
{% for k,v in item.options.iteritems() %} {{ k }}={{ v }}{% endfor %}
|
||||
with_items: cinder_qos_specs
|
||||
tags:
|
||||
- cinder-qos
|
||||
|
||||
- name: Associate qos types to volume types
|
||||
shell: |
|
||||
. {{ ansible_env.HOME }}/openrc
|
||||
{% for vtype in item.cinder_volume_types %}
|
||||
{{ cinder_bin }}/cinder qos-associate \
|
||||
$({{ cinder_bin }}/cinder qos-list | grep {{ item.name }} | grep -oE "{{ _UUID_regex }}") \
|
||||
$({{ cinder_bin }}/cinder type-list | grep {{ vtype }} | grep -oE "{{ _UUID_regex }}")
|
||||
{% endfor %}
|
||||
with_items: cinder_qos_specs
|
||||
when:
|
||||
- item.cinder_volume_types is defined
|
||||
tags:
|
||||
- cinder-qos
|
||||
- cinder-qos-associate
|
Loading…
Reference in New Issue
Block a user