Move databases creation and sync with the role

This change moves the database creation and sync with the role
profile, so that it's only executed when the role is enabled and
by the role itself.

It also calls the non-pacemaker profiles out of the 'step'
conditional because the non-pacemaker profiles know how to deal with
'step' already.

Change-Id: I6c752cb53090e7ef8e0319bade462f2453ed7660
Related-Bug: 1572952
This commit is contained in:
Giulio Fidente 2016-04-22 16:45:56 +02:00
parent 1b13c57364
commit e284e21405
6 changed files with 32 additions and 221 deletions

View File

@ -1,132 +0,0 @@
# Copyright 2016 Red Hat, 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.
#
# == Class: tripleo::profile::base::database::schemas
#
# OpenStack Database Schema profile for tripleo
#
# === Parameters
#
# [*step*]
# (Optional) The current deployment step
# Defaults to hiera('step')
#
# [*ceilometer_backend*]
# (Optional) The backend used by ceilometer, usually either 'mysql'
# or 'mongodb'
# Defaults to hiera('ceilometer_backend')
#
# [*enable_aodh*]
# (Optional) Whether to create schemas for Aodh
# Defaults to true
#
# [*enable_ceilometer*]
# (Optional) Whether to create schemas for Ceilometer
# Defaults to true
#
# [*enable_cinder*]
# (Optional) Whether to create schemas for Cinder
# Defaults to true
#
# [*enable_heat*]
# (Optional) Whether to create schemas for Heat
# Defaults to true
#
# [*enable_keystone*]
# (Optional) Whether to create schemas for Keystone
# Defaults to true
#
# [*enable_glance*]
# (Optional) Whether to create schemas for Glance
# Defaults to true
#
# [*enable_gnocchi*]
# (Optional) Whether to create schemas for Gnocchi
# Defaults to true
#
# [*enable_nova*]
# (Optional) Whether to create schemas for Nova
# Defaults to true
#
# [*enable_neutron*]
# (Optional) Whether to create schemas for Neutron
# Defaults to true
#
# [*enable_sahara*]
# (Optional) Whether to create schemas for Sahara
# Defaults to true
#
# [*gnocchi_indexer_backend*]
# (Optional) Type of backend used as Gnocchi indexer
# Defaults to hiera('gnocchi_indexer_backend')
#
class tripleo::profile::base::database::schemas (
$step = hiera('step'),
$ceilometer_backend = hiera('ceilometer_backend'),
$enable_aodh = true,
$enable_ceilometer = true,
$enable_cinder = true,
$enable_heat = true,
$enable_keystone = true,
$enable_glance = true,
$enable_gnocchi = true,
$enable_nova = true,
$enable_neutron = true,
$enable_sahara = true,
$gnocchi_indexer_backend = hiera('gnocchi_indexer_backend'),
) {
if $step >= 2 {
if downcase($ceilometer_backend) == 'mysql' {
if $enable_ceilometer {
include ::ceilometer::db::mysql
}
if $enable_aodh {
include ::aodh::db::mysql
}
}
if $enable_gnocchi and downcase($gnocchi_indexer_backend) == 'mysql' {
include ::gnocchi::db::mysql
}
if $enable_cinder {
include ::cinder::db::mysql
}
if $enable_keystone {
include ::keystone::db::mysql
}
if $enable_glance {
include ::glance::db::mysql
}
if $enable_nova {
include ::nova::db::mysql
include ::nova::db::mysql_api
}
if $enable_neutron {
include ::neutron::db::mysql
}
if $enable_heat {
include ::heat::db::mysql
}
if $enable_sahara {
include ::sahara::db::mysql
}
}
}

View File

@ -20,7 +20,7 @@
#
# [*sync_db*]
# (Optional) Whether to run db sync
# Defaults to undef
# Defaults to true
#
# [*manage_service*]
# (Optional) Whether to manage the glance service
@ -40,14 +40,18 @@
# Defaults to downcase(hiera('glance_backend', 'swift'))
#
class tripleo::profile::base::glance::registry (
$sync_db = undef,
$sync_db = true,
$manage_service = undef,
$enabled = undef,
$step = hiera('step'),
$glance_backend = downcase(hiera('glance_backend', 'swift')),
) {
if $step >= 4 {
if $step >= 2 and $sync_db {
include ::glance::db::mysql
}
if $step >= 4 or ( $step >= 3 and $sync_db ) {
# TODO: notifications, scrubber, etc.
include ::glance
include ::glance::config

View File

@ -20,7 +20,7 @@
#
# [*sync_db*]
# (Optional) Whether to run db sync
# Defaults to undef
# Defaults to true
#
# [*manage_service*]
# (Optional) Whether to manage the keystone service
@ -52,7 +52,7 @@
# Defaults to hiera('step')
#
class tripleo::profile::base::keystone (
$sync_db = undef,
$sync_db = true,
$manage_service = undef,
$enabled = undef,
$bootstrap_master = undef,
@ -62,7 +62,11 @@ class tripleo::profile::base::keystone (
$step = hiera('step'),
) {
if $step >= 4 {
if $step >= 2 and $sync_db {
include ::keystone::db::mysql
}
if $step >= 4 or ( $step >= 3 and $sync_db ) {
class { '::keystone':
sync_db => $sync_db,
manage_service => $manage_service,

View File

@ -1,65 +0,0 @@
# Copyright 2016 Red Hat, 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.
#
# == Class: tripleo::profile::base::pacemaker::schemas
#
# OpenStack Database Schema Pacemaker HA profile for tripleo
#
# === Parameters
#
# [*step*]
# (Optional) The current deployment step
# Defaults to hiera('step')
#
# [*ceilometer_backend*]
# (Optional) The backend used by ceilometer, usually either 'mysql'
# or 'mongodb'
# Defaults to hiera('ceilometer_backend')
#
# [*gnocchi_indexer_backend*]
# (Optional) Type of backend used as Gnocchi indexer
# Defaults to hiera('gnocchi_indexer_backend')
#
# [*pacemaker_master*]
# (Optional) The hostname of the pacemaker master in this cluster
# Defaults to hiera('bootstrap_nodeid')
#
class tripleo::profile::pacemaker::database::schemas (
$step = hiera('step'),
$ceilometer_backend = hiera('ceilometer_backend'),
$gnocchi_indexer_backend = hiera('gnocchi_indexer_backend'),
$pacemaker_master = hiera('bootstrap_nodeid')
) {
if downcase($pacemaker_master) == $::hostname and $step >= 2 {
include ::tripleo::profile::base::database::schemas
if downcase($ceilometer_backend) == 'mysql' {
Exec['galera-ready'] -> Class['::ceilometer::db::mysql']
Exec['galera-ready'] -> Class['::aodh::db::mysql']
}
if downcase($gnocchi_indexer_backend) == 'mysql' {
Exec['galera-ready'] -> Class['::gnocchi::db::mysql']
}
Exec['galera-ready'] -> Class['::cinder::db::mysql']
Exec['galera-ready'] -> Class['::glance::db::mysql']
Exec['galera-ready'] -> Class['::keystone::db::mysql']
Exec['galera-ready'] -> Class['::nova::db::mysql']
Exec['galera-ready'] -> Class['::nova::db::mysql_api']
Exec['galera-ready'] -> Class['::neutron::db::mysql']
Exec['galera-ready'] -> Class['::heat::db::mysql']
Exec['galera-ready'] -> Class['::sahara::db::mysql']
}
}

View File

@ -68,16 +68,17 @@ class tripleo::profile::pacemaker::glance (
$pacemaker_master = false
}
class { '::tripleo::profile::base::glance::api':
manage_service => false,
enabled => false,
}
class { '::tripleo::profile::base::glance::registry':
sync_db => $pacemaker_master,
manage_service => false,
enabled => false,
}
if $step >= 4 {
class { '::tripleo::profile::base::glance::api':
manage_service => false,
enabled => false,
}
class { '::tripleo::profile::base::glance::registry':
sync_db => $pacemaker_master,
manage_service => false,
enabled => false,
}
if $glance_backend == 'file' and $glance_file_pcmk_manage {
$secontext = 'context="system_u:object_r:glance_var_lib_t:s0"'
pacemaker::resource::filesystem { 'glance-fs':

View File

@ -51,15 +51,13 @@ class tripleo::profile::pacemaker::keystone (
$manage_roles = false
}
if $step >= 4 {
class { '::tripleo::profile::base::keystone':
sync_db => $pacemaker_master,
manage_service => false,
enabled => false,
bootstrap_master => $pacemaker_master,
manage_roles => $manage_roles,
manage_endpoint => $manage_roles
}
class { '::tripleo::profile::base::keystone':
sync_db => $pacemaker_master,
manage_service => false,
enabled => false,
bootstrap_master => $pacemaker_master,
manage_roles => $manage_roles,
manage_endpoint => $manage_roles
}
if $step >= 5 and $pacemaker_master and $enable_load_balancer {
@ -85,4 +83,5 @@ class tripleo::profile::pacemaker::keystone (
Pacemaker::Resource::Ocf['openstack-core']],
}
}
}