Files
cookbook-openstack-block-st…/recipes/api.rb
Lance Albertson 0566bf9578 Properly notify apache restarts on cinder configuration updates
This uses edit_resource to add a notification in the block storage
apache configuration when it gets updated. This is a workaround due to
the fact we are using a version of the apache2 cookbook that is still
using definitions and cannot add notifications with definitions.

This will be removed in the Stein release when we migrate to the newer
apache2 cookbook which uses proper resources.

Change-Id: I7efddef83333ca0794ee3c298ca1a2488defe941
Signed-off-by: Lance Albertson <lance@osuosl.org>
2019-07-09 12:56:37 -07:00

101 lines
3.6 KiB
Ruby

# encoding: UTF-8
#
# Cookbook Name:: openstack-block-storage
# Recipe:: api
#
# Copyright 2012, Rackspace US, Inc.
# Copyright 2012-2013, AT&T Services, Inc.
# Copyright 2013, Opscode, Inc.
# Copyright 2013-2014, SUSE Linux Gmbh.
#
# 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.
#
# Make Openstack object available in Chef::Recipe
class ::Chef::Recipe
include ::Openstack
end
include_recipe 'openstack-block-storage::cinder-common'
bind_service = node['openstack']['bind_service']['all']['block-storage']
platform_options = node['openstack']['block-storage']['platform']
platform_options['cinder_api_packages'].each do |pkg|
package pkg do
options platform_options['package_overrides']
action :upgrade
end
end
db_type = node['openstack']['db']['block_storage']['service_type']
node['openstack']['db']['python_packages'][db_type].each do |pkg|
package pkg do
action :upgrade
end
end
execute 'cinder-manage db sync' do
user node['openstack']['block-storage']['user']
group node['openstack']['block-storage']['group']
end
if node['openstack']['block-storage']['policyfile_url']
remote_file '/etc/cinder/policy.json' do
source node['openstack']['block-storage']['policyfile_url']
owner node['openstack']['block-storage']['user']
group node['openstack']['block-storage']['group']
mode 0o0644
end
end
# remove the cinder-wsgi.conf automatically generated from package
apache_config 'cinder-wsgi' do
enable false
end
web_app 'cinder-api' do
template 'wsgi-template.conf.erb'
daemon_process 'cinder-wsgi'
server_host bind_service['host']
server_port bind_service['port']
server_entry '/usr/bin/cinder-wsgi'
log_dir node['apache']['log_dir']
run_dir node['apache']['run_dir']
user node['openstack']['block-storage']['user']
group node['openstack']['block-storage']['group']
use_ssl node['openstack']['block-storage']['ssl']['enabled']
cert_file node['openstack']['block-storage']['ssl']['certfile']
chain_file node['openstack']['block-storage']['ssl']['chainfile']
key_file node['openstack']['block-storage']['ssl']['keyfile']
ca_certs_path node['openstack']['block-storage']['ssl']['ca_certs_path']
cert_required node['openstack']['block-storage']['ssl']['cert_required']
protocol node['openstack']['block-storage']['ssl']['protocol']
ciphers node['openstack']['block-storage']['ssl']['ciphers']
end
# Hack until Apache cookbook has lwrp's for proper use of notify restart
# apache2 after keystone if completely configured. Whenever a cinder
# config is updated, have it notify the resource which clears the lock
# so the service can be restarted.
# TODO(ramereth): This should be removed once this cookbook is updated
# to use the newer apache2 cookbook which uses proper resources.
edit_resource(:template, "#{node['apache']['dir']}/sites-available/cinder-api.conf") do
notifies :run, 'execute[Clear cinder-api apache restart]', :immediately
end
execute 'cinder-api apache restart' do
command "touch #{Chef::Config[:file_cache_path]}/cinder-api-apache-restarted"
creates "#{Chef::Config[:file_cache_path]}/cinder-api-apache-restarted"
notifies :restart, 'service[apache2]', :immediately
end