This cookbook looks a bit more like RCB due to some difficult to solve
OOO issues.
1. Needed to duplicate the cinder.conf template in each service needing it, due
to the following reasons:
a. Having a notifies in common.rb to restart services that were not defined
yet (but in later recipes) broke the recipe.
b. Having notifies in common.rb for services that were not installed breaks
things.
Due to this very diffuclt issue to solve, felt it was okay to duplicate the
template rendering.
2. Need to lookup the database password from a mysql server query, like we do
elsewhere. Have not tackled this yet. Hardcoded to see if service would
finally install.
3. Reformatted a few things to match our other openstack cookbooks.
4. Found a few bugs with endpoints needing '.to_s', or missing @ reference
in template.
78 lines
2.2 KiB
Ruby
78 lines
2.2 KiB
Ruby
#
|
|
# Cookbook Name:: cinder
|
|
# Recipe:: api
|
|
#
|
|
# Copyright 2012, Rackspace US, Inc.
|
|
# Copyright 2012, AT&T, 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.
|
|
#
|
|
|
|
include_recipe "cinder::common"
|
|
|
|
class ::Chef::Recipe
|
|
include ::Openstack
|
|
end
|
|
|
|
platform_options = node["cinder"]["platform"]
|
|
|
|
service "cinder-api" do
|
|
service_name platform_options["cinder_api_service"]
|
|
supports :status => true, :restart => true
|
|
|
|
action :enable
|
|
end
|
|
|
|
db_user = node["cinder"]["db"]["username"]
|
|
db_pass = node["cinder"]["db"]["password"]
|
|
sql_connection = db_uri("cinder", db_user, "cinder")
|
|
|
|
rabbit_server_role = node["cinder"]["rabbit_server_chef_role"]
|
|
rabbit_info = get_settings_by_role rabbit_server_role, "queue"
|
|
|
|
glance_api_role = node["cinder"]["glance_api_chef_role"]
|
|
glance = get_settings_by_role glance_api_role, "glance"
|
|
glance_api_endpoint = endpoint "image-api"
|
|
|
|
template "/etc/cinder/cinder.conf" do
|
|
source "cinder.conf.erb"
|
|
group node["cinder"]["group"]
|
|
owner node["cinder"]["user"]
|
|
mode 00644
|
|
variables(
|
|
:sql_connection => sql_connection,
|
|
:rabbit_host => rabbit_info["host"],
|
|
:rabbit_port => rabbit_info["port"],
|
|
:glance_host => glance_api_endpoint.host,
|
|
:glance_port => glance_api_endpoint.port
|
|
)
|
|
|
|
notifies :restart, resources(:service => "cinder-api"), :delayed
|
|
end
|
|
|
|
identity_admin_endpoint = endpoint "identity-admin"
|
|
identity_endpoint = endpoint "identity-api"
|
|
|
|
template "/etc/cinder/api-paste.ini" do
|
|
source "api-paste.ini.erb"
|
|
group node["cinder"]["group"]
|
|
owner node["cinder"]["user"]
|
|
mode 00644
|
|
variables(
|
|
"identity_endpoint" => identity_endpoint,
|
|
"identity_admin_endpoint" => identity_admin_endpoint
|
|
)
|
|
|
|
notifies :restart, resources(:service => "cinder-api"), :immediately
|
|
end
|