Takashi Kajinami 71349de023 Enable DB purge cron job after database is initialized
The DB purge operation expects the target database is already
initialized. This change ensures db sync is completed before cron job
is enabled.

Closes-Bug: #1955829
Change-Id: I389d966623894c23fe596bec9e4942f3beee8303
2021-12-27 23:57:57 +09:00

92 lines
2.5 KiB
Puppet

#
# Copyright (C) 2015 Red Hat Inc.
#
# Author: Martin Magr <mmagr@redhat.com>
#
# 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.
#
# == Class: cinder::cron::db_purge
#
# Move deleted instances to another table that you don't have to backup
# unless you have data retention policies.
#
# === Parameters
#
# [*minute*]
# (optional) Defaults to '1'.
#
# [*hour*]
# (optional) Defaults to '0'.
#
# [*monthday*]
# (optional) Defaults to '*'.
#
# [*month*]
# (optional) Defaults to '*'.
#
# [*weekday*]
# (optional) Defaults to '*'.
#
# [*user*]
# (optional) User with access to cinder files.
# Defaults to 'cinder'.
#
# [*age*]
# (optional) Number of days prior to today for deletion,
# e.g. value 60 means to purge deleted rows that have the "deleted_at"
# column greater than 60 days ago.
# Defaults to 30
#
# [*destination*]
# (optional) Path to file to which rows should be archived
# Defaults to '/var/log/cinder/cinder-rowsflush.log'.
#
# [*maxdelay*]
# (optional) In Seconds. Should be a positive integer.
# Induces a random delay before running the cronjob to avoid running
# all cron jobs at the same time on all hosts this job is configured.
# Defaults to 0.
#
class cinder::cron::db_purge (
$minute = 1,
$hour = 0,
$monthday = '*',
$month = '*',
$weekday = '*',
$user = 'cinder',
$age = 30,
$destination = '/var/log/cinder/cinder-rowsflush.log',
$maxdelay = 0
) {
include cinder::deps
if $maxdelay == 0 {
$sleep = ''
} else {
$sleep = "sleep `expr \${RANDOM} \\% ${maxdelay}`; "
}
cron { 'cinder-manage db purge':
command => "${sleep}cinder-manage db purge ${age} >>${destination} 2>&1",
environment => 'PATH=/bin:/usr/bin:/usr/sbin SHELL=/bin/sh',
user => $user,
minute => $minute,
hour => $hour,
monthday => $monthday,
month => $month,
weekday => $weekday,
require => Anchor['cinder::dbsync::end'],
}
}