From bb1e3e67dca21cf1eb15ce6b822aaf87d1c82fa3 Mon Sep 17 00:00:00 2001 From: Matt Fischer Date: Tue, 19 Jul 2016 14:54:58 -0600 Subject: [PATCH] Cinder hooks support This code moves all deps to an external class so that Cinder can be installed with mechanisms besides packages (like venv or docker). This also cleans-up the dependency tree by removing false or confusing dependencies. Co-Author: Craig Delatte Change-Id: I55a62f6173fe463fb8fb65df6729c9f509a0fb04 --- lib/puppet/type/cinder_api_paste_ini.rb | 4 +- lib/puppet/type/cinder_config.rb | 5 +- lib/puppet/type/cinder_type.rb | 5 +- manifests/api.pp | 9 +-- manifests/backend/bdd.pp | 23 +++--- manifests/backend/dellsc_iscsi.pp | 2 + manifests/backend/emc_vnx.pp | 1 + manifests/backend/eqlx.pp | 2 + manifests/backend/glusterfs.pp | 6 +- manifests/backend/gpfs.pp | 2 + manifests/backend/hp3par_iscsi.pp | 2 + manifests/backend/hpe3par_iscsi.pp | 2 + manifests/backend/iscsi.pp | 21 +++--- manifests/backend/netapp.pp | 6 +- manifests/backend/nexenta.pp | 2 + manifests/backend/nfs.pp | 6 +- manifests/backend/pure.pp | 2 + manifests/backend/quobyte.pp | 2 + manifests/backend/rbd.pp | 3 +- manifests/backend/san.pp | 2 + manifests/backend/solidfire.pp | 2 + manifests/backend/vmdk.pp | 5 +- manifests/backends.pp | 2 + manifests/backup.pp | 7 +- manifests/backup/ceph.pp | 2 + manifests/backup/glusterfs.pp | 2 + manifests/backup/google.pp | 2 + manifests/backup/nfs.pp | 1 + manifests/backup/posix.pp | 2 + manifests/backup/swift.pp | 2 + manifests/backup/tsm.pp | 2 + manifests/ceilometer.pp | 2 + manifests/client.pp | 3 +- manifests/config.pp | 3 + manifests/cron/db_purge.pp | 4 +- manifests/db.pp | 2 + manifests/db/mysql.pp | 6 +- manifests/db/postgresql.pp | 7 +- manifests/db/sync.pp | 14 ++-- manifests/deps.pp | 73 +++++++++++++++++++ manifests/glance.pp | 2 + manifests/init.pp | 12 +-- manifests/keystone/auth.pp | 10 ++- manifests/logging.pp | 2 + manifests/policy.pp | 3 + manifests/quota.pp | 2 + manifests/quota_set.pp | 4 +- manifests/rabbitmq.pp | 4 +- manifests/scheduler.pp | 7 +- manifests/scheduler/filter.pp | 2 + manifests/setup_test_volume.pp | 9 ++- manifests/type.pp | 2 + manifests/type_set.pp | 2 + manifests/vmware.pp | 2 + manifests/volume.pp | 8 +- manifests/volume/dellsc_iscsi.pp | 2 + manifests/volume/emc_vnx.pp | 2 + manifests/volume/eqlx.pp | 2 + manifests/volume/glusterfs.pp | 2 + manifests/volume/gpfs.pp | 2 + manifests/volume/hp3par_iscsi.pp | 2 + manifests/volume/hpe3par_iscsi.pp | 2 + manifests/volume/iscsi.pp | 1 + manifests/volume/netapp.pp | 2 + manifests/volume/nexenta.pp | 2 + manifests/volume/nfs.pp | 2 + manifests/volume/pure.pp | 2 + manifests/volume/quobyte.pp | 2 + manifests/volume/rbd.pp | 2 + manifests/volume/san.pp | 2 + manifests/volume/solidfire.pp | 2 + manifests/volume/vmdk.pp | 2 + manifests/wsgi/apache.pp | 2 + ...ternal_hooks_support-473735fcfe15bc5d.yaml | 5 ++ spec/classes/cinder_backup_spec.rb | 1 - spec/classes/cinder_client_spec.rb | 2 +- spec/classes/cinder_cron_db_purge_spec.rb | 2 +- spec/classes/cinder_scheduler_spec.rb | 3 - spec/classes/cinder_setup_test_volume_spec.rb | 1 - spec/classes/cinder_volume_glusterfs_spec.rb | 4 +- spec/classes/cinder_volume_iscsi_spec.rb | 1 - spec/classes/cinder_volume_nfs_spec.rb | 4 +- spec/classes/cinder_volume_rbd_spec.rb | 4 +- spec/defines/cinder_backend_glusterfs_spec.rb | 4 +- spec/defines/cinder_backend_nfs_spec.rb | 4 +- spec/defines/cinder_backend_rbd_spec.rb | 4 +- spec/defines/cinder_quota_set_spec.rb | 2 +- spec/unit/type/cinder_api_paste_spec.rb | 6 +- spec/unit/type/cinder_config_spec.rb | 6 +- spec/unit/type/cinder_type_spec.rb | 6 +- 90 files changed, 293 insertions(+), 122 deletions(-) create mode 100644 manifests/deps.pp create mode 100644 releasenotes/notes/external_hooks_support-473735fcfe15bc5d.yaml diff --git a/lib/puppet/type/cinder_api_paste_ini.rb b/lib/puppet/type/cinder_api_paste_ini.rb index ca2e0457..0212e96a 100644 --- a/lib/puppet/type/cinder_api_paste_ini.rb +++ b/lib/puppet/type/cinder_api_paste_ini.rb @@ -45,8 +45,8 @@ Puppet::Type.newtype(:cinder_api_paste_ini) do defaultto('') end - autorequire(:package) do - 'cinder' + autorequire(:anchor) do + ['cinder::install::end'] end end diff --git a/lib/puppet/type/cinder_config.rb b/lib/puppet/type/cinder_config.rb index 3eb3a1f9..cfe29bb9 100644 --- a/lib/puppet/type/cinder_config.rb +++ b/lib/puppet/type/cinder_config.rb @@ -46,8 +46,7 @@ Puppet::Type.newtype(:cinder_config) do defaultto('') end - autorequire(:package) do - 'cinder' + autorequire(:anchor) do + ['cinder::install::end'] end - end diff --git a/lib/puppet/type/cinder_type.rb b/lib/puppet/type/cinder_type.rb index 8976f9ee..67ac5daf 100644 --- a/lib/puppet/type/cinder_type.rb +++ b/lib/puppet/type/cinder_type.rb @@ -19,8 +19,7 @@ Puppet::Type.newtype(:cinder_type) do end end - autorequire(:service) do - 'cinder-api' + autorequire(:anchor) do + ['cinder::service::end'] end - end diff --git a/manifests/api.pp b/manifests/api.pp index ab3f621a..c988caa6 100644 --- a/manifests/api.pp +++ b/manifests/api.pp @@ -236,6 +236,7 @@ class cinder::api ( $memcached_servers = undef, ) inherits cinder::params { + include ::cinder::deps include ::cinder::params include ::cinder::policy @@ -283,14 +284,7 @@ class cinder::api ( } } - Cinder_config<||> ~> Service[$service_name] - Cinder_api_paste_ini<||> ~> Service[$service_name] - Class['cinder::policy'] ~> Service[$service_name] - if $::cinder::params::api_package { - Package['cinder-api'] -> Class['cinder::policy'] - Package['cinder-api'] -> Service[$service_name] - Package['cinder-api'] ~> Exec<| title == 'cinder-manage db_sync' |> package { 'cinder-api': ensure => $package_ensure, name => $::cinder::params::api_package, @@ -318,7 +312,6 @@ class cinder::api ( name => $::cinder::params::api_service, enable => $enabled, hasstatus => true, - require => Package['cinder'], tag => 'cinder-service', } diff --git a/manifests/backend/bdd.pp b/manifests/backend/bdd.pp index b2c97900..2ec991e6 100644 --- a/manifests/backend/bdd.pp +++ b/manifests/backend/bdd.pp @@ -77,6 +77,7 @@ define cinder::backend::bdd ( $extra_options = {}, ) { + include ::cinder::deps include ::cinder::params cinder_config { @@ -104,32 +105,34 @@ define cinder::backend::bdd ( 'tgtadm': { ensure_packages('tgt', { ensure => present, - name => $::cinder::params::tgt_package_name}) + name => $::cinder::params::tgt_package_name, + tag => 'cinder-support-package'}) ensure_resource('service', 'tgtd', { - ensure => running, - name => $::cinder::params::tgt_service_name, - require => Package['tgt']}) + ensure => running, + name => $::cinder::params::tgt_service_name, + tag => 'cinder-support-service'}) if($::osfamily == 'RedHat') { ensure_resource('file_line', 'cinder include', { path => '/etc/tgt/targets.conf', line => "include ${volumes_dir}/*", match => '#?include /', - require => Package['tgt'], - notify => Service['tgtd']}) + require => Anchor['cinder::install:end'], + notify => Anchor['cinder::service::begin']}) } } 'lioadm': { ensure_packages('targetcli', { ensure => present, - name => $::cinder::params::lio_package_name}) + name => $::cinder::params::lio_package_name, + tag => 'cinder-support-package'}) ensure_resource('service', 'target', { - ensure => running, - enable => true, - require => Package['targetcli']}) + ensure => running, + enable => true, + tag => 'cinder-support-service'}) } default: { diff --git a/manifests/backend/dellsc_iscsi.pp b/manifests/backend/dellsc_iscsi.pp index f860d52c..924cd9cb 100644 --- a/manifests/backend/dellsc_iscsi.pp +++ b/manifests/backend/dellsc_iscsi.pp @@ -71,6 +71,8 @@ define cinder::backend::dellsc_iscsi ( $extra_options = {}, ) { + include ::cinder::deps + if $dell_sc_server_folder == 'srv' { warning('The OpenStack default value of dell_sc_server_folder differs from the puppet module default of "srv" and will be changed to the upstream OpenStack default in N-release.') } diff --git a/manifests/backend/emc_vnx.pp b/manifests/backend/emc_vnx.pp index af8557ed..01e42e63 100644 --- a/manifests/backend/emc_vnx.pp +++ b/manifests/backend/emc_vnx.pp @@ -91,6 +91,7 @@ define cinder::backend::emc_vnx ( $manage_volume_type = false, ) { + include ::cinder::deps include ::cinder::params cinder_config { diff --git a/manifests/backend/eqlx.pp b/manifests/backend/eqlx.pp index 44593713..041a3fbf 100644 --- a/manifests/backend/eqlx.pp +++ b/manifests/backend/eqlx.pp @@ -102,6 +102,8 @@ define cinder::backend::eqlx ( $eqlx_cli_timeout = undef, ) { + include ::cinder::deps + if $eqlx_chap_login { warning('eqlx_chap_login is deprecated and will be removed after Newton cycle. Please use chap_username instead.') $chap_username_real = $eqlx_chap_login diff --git a/manifests/backend/glusterfs.pp b/manifests/backend/glusterfs.pp index c28fec13..d3fb77cc 100644 --- a/manifests/backend/glusterfs.pp +++ b/manifests/backend/glusterfs.pp @@ -65,12 +65,14 @@ define cinder::backend::glusterfs ( $extra_options = {}, ) { + include ::cinder::deps + $content = join($glusterfs_shares, "\n") file { $glusterfs_shares_config: content => "${content}\n", - require => Package['cinder'], - notify => Service['cinder-volume'] + require => Anchor['cinder::install::end'], + notify => Anchor['cinder::service::begin'], } cinder_config { diff --git a/manifests/backend/gpfs.pp b/manifests/backend/gpfs.pp index 72303971..e8d09cdb 100644 --- a/manifests/backend/gpfs.pp +++ b/manifests/backend/gpfs.pp @@ -100,6 +100,8 @@ define cinder::backend::gpfs ( $extra_options = {}, ) { + include ::cinder::deps + if ! ($gpfs_images_share_mode in ['copy', 'copy_on_write', $::os_service_default]) { fail('gpfs_images_share_mode only support `copy` or `copy_on_write`') } diff --git a/manifests/backend/hp3par_iscsi.pp b/manifests/backend/hp3par_iscsi.pp index a7f66b29..92975373 100644 --- a/manifests/backend/hp3par_iscsi.pp +++ b/manifests/backend/hp3par_iscsi.pp @@ -83,6 +83,8 @@ define cinder::backend::hp3par_iscsi( $extra_options = {}, ) { + include ::cinder::deps + if ($hp3par_snapshot_expiration <= $hp3par_snapshot_retention) { fail ('hp3par_snapshot_expiration must be greater than hp3par_snapshot_retention') } diff --git a/manifests/backend/hpe3par_iscsi.pp b/manifests/backend/hpe3par_iscsi.pp index 08bda0b5..3173f63d 100644 --- a/manifests/backend/hpe3par_iscsi.pp +++ b/manifests/backend/hpe3par_iscsi.pp @@ -84,6 +84,8 @@ define cinder::backend::hpe3par_iscsi( $extra_options = {}, ) { + include ::cinder::deps + if ($hpe3par_snapshot_expiration <= $hpe3par_snapshot_retention) { fail ('hp3par_snapshot_expiration must be greater than hp3par_snapshot_retention') } diff --git a/manifests/backend/iscsi.pp b/manifests/backend/iscsi.pp index 1ab4261d..bb7a7615 100644 --- a/manifests/backend/iscsi.pp +++ b/manifests/backend/iscsi.pp @@ -54,6 +54,7 @@ define cinder::backend::iscsi ( $extra_options = {}, ) { + include ::cinder::deps include ::cinder::params cinder_config { @@ -80,6 +81,7 @@ define cinder::backend::iscsi ( package { 'tgt': ensure => present, name => $::cinder::params::tgt_package_name, + tag => 'cinder-support-package', } if($::osfamily == 'RedHat') { @@ -87,29 +89,30 @@ define cinder::backend::iscsi ( path => '/etc/tgt/targets.conf', line => "include ${volumes_dir}/*", match => '#?include /', - require => Package['tgt'], - notify => Service['tgtd'], + require => Anchor['cinder::install:end'], + notify => Anchor['cinder::service::begin'], } } service { 'tgtd': - ensure => running, - name => $::cinder::params::tgt_service_name, - enable => true, - require => Class['cinder::volume'], + ensure => running, + name => $::cinder::params::tgt_service_name, + enable => true, + tag => 'cinder-support-service', } } 'lioadm': { service { 'target': - ensure => running, - enable => true, - require => Package['targetcli'], + ensure => running, + enable => true, + tag => 'cinder-support-service', } package { 'targetcli': ensure => present, name => $::cinder::params::lio_package_name, + tag => 'cinder-support-package', } } diff --git a/manifests/backend/netapp.pp b/manifests/backend/netapp.pp index b6bb23e9..987c4cd9 100644 --- a/manifests/backend/netapp.pp +++ b/manifests/backend/netapp.pp @@ -223,6 +223,8 @@ define cinder::backend::netapp ( $netapp_eseries_host_type = undef, ) { + include ::cinder::deps + if $netapp_eseries_host_type { warning('The "netapp_eseries_host_type" parameter is deprecated. Use "netapp_host_type" instead.') $netapp_host_type_real = $netapp_eseries_host_type @@ -234,8 +236,8 @@ define cinder::backend::netapp ( validate_array($nfs_shares) file {$nfs_shares_config: content => join($nfs_shares, "\n"), - require => Package['cinder'], - notify => Service['cinder-volume'] + require => Anchor['cinder::install:end'], + notify => Anchor['cinder::service::begin'], } } diff --git a/manifests/backend/nexenta.pp b/manifests/backend/nexenta.pp index ec866e42..981ce34c 100644 --- a/manifests/backend/nexenta.pp +++ b/manifests/backend/nexenta.pp @@ -58,6 +58,8 @@ define cinder::backend::nexenta ( $extra_options = {}, ) { + include ::cinder::deps + cinder_config { "${name}/volume_backend_name": value => $volume_backend_name; "${name}/nexenta_user": value => $nexenta_user; diff --git a/manifests/backend/nfs.pp b/manifests/backend/nfs.pp index 4cf96939..ceb92da9 100644 --- a/manifests/backend/nfs.pp +++ b/manifests/backend/nfs.pp @@ -76,10 +76,12 @@ define cinder::backend::nfs ( $extra_options = {}, ) { + include ::cinder::deps + file {$nfs_shares_config: content => join($nfs_servers, "\n"), - require => Package['cinder'], - notify => Service['cinder-volume'] + require => Anchor['cinder::install::end'], + notify => Anchor['cinder::service::begin'], } cinder_config { diff --git a/manifests/backend/pure.pp b/manifests/backend/pure.pp index d74dc11c..9a69c567 100644 --- a/manifests/backend/pure.pp +++ b/manifests/backend/pure.pp @@ -51,6 +51,8 @@ define cinder::backend::pure( $extra_options = {}, ) { + include ::cinder::deps + $volume_driver = $pure_storage_protocol ? { 'FC' => 'cinder.volume.drivers.pure.PureFCDriver', 'iSCSI' => 'cinder.volume.drivers.pure.PureISCSIDriver' diff --git a/manifests/backend/quobyte.pp b/manifests/backend/quobyte.pp index 683e2736..b17b9d2e 100644 --- a/manifests/backend/quobyte.pp +++ b/manifests/backend/quobyte.pp @@ -56,6 +56,8 @@ define cinder::backend::quobyte ( $manage_volume_type = false, ) { + include ::cinder::deps + cinder_config { "${name}/volume_backend_name": value => $volume_backend_name; "${name}/volume_driver": value => diff --git a/manifests/backend/rbd.pp b/manifests/backend/rbd.pp index 93ef9011..b3104686 100644 --- a/manifests/backend/rbd.pp +++ b/manifests/backend/rbd.pp @@ -95,6 +95,7 @@ define cinder::backend::rbd ( $volume_tmp_dir = false, ) { + include ::cinder::deps include ::cinder::params cinder_config { @@ -156,7 +157,7 @@ define cinder::backend::rbd ( file_line { "set initscript env ${name}": line => $override_line, path => $::cinder::params::ceph_init_override, - notify => Service['cinder-volume'], + notify => Anchor['cinder::service::begin'], } } diff --git a/manifests/backend/san.pp b/manifests/backend/san.pp index edd209b7..041988df 100644 --- a/manifests/backend/san.pp +++ b/manifests/backend/san.pp @@ -80,6 +80,8 @@ define cinder::backend::san ( $extra_options = {}, ) { + include ::cinder::deps + cinder_config { "${name}/volume_backend_name": value => $volume_backend_name; "${name}/volume_driver": value => $volume_driver; diff --git a/manifests/backend/solidfire.pp b/manifests/backend/solidfire.pp index 036cbc02..ab51d553 100644 --- a/manifests/backend/solidfire.pp +++ b/manifests/backend/solidfire.pp @@ -102,6 +102,8 @@ define cinder::backend::solidfire( $extra_options = {}, ) { + include ::cinder::deps + cinder_config { "${name}/volume_backend_name": value => $volume_backend_name; "${name}/volume_driver": value => $volume_driver; diff --git a/manifests/backend/vmdk.pp b/manifests/backend/vmdk.pp index a4633061..66d95834 100644 --- a/manifests/backend/vmdk.pp +++ b/manifests/backend/vmdk.pp @@ -76,6 +76,8 @@ define cinder::backend::vmdk ( $extra_options = {}, ) { + include ::cinder::deps + if $volume_folder == 'cinder-volumes' { warning('The OpenStack default value of volume_folder differs from the puppet module default of "cinder-volumes" and will be changed to the upstream OpenStack default in N-release.') } @@ -107,7 +109,8 @@ define cinder::backend::vmdk ( } package { 'python-suds': - ensure => present + ensure => present, + tag => 'cinder-support-package', } create_resources('cinder_config', $extra_options) diff --git a/manifests/backends.pp b/manifests/backends.pp index 959d3135..dd73ce45 100644 --- a/manifests/backends.pp +++ b/manifests/backends.pp @@ -14,6 +14,8 @@ class cinder::backends ( $enabled_backends = undef, ) { + include ::cinder::deps + # Maybe this could be extented to dynamicly find the enabled names cinder_config { 'DEFAULT/enabled_backends': value => join($enabled_backends, ','); diff --git a/manifests/backup.pp b/manifests/backup.pp index 59a7d919..92ee235f 100644 --- a/manifests/backup.pp +++ b/manifests/backup.pp @@ -63,17 +63,13 @@ class cinder::backup ( $backup_name_template = $::os_service_default, ) { + include ::cinder::deps include ::cinder::params validate_bool($manage_service) validate_bool($enabled) - Cinder_config<||> ~> Service['cinder-backup'] - Exec<| title == 'cinder-manage db_sync' |> ~> Service['cinder-backup'] - if $::cinder::params::backup_package { - Package['cinder-backup'] -> Service['cinder-backup'] - Package['cinder-backup'] ~> Exec<| title == 'cinder-manage db_sync' |> package { 'cinder-backup': ensure => $package_ensure, name => $::cinder::params::backup_package, @@ -94,7 +90,6 @@ class cinder::backup ( name => $::cinder::params::backup_service, enable => $enabled, hasstatus => true, - require => Package['cinder'], tag => 'cinder-service', } diff --git a/manifests/backup/ceph.pp b/manifests/backup/ceph.pp index dac0adc8..aeb0e5e1 100644 --- a/manifests/backup/ceph.pp +++ b/manifests/backup/ceph.pp @@ -67,6 +67,8 @@ class cinder::backup::ceph ( $backup_ceph_stripe_count = '0' ) { + include ::cinder::deps + cinder_config { 'DEFAULT/backup_driver': value => $backup_driver; 'DEFAULT/backup_ceph_conf': value => $backup_ceph_conf; diff --git a/manifests/backup/glusterfs.pp b/manifests/backup/glusterfs.pp index 6e3740d7..fe0fcefe 100644 --- a/manifests/backup/glusterfs.pp +++ b/manifests/backup/glusterfs.pp @@ -44,6 +44,8 @@ class cinder::backup::glusterfs ( $glusterfs_backup_share = $::os_service_default, ) { + include ::cinder::deps + cinder_config { 'DEFAULT/backup_driver': value => $backup_driver; 'DEFAULT/glusterfs_backup_mount_point': value => $glusterfs_backup_mount_point; diff --git a/manifests/backup/google.pp b/manifests/backup/google.pp index 9f1d0e76..d99ebbc6 100644 --- a/manifests/backup/google.pp +++ b/manifests/backup/google.pp @@ -103,6 +103,8 @@ class cinder::backup::google ( $backup_gcs_enable_progress_timer = $::os_service_default, ) { + include ::cinder::deps + cinder_config { 'DEFAULT/backup_driver': value => $backup_driver; 'DEFAULT/backup_gcs_bucket': value => $backup_gcs_bucket; diff --git a/manifests/backup/nfs.pp b/manifests/backup/nfs.pp index 575aff54..4c30ab4a 100644 --- a/manifests/backup/nfs.pp +++ b/manifests/backup/nfs.pp @@ -80,6 +80,7 @@ class cinder::backup::nfs ( $backup_compression_algorithm = $::os_service_default, ) { + include ::cinder::deps validate_string($backup_share) cinder_config { diff --git a/manifests/backup/posix.pp b/manifests/backup/posix.pp index 7e18b1ef..df8963b2 100644 --- a/manifests/backup/posix.pp +++ b/manifests/backup/posix.pp @@ -63,6 +63,8 @@ class cinder::backup::posix ( $backup_container = $::os_service_default, ) { + include ::cinder::deps + cinder_config { 'DEFAULT/backup_driver': value => $backup_driver; 'DEFAULT/backup_file_size': value => $backup_file_size; diff --git a/manifests/backup/swift.pp b/manifests/backup/swift.pp index 67a88cdc..69101a2e 100644 --- a/manifests/backup/swift.pp +++ b/manifests/backup/swift.pp @@ -88,6 +88,8 @@ class cinder::backup::swift ( $backup_compression_algorithm = $::os_service_default, ) { + include ::cinder::deps + if ($backup_swift_container == 'volumes_backup') { warning('The OpenStack default value of backup_swift_container differs from the puppet module default of "volumes_backup" and will be changed to the upstream OpenStack default in N-release.') } diff --git a/manifests/backup/tsm.pp b/manifests/backup/tsm.pp index 5f8b46e3..96730cbc 100644 --- a/manifests/backup/tsm.pp +++ b/manifests/backup/tsm.pp @@ -48,6 +48,8 @@ class cinder::backup::tsm ( $backup_tsm_compression = $::os_service_default, ) { + include ::cinder::deps + cinder_config { 'DEFAULT/backup_driver': value => $backup_driver; 'DEFAULT/backup_tsm_volume_prefix': value => $backup_tsm_volume_prefix; diff --git a/manifests/ceilometer.pp b/manifests/ceilometer.pp index 19567e7f..b05403bb 100644 --- a/manifests/ceilometer.pp +++ b/manifests/ceilometer.pp @@ -24,6 +24,8 @@ class cinder::ceilometer ( $notification_driver = 'messagingv2', ) { + include ::cinder::deps + oslo::messaging::notifications { 'cinder_config': transport_url => $notification_transport_url, driver => $notification_driver, diff --git a/manifests/client.pp b/manifests/client.pp index bdc63325..c00699f8 100644 --- a/manifests/client.pp +++ b/manifests/client.pp @@ -12,11 +12,12 @@ class cinder::client( $package_ensure = 'present' ) { + include ::cinder::deps include ::cinder::params package { 'python-cinderclient': ensure => $package_ensure, name => $::cinder::params::client_package, - tag => 'openstack', + tag => ['openstack', 'cinder-support-package'], } } diff --git a/manifests/config.pp b/manifests/config.pp index c54473f9..db8b4ef3 100644 --- a/manifests/config.pp +++ b/manifests/config.pp @@ -32,6 +32,9 @@ class cinder::config ( $cinder_config = {}, $api_paste_ini_config = {}, ) { + + include ::cinder::deps + validate_hash($cinder_config) validate_hash($api_paste_ini_config) diff --git a/manifests/cron/db_purge.pp b/manifests/cron/db_purge.pp index 559f7848..06fb8ef4 100644 --- a/manifests/cron/db_purge.pp +++ b/manifests/cron/db_purge.pp @@ -62,6 +62,8 @@ class cinder::cron::db_purge ( $destination = '/var/log/cinder/cinder-rowsflush.log' ) { + include ::cinder::deps + cron { 'cinder-manage db purge': command => "cinder-manage db purge ${age} >>${destination} 2>&1", environment => 'PATH=/bin:/usr/bin:/usr/sbin SHELL=/bin/sh', @@ -71,6 +73,6 @@ class cinder::cron::db_purge ( monthday => $monthday, month => $month, weekday => $weekday, - require => Package['cinder'], + require => Anchor['cinder::install::end'], } } diff --git a/manifests/db.pp b/manifests/db.pp index 976e9747..23551ac2 100644 --- a/manifests/db.pp +++ b/manifests/db.pp @@ -49,6 +49,8 @@ class cinder::db ( $database_max_overflow = $::os_service_default, ) { + include ::cinder::deps + # NOTE(spredzy): In order to keep backward compatibility we rely on the pick function # to use cinder:: if cinder::db:: isn't specified. $database_connection_real = pick($::cinder::database_connection,$database_connection) diff --git a/manifests/db/mysql.pp b/manifests/db/mysql.pp index ce7f1c61..268eb91d 100644 --- a/manifests/db/mysql.pp +++ b/manifests/db/mysql.pp @@ -38,6 +38,8 @@ class cinder::db::mysql ( $collate = 'utf8_general_ci', ) { + include ::cinder::deps + validate_string($password) ::openstacklib::db::mysql { 'cinder': @@ -50,5 +52,7 @@ class cinder::db::mysql ( allowed_hosts => $allowed_hosts, } - ::Openstacklib::Db::Mysql['cinder'] ~> Exec<| title == 'cinder-manage db_sync' |> + Anchor['cinder::db::begin'] + ~> Class['cinder::db::mysql'] + ~> Anchor['cinder::db::end'] } diff --git a/manifests/db/postgresql.pp b/manifests/db/postgresql.pp index 58c613ab..630051af 100644 --- a/manifests/db/postgresql.pp +++ b/manifests/db/postgresql.pp @@ -32,6 +32,8 @@ class cinder::db::postgresql( $privileges = 'ALL', ) { + include ::cinder::deps + ::openstacklib::db::postgresql { 'cinder': password_hash => postgresql_password($user, $password), dbname => $dbname, @@ -40,6 +42,7 @@ class cinder::db::postgresql( privileges => $privileges, } - ::Openstacklib::Db::Postgresql['cinder'] ~> Exec<| title == 'cinder-manage db_sync' |> - + Anchor['cinder::db::begin'] + ~> Class['cinder::db::postgresql'] + ~> Anchor['cinder::db::end'] } diff --git a/manifests/db/sync.pp b/manifests/db/sync.pp index 40552e23..836a9f06 100644 --- a/manifests/db/sync.pp +++ b/manifests/db/sync.pp @@ -13,20 +13,20 @@ class cinder::db::sync( $extra_params = undef, ) { + include ::cinder::deps include ::cinder::params - Package <| tag == 'cinder-package' |> ~> Exec['cinder-manage db_sync'] - Exec['cinder-manage db_sync'] ~> Service <| tag == 'cinder-service' |> - - Cinder_config <||> ~> Exec['cinder-manage db_sync'] - Cinder_config <| title == 'database/connection' |> ~> Exec['cinder-manage db_sync'] - exec { 'cinder-manage db_sync': command => "cinder-manage ${extra_params} db sync", path => '/usr/bin', user => 'cinder', refreshonly => true, logoutput => 'on_failure', + subscribe => [ + Anchor['cinder::install::end'], + Anchor['cinder::config::end'], + Anchor['cinder::dbsync::begin'] + ], + notify => Anchor['cinder::dbsync::end'], } - } diff --git a/manifests/deps.pp b/manifests/deps.pp new file mode 100644 index 00000000..26b34a91 --- /dev/null +++ b/manifests/deps.pp @@ -0,0 +1,73 @@ +# == Class: cinder::deps +# +# cinder anchors and dependency management +# +class cinder::deps { + # Setup anchors for install, config and service phases of the module. These + # anchors allow external modules to hook the begin and end of any of these + # phases. Package or service management can also be replaced by ensuring the + # package is absent or turning off service management and having the + # replacement depend on the appropriate anchors. When applicable, end tags + # should be notified so that subscribers can determine if installation, + # config or service state changed and act on that if needed. + anchor { 'cinder::install::begin': } + -> Package<| tag == 'cinder-package'|> + ~> anchor { 'cinder::install::end': } + -> anchor { 'cinder::config::begin': } + -> Cinder_config<||> + ~> anchor { 'cinder::config::end': } + -> anchor { 'cinder::db::begin': } + -> anchor { 'cinder::db::end': } + ~> anchor { 'cinder::dbsync::begin': } + -> anchor { 'cinder::dbsync::end': } + ~> anchor { 'cinder::service::begin': } + ~> Service<| tag == 'cinder-service' |> + ~> anchor { 'cinder::service::end': } + + # paste-api.ini config should occur in the config block also. + Anchor['cinder::config::begin'] + -> Cinder_api_paste_ini<||> + ~> Anchor['cinder::config::end'] + + # policy config should occur in the config block also. + Anchor['cinder::config::begin'] + -> Openstacklib::Policy::Base<||> + ~> Anchor['cinder::config::end'] + + # Support packages need to be installed in the install phase, but we don't + # put them in the chain above because we don't want any false dependencies + # between packages with the cinder-package tag and the cinder-support-package + # tag. Note: the package resources here will have a 'before' relationshop on + # the cinder::install::end anchor. The line between cinder-support-package and + # cinder-package should be whether or not cinder services would need to be + # restarted if the package state was changed. + Anchor['cinder::install::begin'] + -> Package<| tag == 'cinder-support-package'|> + -> Anchor['cinder::install::end'] + + # Support services need to be started in the service phase, but we don't + # put them in the chain above because we don't want any false dependencies + # between them and cinder services. Note: the service resources here will + # have a 'before' relationshop on the cinder::service::end anchor. + # The line between cinder-support-service and cinder-service should be + # whether or not cinder services would need to be restarted if the service + # state was changed. + Anchor['cinder::service::begin'] + -> Service<| tag == 'cinder-support-service'|> + -> Anchor['cinder::service::end'] + + # We need openstackclient before marking service end so that cinder + # will have clients available to create resources. This tag handles the + # openstackclient but indirectly since the client is not available in + # all catalogs that don't need the client class (like many spec tests) + Package<| tag == 'openstack'|> + ~> Anchor['cinder::service::end'] + + # The following resources need to be provisioned after the service is up. + Anchor['cinder::service::end'] + -> Cinder_type<||> + + # Installation or config changes will always restart services. + Anchor['cinder::install::end'] ~> Anchor['cinder::service::begin'] + Anchor['cinder::config::end'] ~> Anchor['cinder::service::begin'] +} diff --git a/manifests/glance.pp b/manifests/glance.pp index b4ebf024..332d5718 100644 --- a/manifests/glance.pp +++ b/manifests/glance.pp @@ -63,6 +63,8 @@ class cinder::glance ( $glance_request_timeout = $::os_service_default, ) { + include ::cinder::deps + cinder_config { 'DEFAULT/glance_api_servers': value => join(any2array($glance_api_servers), ','); 'DEFAULT/glance_api_version': value => $glance_api_version; diff --git a/manifests/init.pp b/manifests/init.pp index 5719e032..baf6c611 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -377,6 +377,7 @@ class cinder ( $key_file = undef, ) inherits cinder::params { + include ::cinder::deps include ::cinder::db include ::cinder::logging @@ -392,15 +393,10 @@ class cinder ( warning('enable_v2_api is deprecated, has no effect and will be removed in a future release') } - # this anchor is used to simplify the graph between cinder components by - # allowing a resource to serve as a point where the configuration of cinder begins - anchor { 'cinder-start': } - package { 'cinder': - ensure => $package_ensure, - name => $::cinder::params::package_name, - tag => ['openstack', 'cinder-package'], - require => Anchor['cinder-start'], + ensure => $package_ensure, + name => $::cinder::params::package_name, + tag => ['openstack', 'cinder-package'], } resources { 'cinder_config': diff --git a/manifests/keystone/auth.pp b/manifests/keystone/auth.pp index b4ce4402..dc75e72b 100644 --- a/manifests/keystone/auth.pp +++ b/manifests/keystone/auth.pp @@ -194,14 +194,16 @@ class cinder::keystone::auth ( $region = 'RegionOne', ) { + include ::cinder::deps + if $configure_endpoint { - Keystone_endpoint["${region}/${service_name}::${service_type}"] -> Cinder_type<||> + Keystone_endpoint["${region}/${service_name}::${service_type}"] -> Anchor['cinder::service::end'] } if $configure_endpoint_v2 { - Keystone_endpoint["${region}/${service_name_v2}::${service_type_v2}"] -> Cinder_type<||> + Keystone_endpoint["${region}/${service_name_v2}::${service_type_v2}"] -> Anchor['cinder::service::end'] } if $configure_endpoint_v3 { - Keystone_endpoint["${region}/${service_name_v3}::${service_type_v3}"] -> Cinder_type<||> + Keystone_endpoint["${region}/${service_name_v3}::${service_type_v3}"] -> Anchor['cinder::service::end'] } keystone::resource::service_identity { 'cinder': @@ -256,7 +258,7 @@ class cinder::keystone::auth ( } if $configure_user_role { - Keystone_user_role["${auth_name}@${tenant}"] -> Cinder_type<||> + Keystone_user_role["${auth_name}@${tenant}"] -> Anchor['cinder::service::end'] } } diff --git a/manifests/logging.pp b/manifests/logging.pp index e45e7cee..c43f73a5 100644 --- a/manifests/logging.pp +++ b/manifests/logging.pp @@ -112,6 +112,8 @@ class cinder::logging( $verbose = undef, ) { + include ::cinder::deps + if $verbose { warning('verbose is deprecated, has no effect and will be removed after Newton cycle.') } diff --git a/manifests/policy.pp b/manifests/policy.pp index 56a0bced..521aa604 100644 --- a/manifests/policy.pp +++ b/manifests/policy.pp @@ -22,6 +22,8 @@ class cinder::policy ( $policy_path = '/etc/cinder/policy.json', ) { + include ::cinder::deps + validate_hash($policies) Openstacklib::Policy::Base { @@ -30,4 +32,5 @@ class cinder::policy ( create_resources('openstacklib::policy::base', $policies) oslo::policy { 'cinder_config': policy_file => $policy_path } + } diff --git a/manifests/quota.pp b/manifests/quota.pp index 41dbbe9f..295e751a 100644 --- a/manifests/quota.pp +++ b/manifests/quota.pp @@ -28,6 +28,8 @@ class cinder::quota ( $quota_driver = $::os_service_default, ) { + include ::cinder::deps + cinder_config { 'DEFAULT/quota_volumes': value => $quota_volumes; 'DEFAULT/quota_snapshots': value => $quota_snapshots; diff --git a/manifests/quota_set.pp b/manifests/quota_set.pp index cec059f0..1be731a0 100644 --- a/manifests/quota_set.pp +++ b/manifests/quota_set.pp @@ -58,6 +58,8 @@ define cinder::quota_set ( $volume_type = $name, ) { + include ::cinder::deps + if $os_region_name { $cinder_env = [ "OS_TENANT_NAME=${os_tenant_name}", @@ -80,7 +82,7 @@ define cinder::quota_set ( command => "cinder quota-class-update ${class_name} --volumes ${quota_volumes} --snapshots ${quota_snapshots} --gigabytes ${quota_gigabytes} --volume-type '${volume_type}'", onlyif => 'cinder quota-class-show default | grep -qP -- -1', environment => $cinder_env, - require => Package['python-cinderclient'], + require => Anchor['cinder-support-package'], path => ['/usr/bin', '/bin'], } } diff --git a/manifests/rabbitmq.pp b/manifests/rabbitmq.pp index 7407eeea..4964499c 100644 --- a/manifests/rabbitmq.pp +++ b/manifests/rabbitmq.pp @@ -28,6 +28,8 @@ class cinder::rabbitmq( $virtual_host = '/', ) { + include ::cinder::deps + warning('cinder::rabbitmq class is deprecated and will be removed in next release. Make other plans to configure rabbitmq resources.') if $userid == 'guest' { @@ -45,7 +47,7 @@ class cinder::rabbitmq( write_permission => '.*', read_permission => '.*', provider => 'rabbitmqctl', - }->Anchor<| title == 'cinder-start' |> + } -> Anchor['cinder::service::begin'] } rabbitmq_vhost { $virtual_host: provider => 'rabbitmqctl', diff --git a/manifests/scheduler.pp b/manifests/scheduler.pp index 7f17aaf8..2fab88ed 100644 --- a/manifests/scheduler.pp +++ b/manifests/scheduler.pp @@ -28,19 +28,15 @@ class cinder::scheduler ( $manage_service = true ) { + include ::cinder::deps include ::cinder::params validate_bool($manage_service) validate_bool($enabled) - Cinder_config<||> ~> Service['cinder-scheduler'] - Cinder_api_paste_ini<||> ~> Service['cinder-scheduler'] - Exec<| title == 'cinder-manage db_sync' |> ~> Service['cinder-scheduler'] - cinder_config { 'DEFAULT/scheduler_driver': value => $scheduler_driver; } if $::cinder::params::scheduler_package { - Package['cinder-scheduler'] -> Service['cinder-scheduler'] package { 'cinder-scheduler': ensure => $package_ensure, name => $::cinder::params::scheduler_package, @@ -61,7 +57,6 @@ class cinder::scheduler ( name => $::cinder::params::scheduler_service, enable => $enabled, hasstatus => true, - require => Package['cinder'], tag => 'cinder-service', } } diff --git a/manifests/scheduler/filter.pp b/manifests/scheduler/filter.pp index 75a68b6f..f3adf725 100644 --- a/manifests/scheduler/filter.pp +++ b/manifests/scheduler/filter.pp @@ -12,6 +12,8 @@ class cinder::scheduler::filter ( $scheduler_default_filters = $::os_service_default, ) { + include ::cinder::deps + if (!is_service_default($scheduler_default_filters)) { cinder_config { 'DEFAULT/scheduler_default_filters': value => join(any2array($scheduler_default_filters),',') diff --git a/manifests/setup_test_volume.pp b/manifests/setup_test_volume.pp index f8002258..644e632c 100644 --- a/manifests/setup_test_volume.pp +++ b/manifests/setup_test_volume.pp @@ -22,15 +22,18 @@ class cinder::setup_test_volume( $loopback_device = '/dev/loop2' ) { + include ::cinder::deps + package { 'lvm2': - ensure => present, - require => Package['cinder'], + ensure => present, + tag => 'cinder-support-package', } ~> exec { "create_${volume_path}/${volume_name}": command => "dd if=/dev/zero of=\"${volume_path}/${volume_name}\" bs=1 count=0 seek=${size}", path => ['/bin','/usr/bin','/sbin','/usr/sbin'], unless => "stat ${volume_path}/${volume_name}", + before => Anchor['cinder::service::begin'], } ~> file { "${volume_path}/${volume_name}": @@ -55,6 +58,4 @@ class cinder::setup_test_volume( unless => "vgdisplay | grep ${volume_name}", refreshonly => true, } - } - diff --git a/manifests/type.pp b/manifests/type.pp index e94a84e6..217e472a 100644 --- a/manifests/type.pp +++ b/manifests/type.pp @@ -49,6 +49,8 @@ define cinder::type ( $os_region_name = undef, ) { + include ::cinder::deps + if $os_password or $os_region_name or $os_tenant_name or $os_username or $os_auth_url { warning('Parameters $os_password/$os_region_name/$os_tenant_name/$os_username/$os_auth_url are not longer required') warning('Auth creds will be used from env or /root/openrc file or cinder.conf') diff --git a/manifests/type_set.pp b/manifests/type_set.pp index 696a2019..1cb2f06a 100644 --- a/manifests/type_set.pp +++ b/manifests/type_set.pp @@ -46,6 +46,8 @@ define cinder::type_set ( $os_region_name = undef, ) { + include ::cinder::deps + if $os_password or $os_region_name or $os_tenant_name or $os_username or $os_auth_url { warning('Parameters $os_password/$os_region_name/$os_tenant_name/$os_username/$os_auth_url are not longer required.') warning('Auth creds will be used from env or /root/openrc file or cinder.conf') diff --git a/manifests/vmware.pp b/manifests/vmware.pp index 39ce6dd6..6c52ec57 100644 --- a/manifests/vmware.pp +++ b/manifests/vmware.pp @@ -27,6 +27,8 @@ class cinder::vmware ( $os_auth_url = undef ) { + include ::cinder::deps + if $os_password or $os_tenant_name or $os_username or $os_auth_url { warning('Parameters $os_password/$os_tenant_name/$os_username/$os_auth_url are not longer required.') warning('Auth creds will be used from env or /root/openrc file or cinder.conf') diff --git a/manifests/volume.pp b/manifests/volume.pp index e734814a..51e68fbc 100644 --- a/manifests/volume.pp +++ b/manifests/volume.pp @@ -38,18 +38,13 @@ class cinder::volume ( $volume_clear_ionice = $::os_service_default, ) { + include ::cinder::deps include ::cinder::params validate_bool($manage_service) validate_bool($enabled) - Cinder_config<||> ~> Service['cinder-volume'] - Cinder_api_paste_ini<||> ~> Service['cinder-volume'] - Exec<| title == 'cinder-manage db_sync' |> ~> Service['cinder-volume'] - if $::cinder::params::volume_package { - Package['cinder'] -> Package['cinder-volume'] - Package['cinder-volume'] -> Service['cinder-volume'] package { 'cinder-volume': ensure => $package_ensure, name => $::cinder::params::volume_package, @@ -70,7 +65,6 @@ class cinder::volume ( name => $::cinder::params::volume_service, enable => $enabled, hasstatus => true, - require => Package['cinder'], tag => 'cinder-service', } diff --git a/manifests/volume/dellsc_iscsi.pp b/manifests/volume/dellsc_iscsi.pp index 83fcb7c4..a7b58cd8 100644 --- a/manifests/volume/dellsc_iscsi.pp +++ b/manifests/volume/dellsc_iscsi.pp @@ -59,6 +59,8 @@ class cinder::volume::dellsc_iscsi ( $extra_options = {}, ) { + include ::cinder::deps + warning('Usage of cinder::volume::dellsc_iscsi is deprecated, please use cinder::backend::dellsc_iscsi instead.') diff --git a/manifests/volume/emc_vnx.pp b/manifests/volume/emc_vnx.pp index 6af461d6..348946ce 100644 --- a/manifests/volume/emc_vnx.pp +++ b/manifests/volume/emc_vnx.pp @@ -78,6 +78,8 @@ class cinder::volume::emc_vnx( $naviseccli_path = $::os_service_default, ) { + include ::cinder::deps + warning('Usage of cinder::volume::emc_vnx is deprecated, please use cinder::backend::emc_vnx instead.') diff --git a/manifests/volume/eqlx.pp b/manifests/volume/eqlx.pp index 51c90d86..15690e39 100644 --- a/manifests/volume/eqlx.pp +++ b/manifests/volume/eqlx.pp @@ -88,6 +88,8 @@ class cinder::volume::eqlx ( $eqlx_cli_timeout = undef, ) { + include ::cinder::deps + warning('Usage of cinder::volume::eqlx is deprecated, please use cinder::backend::eqlx instead.') diff --git a/manifests/volume/glusterfs.pp b/manifests/volume/glusterfs.pp index 43dada18..f71d0482 100644 --- a/manifests/volume/glusterfs.pp +++ b/manifests/volume/glusterfs.pp @@ -52,6 +52,8 @@ class cinder::volume::glusterfs ( $extra_options = {}, ) { + include ::cinder::deps + warning('Usage of cinder::volume::glusterfs is deprecated, please use cinder::backend::glusterfs instead.') diff --git a/manifests/volume/gpfs.pp b/manifests/volume/gpfs.pp index e7468e31..cb157e86 100644 --- a/manifests/volume/gpfs.pp +++ b/manifests/volume/gpfs.pp @@ -93,6 +93,8 @@ class cinder::volume::gpfs( $extra_options = {} ) { + include ::cinder::deps + warning('Usage of cinder::volume::gpfs is deprecated, please use cinder::backend::gpfs instead.') diff --git a/manifests/volume/hp3par_iscsi.pp b/manifests/volume/hp3par_iscsi.pp index a9fd77df..df39d9ea 100644 --- a/manifests/volume/hp3par_iscsi.pp +++ b/manifests/volume/hp3par_iscsi.pp @@ -64,6 +64,8 @@ class cinder::volume::hp3par_iscsi( $extra_options = {}, ) { + include ::cinder::deps + warning('The class cinder::volume::hp3par_iscsi is deprecated and will be removed after Newton cycle, pleasse use the new class cinder::volume::hpe3par_iscsi.') cinder::backend::hpe3par_iscsi { 'DEFAULT': diff --git a/manifests/volume/hpe3par_iscsi.pp b/manifests/volume/hpe3par_iscsi.pp index 293080c5..dd491bd0 100644 --- a/manifests/volume/hpe3par_iscsi.pp +++ b/manifests/volume/hpe3par_iscsi.pp @@ -66,6 +66,8 @@ class cinder::volume::hpe3par_iscsi( $extra_options = {}, ) { + include ::cinder::deps + warning('Usage of cinder::volume::hpe3par_iscsi is deprecated, please use cinder::backend::hpe3par_iscsi instead.') diff --git a/manifests/volume/iscsi.pp b/manifests/volume/iscsi.pp index 4a8379ac..c424ccc3 100644 --- a/manifests/volume/iscsi.pp +++ b/manifests/volume/iscsi.pp @@ -43,6 +43,7 @@ class cinder::volume::iscsi ( $extra_options = {}, ) { + include ::cinder::deps include ::cinder::params warning('Usage of cinder::volume::iscsi is deprecated, please use diff --git a/manifests/volume/netapp.pp b/manifests/volume/netapp.pp index 970ab881..c5d7fd4e 100644 --- a/manifests/volume/netapp.pp +++ b/manifests/volume/netapp.pp @@ -210,6 +210,8 @@ class cinder::volume::netapp ( $netapp_eseries_host_type = undef, ) { + include ::cinder::deps + if $netapp_eseries_host_type { warning('The "netapp_eseries_host_type" parameter is deprecated. Use "netapp_host_type" instead.') $netapp_host_type_real = $netapp_eseries_host_type diff --git a/manifests/volume/nexenta.pp b/manifests/volume/nexenta.pp index 5e4e2dbc..76a128a8 100644 --- a/manifests/volume/nexenta.pp +++ b/manifests/volume/nexenta.pp @@ -46,6 +46,8 @@ class cinder::volume::nexenta ( $extra_options = {}, ) { + include ::cinder::deps + warning('Usage of cinder::volume::nexenta is deprecated, please use cinder::backend::nexenta instead.') diff --git a/manifests/volume/nfs.pp b/manifests/volume/nfs.pp index d2b4f983..252c180c 100644 --- a/manifests/volume/nfs.pp +++ b/manifests/volume/nfs.pp @@ -65,6 +65,8 @@ class cinder::volume::nfs ( $extra_options = {}, ) { + include ::cinder::deps + warning('Usage of cinder::volume::nfs is deprecated, please use cinder::backend::nfs instead.') diff --git a/manifests/volume/pure.pp b/manifests/volume/pure.pp index 4c4e657f..eaa05bbd 100644 --- a/manifests/volume/pure.pp +++ b/manifests/volume/pure.pp @@ -44,6 +44,8 @@ class cinder::volume::pure( $extra_options = {}, ) { + include ::cinder::deps + warning('Usage of cinder::volume::pure is deprecated, please use cinder::backend::pure instead.') diff --git a/manifests/volume/quobyte.pp b/manifests/volume/quobyte.pp index f659012d..6f25b248 100644 --- a/manifests/volume/quobyte.pp +++ b/manifests/volume/quobyte.pp @@ -44,6 +44,8 @@ class cinder::volume::quobyte ( $quobyte_mount_point_base = undef, ) { + include ::cinder::deps + warning('Usage of cinder::volume::quobyte is deprecated, please use cinder::backend::quobyte instead.') diff --git a/manifests/volume/rbd.pp b/manifests/volume/rbd.pp index ee12eb40..accf47bd 100644 --- a/manifests/volume/rbd.pp +++ b/manifests/volume/rbd.pp @@ -75,6 +75,8 @@ class cinder::volume::rbd ( $volume_tmp_dir = false, ) { + include ::cinder::deps + warning('Usage of cinder::volume::rbd is deprecated, please use cinder::backend::rbd instead.') diff --git a/manifests/volume/san.pp b/manifests/volume/san.pp index 9a9026cb..7e4f6739 100644 --- a/manifests/volume/san.pp +++ b/manifests/volume/san.pp @@ -71,6 +71,8 @@ class cinder::volume::san ( $extra_options = {}, ) { + include ::cinder::deps + warning('Usage of cinder::volume::san is deprecated, please use cinder::backend::san instead.') diff --git a/manifests/volume/solidfire.pp b/manifests/volume/solidfire.pp index 60092510..831ee524 100644 --- a/manifests/volume/solidfire.pp +++ b/manifests/volume/solidfire.pp @@ -65,6 +65,8 @@ class cinder::volume::solidfire( $extra_options = {}, ) { + include ::cinder::deps + warning('Usage of cinder::volume::solidfire is deprecated, please use cinder::backend::solidfire instead.') diff --git a/manifests/volume/vmdk.pp b/manifests/volume/vmdk.pp index 903d225c..ccf9e1f9 100644 --- a/manifests/volume/vmdk.pp +++ b/manifests/volume/vmdk.pp @@ -64,6 +64,8 @@ class cinder::volume::vmdk( $extra_options = {}, ) { + include ::cinder::deps + warning('Usage of cinder::volume::vmdk is deprecated, please use cinder::backend::vmdk instead.') diff --git a/manifests/wsgi/apache.pp b/manifests/wsgi/apache.pp index c38a9173..4f339501 100644 --- a/manifests/wsgi/apache.pp +++ b/manifests/wsgi/apache.pp @@ -90,6 +90,7 @@ class cinder::wsgi::apache ( $priority = '10', ) { + include ::cinder::deps include ::cinder::params include ::apache include ::apache::mod::wsgi @@ -120,5 +121,6 @@ class cinder::wsgi::apache ( wsgi_script_dir => $::cinder::params::cinder_wsgi_script_path, wsgi_script_file => 'cinder-api', wsgi_script_source => $::cinder::params::cinder_wsgi_script_source, + require => Anchor['cinder::install::end'], } } diff --git a/releasenotes/notes/external_hooks_support-473735fcfe15bc5d.yaml b/releasenotes/notes/external_hooks_support-473735fcfe15bc5d.yaml new file mode 100644 index 00000000..409c04d4 --- /dev/null +++ b/releasenotes/notes/external_hooks_support-473735fcfe15bc5d.yaml @@ -0,0 +1,5 @@ +--- +features: + - moves all dependencies to an external class. + This allows keystone to be installed and managed + via external mechanisms like venvs or docker. diff --git a/spec/classes/cinder_backup_spec.rb b/spec/classes/cinder_backup_spec.rb index 6676ab3b..481a3562 100644 --- a/spec/classes/cinder_backup_spec.rb +++ b/spec/classes/cinder_backup_spec.rb @@ -49,7 +49,6 @@ describe 'cinder::backup' do :ensure => 'present', :tag => ['openstack', 'cinder-package'], ) - is_expected.to contain_package('cinder-backup').with_before(/Service\[cinder-backup\]/) end end diff --git a/spec/classes/cinder_client_spec.rb b/spec/classes/cinder_client_spec.rb index 283a4e6a..ec2fd0d9 100644 --- a/spec/classes/cinder_client_spec.rb +++ b/spec/classes/cinder_client_spec.rb @@ -21,7 +21,7 @@ describe 'cinder::client' do is_expected.to contain_package('python-cinderclient').with( :name => 'python-cinderclient', :ensure => p[:package_ensure], - :tag => 'openstack' + :tag => ['openstack', 'cinder-support-package'], ) end diff --git a/spec/classes/cinder_cron_db_purge_spec.rb b/spec/classes/cinder_cron_db_purge_spec.rb index f78e9a7b..e8d40cfc 100644 --- a/spec/classes/cinder_cron_db_purge_spec.rb +++ b/spec/classes/cinder_cron_db_purge_spec.rb @@ -27,7 +27,7 @@ describe 'cinder::cron::db_purge' do :monthday => params[:monthday], :month => params[:month], :weekday => params[:weekday], - :require => 'Package[cinder]', + :require => 'Anchor[cinder::install::end]' ) end end diff --git a/spec/classes/cinder_scheduler_spec.rb b/spec/classes/cinder_scheduler_spec.rb index 34dbfff3..11452f33 100644 --- a/spec/classes/cinder_scheduler_spec.rb +++ b/spec/classes/cinder_scheduler_spec.rb @@ -16,7 +16,6 @@ describe 'cinder::scheduler' do it { is_expected.to contain_package('cinder-scheduler').with( :name => 'cinder-scheduler', :ensure => 'present', - :before => ['Service[cinder-scheduler]'], :tag => ['openstack', 'cinder-package'], ) } @@ -24,7 +23,6 @@ describe 'cinder::scheduler' do :name => 'cinder-scheduler', :enable => true, :ensure => 'running', - :require => 'Package[cinder]', :hasstatus => true, :tag => 'cinder-service', ) } @@ -68,7 +66,6 @@ describe 'cinder::scheduler' do :name => 'openstack-cinder-scheduler', :enable => true, :ensure => 'running', - :require => 'Package[cinder]' ) } end diff --git a/spec/classes/cinder_setup_test_volume_spec.rb b/spec/classes/cinder_setup_test_volume_spec.rb index 6be9f7bf..b62f6282 100644 --- a/spec/classes/cinder_setup_test_volume_spec.rb +++ b/spec/classes/cinder_setup_test_volume_spec.rb @@ -4,7 +4,6 @@ describe 'cinder::setup_test_volume' do it { is_expected.to contain_package('lvm2').with( :ensure => 'present', - :require => 'Package[cinder]' ) } it 'should contain volume creation execs' do diff --git a/spec/classes/cinder_volume_glusterfs_spec.rb b/spec/classes/cinder_volume_glusterfs_spec.rb index 17625656..9fb3bc14 100644 --- a/spec/classes/cinder_volume_glusterfs_spec.rb +++ b/spec/classes/cinder_volume_glusterfs_spec.rb @@ -21,8 +21,8 @@ describe 'cinder::volume::glusterfs' do is_expected.to contain_cinder_config('DEFAULT/glusterfs_backup_share').with_value('') is_expected.to contain_file('/etc/cinder/other_shares.conf').with( :content => "10.10.10.10:/volumes\n10.10.10.11:/volumes\n", - :require => 'Package[cinder]', - :notify => 'Service[cinder-volume]' + :require => 'Anchor[cinder::install::end]', + :notify => 'Anchor[cinder::service::begin]' ) end diff --git a/spec/classes/cinder_volume_iscsi_spec.rb b/spec/classes/cinder_volume_iscsi_spec.rb index 8733254e..9fc87a91 100644 --- a/spec/classes/cinder_volume_iscsi_spec.rb +++ b/spec/classes/cinder_volume_iscsi_spec.rb @@ -82,7 +82,6 @@ describe 'cinder::volume::iscsi' do it { is_expected.to contain_service('target').with( :ensure => 'running', :enable => 'true', - :require => 'Package[targetcli]' ) } end diff --git a/spec/classes/cinder_volume_nfs_spec.rb b/spec/classes/cinder_volume_nfs_spec.rb index eb14c19c..8570f086 100644 --- a/spec/classes/cinder_volume_nfs_spec.rb +++ b/spec/classes/cinder_volume_nfs_spec.rb @@ -39,8 +39,8 @@ describe 'cinder::volume::nfs' do '1.0') is_expected.to contain_file('/etc/cinder/other_shares.conf').with( :content => "10.10.10.10:/shares\n10.10.10.10:/shares2", - :require => 'Package[cinder]', - :notify => 'Service[cinder-volume]' + :require => 'Anchor[cinder::install::end]', + :notify => 'Anchor[cinder::service::begin]' ) end end diff --git a/spec/classes/cinder_volume_rbd_spec.rb b/spec/classes/cinder_volume_rbd_spec.rb index 3899be64..78371751 100644 --- a/spec/classes/cinder_volume_rbd_spec.rb +++ b/spec/classes/cinder_volume_rbd_spec.rb @@ -47,7 +47,7 @@ describe 'cinder::volume::rbd' do is_expected.to contain_file_line('set initscript env DEFAULT').with( :line => /env CEPH_ARGS=\"--id test\"/, :path => '/etc/init/cinder-volume.override', - :notify => 'Service[cinder-volume]') + :notify => 'Anchor[cinder::service::begin]') end end @@ -82,7 +82,7 @@ describe 'cinder::volume::rbd' do is_expected.to contain_file_line('set initscript env DEFAULT').with( :line => /export CEPH_ARGS=\"--id test\"/, :path => '/etc/sysconfig/openstack-cinder-volume', - :notify => 'Service[cinder-volume]') + :notify => 'Anchor[cinder::service::begin]') end end diff --git a/spec/defines/cinder_backend_glusterfs_spec.rb b/spec/defines/cinder_backend_glusterfs_spec.rb index 9d11fa61..c400409c 100644 --- a/spec/defines/cinder_backend_glusterfs_spec.rb +++ b/spec/defines/cinder_backend_glusterfs_spec.rb @@ -33,8 +33,8 @@ describe 'cinder::backend::glusterfs' do '/cinder_mount_point') is_expected.to contain_file('/etc/cinder/other_shares.conf').with( :content => "10.10.10.10:/volumes\n10.10.10.11:/volumes\n", - :require => 'Package[cinder]', - :notify => 'Service[cinder-volume]' + :require => 'Anchor[cinder::install::end]', + :notify => 'Anchor[cinder::service::begin]' ) end diff --git a/spec/defines/cinder_backend_nfs_spec.rb b/spec/defines/cinder_backend_nfs_spec.rb index 94749b7d..5ee02174 100644 --- a/spec/defines/cinder_backend_nfs_spec.rb +++ b/spec/defines/cinder_backend_nfs_spec.rb @@ -43,8 +43,8 @@ describe 'cinder::backend::nfs' do '0.9') is_expected.to contain_file('/etc/cinder/other_shares.conf').with( :content => "10.10.10.10:/shares\n10.10.10.10:/shares2", - :require => 'Package[cinder]', - :notify => 'Service[cinder-volume]' + :require => 'Anchor[cinder::install::end]', + :notify => 'Anchor[cinder::service::begin]' ) end end diff --git a/spec/defines/cinder_backend_rbd_spec.rb b/spec/defines/cinder_backend_rbd_spec.rb index 23cd19d2..f2e09267 100644 --- a/spec/defines/cinder_backend_rbd_spec.rb +++ b/spec/defines/cinder_backend_rbd_spec.rb @@ -55,7 +55,7 @@ describe 'cinder::backend::rbd' do is_expected.to contain_file_line('set initscript env rbd-ssd').with( :line => /env CEPH_ARGS=\"--id test\"/, :path => '/etc/init/cinder-volume.override', - :notify => 'Service[cinder-volume]') + :notify => 'Anchor[cinder::service::begin]') end context 'with another RBD backend' do @@ -127,7 +127,7 @@ describe 'cinder::backend::rbd' do is_expected.to contain_file_line('set initscript env rbd-ssd').with( :line => /export CEPH_ARGS=\"--id test\"/, :path => '/etc/sysconfig/openstack-cinder-volume', - :notify => 'Service[cinder-volume]') + :notify => 'Anchor[cinder::service::begin]') end end diff --git a/spec/defines/cinder_quota_set_spec.rb b/spec/defines/cinder_quota_set_spec.rb index df82b2d4..06084ee0 100644 --- a/spec/defines/cinder_quota_set_spec.rb +++ b/spec/defines/cinder_quota_set_spec.rb @@ -40,7 +40,7 @@ describe 'cinder::quota_set' do 'OS_AUTH_URL=http://127.127.127.1:5000/v2.0/', 'OS_REGION_NAME=test'], :onlyif => 'cinder quota-class-show default | grep -qP -- -1', - :require => 'Package[python-cinderclient]') + :require => 'Anchor[cinder-support-package]') end end end diff --git a/spec/unit/type/cinder_api_paste_spec.rb b/spec/unit/type/cinder_api_paste_spec.rb index 83db1bfc..ec3d7868 100644 --- a/spec/unit/type/cinder_api_paste_spec.rb +++ b/spec/unit/type/cinder_api_paste_spec.rb @@ -23,12 +23,12 @@ describe 'Puppet::Type.type(:cinder_api_paste_ini)' do it 'should autorequire the package that install the file' do catalog = Puppet::Resource::Catalog.new - package = Puppet::Type.type(:package).new(:name => 'cinder') - catalog.add_resource package, @cinder_api_paste_ini + anchor = Puppet::Type.type(:anchor).new(:name => 'cinder::install::end') + catalog.add_resource anchor, @cinder_api_paste_ini dependency = @cinder_api_paste_ini.autorequire expect(dependency.size).to eq(1) expect(dependency[0].target).to eq(@cinder_api_paste_ini) - expect(dependency[0].source).to eq(package) + expect(dependency[0].source).to eq(anchor) end end diff --git a/spec/unit/type/cinder_config_spec.rb b/spec/unit/type/cinder_config_spec.rb index 61589890..130460cf 100644 --- a/spec/unit/type/cinder_config_spec.rb +++ b/spec/unit/type/cinder_config_spec.rb @@ -8,12 +8,12 @@ describe 'Puppet::Type.type(:cinder_config)' do it 'should autorequire the package that install the file' do catalog = Puppet::Resource::Catalog.new - package = Puppet::Type.type(:package).new(:name => 'cinder') - catalog.add_resource package, @cinder_config + anchor = Puppet::Type.type(:anchor).new(:name => 'cinder::install::end') + catalog.add_resource anchor, @cinder_config dependency = @cinder_config.autorequire expect(dependency.size).to eq(1) expect(dependency[0].target).to eq(@cinder_config) - expect(dependency[0].source).to eq(package) + expect(dependency[0].source).to eq(anchor) end end diff --git a/spec/unit/type/cinder_type_spec.rb b/spec/unit/type/cinder_type_spec.rb index c9b0a0ca..a9e8352c 100644 --- a/spec/unit/type/cinder_type_spec.rb +++ b/spec/unit/type/cinder_type_spec.rb @@ -17,16 +17,16 @@ describe Puppet::Type.type(:cinder_type) do it 'should autorequire cinder-api service' do catalog = Puppet::Resource::Catalog.new - service = Puppet::Type.type(:service).new(:name => 'cinder-api') + anchor = Puppet::Type.type(:anchor).new(:name => 'cinder::service::end') correct_input = { :name => 'test_type', :properties => ['some_key1=value', 'some_key2=value1,value2'] } cinder_type = Puppet::Type.type(:cinder_type).new(correct_input) - catalog.add_resource service, cinder_type + catalog.add_resource anchor, cinder_type dependency = cinder_type.autorequire expect(dependency.size).to eq(1) expect(dependency[0].target).to eq(cinder_type) - expect(dependency[0].source).to eq(service) + expect(dependency[0].source).to eq(anchor) end end