From 3ea47e873bb43b2e1606c1ed4ad616a81d23a593 Mon Sep 17 00:00:00 2001 From: Emilien Macchi Date: Wed, 23 Apr 2014 14:19:24 +0200 Subject: [PATCH] splitting: Volume services Split cloud::volume::controller to * cloud::volume::api * cloud::volume::backup * cloud::volume::scheduler Maintains backward compatibility and warn the end user about deprecation. Bug #346 --- manifests/volume/api.pp | 63 ++++++++++++++++++++++++++++++++ manifests/volume/backup.pp | 35 ++++++++++++++++++ manifests/volume/controller.pp | 66 ++++++++++------------------------ manifests/volume/scheduler.pp | 36 +++++++++++++++++++ 4 files changed, 153 insertions(+), 47 deletions(-) create mode 100644 manifests/volume/api.pp create mode 100644 manifests/volume/backup.pp create mode 100644 manifests/volume/scheduler.pp diff --git a/manifests/volume/api.pp b/manifests/volume/api.pp new file mode 100644 index 00000000..34a88399 --- /dev/null +++ b/manifests/volume/api.pp @@ -0,0 +1,63 @@ +# +# Copyright (C) 2014 eNovance SAS +# +# 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. +# +# Volume API node +# + +class cloud::volume::api( + $ks_cinder_internal_port = 8776, + $ks_cinder_password = 'cinderpassword', + $ks_keystone_internal_host = '127.0.0.1', + $ks_glance_internal_host = '127.0.0.1', + $ks_glance_api_internal_port = 9292, + $api_eth = '127.0.0.1', + $default_volume_type = undef, + # Maintain backward compatibility for multi-backend + $volume_multi_backend = false +) { + + include 'cloud::volume' + + if ! $volume_multi_backend { + $default_volume_type_real = undef + } else { + if ! $default_volume_type { + fail('when using multi-backend, you should define a default_volume_type value in cloud::volume::controller') + } else { + $default_volume_type_real = $default_volume_type + } + } + + class { 'cinder::api': + keystone_password => $ks_cinder_password, + keystone_auth_host => $ks_keystone_internal_host, + bind_host => $api_eth, + default_volume_type => $default_volume_type_real + } + + class { 'cinder::glance': + glance_api_servers => "${ks_glance_internal_host}:${ks_glance_api_internal_port}", + glance_request_timeout => '10' + } + + @@haproxy::balancermember{"${::fqdn}-cinder_api": + listening_service => 'cinder_api_cluster', + server_names => $::hostname, + ipaddresses => $api_eth, + ports => $ks_cinder_internal_port, + options => 'check inter 2000 rise 2 fall 5' + } + +} diff --git a/manifests/volume/backup.pp b/manifests/volume/backup.pp new file mode 100644 index 00000000..881c3c9e --- /dev/null +++ b/manifests/volume/backup.pp @@ -0,0 +1,35 @@ +# +# Copyright (C) 2014 eNovance SAS +# +# 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. +# +# Volume Backup node +# + +class cloud::volume::backup( + # TODO(EmilienM) Disabled for now: http://git.io/kfTmcA + # $backup_ceph_pool = $os_params::cinder_rbd_backup_pool, + # $backup_ceph_user = $os_params::cinder_rbd_backup_user +) { + + include 'cloud::volume' + + class { 'cinder::backup': } + + # TODO(EmilienM) Disabled for now: http://git.io/kfTmcA + # class { 'cinder::backup::ceph': + # backup_ceph_user => $backup_ceph_user, + # backup_ceph_pool => $backup_ceph_pool + # } + +} \ No newline at end of file diff --git a/manifests/volume/controller.pp b/manifests/volume/controller.pp index eb19ae6d..a19fe6e3 100644 --- a/manifests/volume/controller.pp +++ b/manifests/volume/controller.pp @@ -23,59 +23,31 @@ class cloud::volume::controller( $ks_glance_internal_host = '127.0.0.1', $ks_glance_api_internal_port = 9292, $api_eth = '127.0.0.1', - # Maintain backward compatibility for multi-backend - $volume_multi_backend = false, $default_volume_type = undef, - # TODO(EmilienM) Disabled for now: http://git.io/kfTmcA - # $backup_ceph_pool = 'backup', - # $backup_ceph_user = 'cinder' + # Maintain backward compatibility for multi-backend + $volume_multi_backend = false ) { + warning('This class is deprecated. You should use cloud::volume::api,backup,scheduler.') + include 'cloud::volume' - if ! $volume_multi_backend { - $scheduler_driver_real = false - $default_volume_type_real = undef - } else { - $scheduler_driver_real = 'cinder.scheduler.filter_scheduler.FilterScheduler' - - if ! $default_volume_type { - fail('when using multi-backend, you should define a default_volume_type value in cloud::volume::controller') - } else { - $default_volume_type_real = $default_volume_type - } + # Maintain backward compatibility + class { 'cloud::volume::api': + ks_cinder_internal_port => $ks_cinder_internal_port, + ks_cinder_password => $ks_cinder_password, + ks_keystone_internal_host => $ks_keystone_internal_host, + ks_glance_internal_host => $ks_glance_internal_host, + ks_glance_api_internal_port => $ks_glance_api_internal_port, + api_eth => $api_eth, + default_volume_type => $default_volume_type, + # Maintain backward compatibility for multi-backend + volume_multi_backend => $volume_multi_backend + } + class { 'cloud::volume::scheduler': + volume_multi_backend => $volume_multi_backend } - class { 'cinder::scheduler': - scheduler_driver => $scheduler_driver_real - } - - class { 'cinder::api': - keystone_password => $ks_cinder_password, - keystone_auth_host => $ks_keystone_internal_host, - bind_host => $api_eth, - default_volume_type => $default_volume_type_real - } - - class { 'cinder::backup': } - - # TODO(EmilienM) Disabled for now: http://git.io/kfTmcA - # class { 'cinder::backup::ceph': - # backup_ceph_user => $backup_ceph_user, - # backup_ceph_pool => $backup_ceph_pool - # } - - class { 'cinder::glance': - glance_api_servers => "${ks_glance_internal_host}:${ks_glance_api_internal_port}", - glance_request_timeout => '10' - } - - @@haproxy::balancermember{"${::fqdn}-cinder_api": - listening_service => 'cinder_api_cluster', - server_names => $::hostname, - ipaddresses => $api_eth, - ports => $ks_cinder_internal_port, - options => 'check inter 2000 rise 2 fall 5' - } + class { 'cloud::volume::backup': } } diff --git a/manifests/volume/scheduler.pp b/manifests/volume/scheduler.pp new file mode 100644 index 00000000..dafcede5 --- /dev/null +++ b/manifests/volume/scheduler.pp @@ -0,0 +1,36 @@ +# +# Copyright (C) 2014 eNovance SAS +# +# 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. +# +# Volume Scheduler node +# + +class cloud::volume::scheduler( + # Maintain backward compatibility for multi-backend + $volume_multi_backend = false +) { + + include 'cloud::volume' + + if ! $volume_multi_backend { + $scheduler_driver_real = false + } else { + $scheduler_driver_real = 'cinder.scheduler.filter_scheduler.FilterScheduler' + } + + class { 'cinder::scheduler': + scheduler_driver => $scheduler_driver_real + } + +}