Add way to periodically trim Cinder DB

We're adding a service that is responsible for executing db purge.
Service will be deployed by default, but left
stopped/disabled. This way we allow deployers to enable/disable
feature by changing value of cinder_purge_deleted.

Otherwise, when variables set to true once, setting them back to false
won't lead to stopping of DB trimming , so timer would need to be
stopped manually.

Change-Id: Ic5ae8c778bff2858fcb31c85d4b910805e452c3f
This commit is contained in:
Dmitriy Rabotyagov 2023-04-20 16:02:10 +02:00 committed by Dmitriy Rabotyagov
parent 1732bff64b
commit f16036e1f1
3 changed files with 53 additions and 0 deletions

View File

@ -459,3 +459,13 @@ cinder_pki_install_certificates:
# Define user-provided SSL certificates
#cinder_user_ssl_cert: <path to cert on ansible deployment host>
#cinder_user_ssl_key: <path to cert on ansible deployment host>
# Database cleanup
# Periodically purge shadow tables, where archived records are stored
cinder_purge_deleted: False
# When to start purge task.
cinder_purge_deleted_on_calendar: "*-*-* 01:00:00"
# Purge events that are older then the number of days below.
cinder_purge_deleted_before_days: "364"
# Delay the timer by a randomly selected amount of time.
cinder_purge_deleted_randomized_delay_sec: 0

View File

@ -0,0 +1,12 @@
---
features:
- |
Added option to periodically clean-up deleted records from Cinder
database.
For this purpose a new service``cinder-purge-deleted`` was introduced.
It will be called periodically using corresponsive systemd timer on the
first cinder-api host.
By default this service is disabled/stopped and database cleanup
is not performed. You can enable this behaviour by defining variable
``cinder_purge_deleted``.

View File

@ -248,3 +248,34 @@
- "_cinder_is_last_play_host"
tags:
- cinder-config
- name: Create service and timer for archiving deleted records
include_role:
name: systemd_service
vars:
systemd_service_restart_changed: false
systemd_user_name: "{{ cinder_system_user_name }}"
systemd_group_name: "{{ cinder_system_group_name }}"
systemd_tempd_prefix: openstack
systemd_slice_name: "{{ cinder_system_slice_name }}"
systemd_lock_dir: "{{ cinder_lock_dir }}"
systemd_services:
- service_name: "cinder-purge-deleted"
execstarts:
- "{{ cinder_bin }}/cinder-manage db purge {{ cinder_purge_deleted_before_days }}"
environment:
UMASK: '0640'
UMASK_DIR: '0750'
program_sandboxing:
RuntimeDirectory: 'cinder-purge-deleted'
enabled: "{{ cinder_purge_deleted }}"
timer:
state: "{{ cinder_purge_deleted | ternary('started', 'stopped') }}"
enabled: "{{ cinder_purge_deleted }}"
options:
OnCalendar: "{{ cinder_purge_deleted_on_calendar }}"
RandomizedDelaySec: "{{ cinder_purge_deleted_randomized_delay_sec }}"
Persistent: true
Unit: "cinder-purge-deleted.service"
when:
- inventory_hostname == groups[cinder_services['cinder-api']['group']] | first