Adam Spiers a10a3ad461 merge pacemaker cookbooks
Preliminary merge of git://github.com/ktc-itsnotbutter/pacemaker.git
(in the chef/cookbooks/pacemaker/ directory) with the cookbook
from the pacemaker_service branch of:

  https://github.com/mattray/barclamp_ha_service.git

(in the chef/cookbooks/pacemaker2/ directory)

since both forks had some nice stuff.  This merge is not complete yet.
2013-12-12 22:59:32 +00:00

69 lines
2.1 KiB
Ruby

#
# Author:: Matt Ray (<matt@opscode.com>)
# Cookbook Name:: pacemaker
# Provider:: service
#
# Copyright:: 2011, Opscode, 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.
#
# actions :create, :remove
# attribute :service, :kind_of => String, :name_attribute => true
# attribute :vip, :kind_of => String
# attribute :active, :default => false
# attribute :path, :kind_of => String
action :create do
service = new_resource.service
vip = new_resource.vip
active = new_resource.active
path = new_resource.path
Chef::Log.info "pacemaker_service #{service} #{vip} #{active} #{path}"
oldservice = node['pacemaker']['services'][service]
newservice = {}
newservice['vip'] = vip
if active
newservice['active'] = node.name
else
#search for active?
#newservice['active'] =
if oldservice
newservice['active'] = oldservice['active']
newservice['passive'] = oldservice['passive']
newservice['passive'].push(node.name)
newservice['passive'].uniq!.sort!
else
newservice['passive'] = [node.name]
end
end
#compare with previous state
if newservice != oldservice
#put the service into the attributes of the node
node['pacemaker']['services'][service] = newservice
#figure out how pacemaker handles services
new_resource.updated_by_last_action(true)
end
end
action :remove do
service = new_resource.service
if node['pacemaker']['services'][service]
#remove the parameters into the attributes of the node
node['pacemaker']['services'].delete(service)
#figure out how to restore services from pacemaker control
new_resource.updated_by_last_action(true)
end
end