cookbook-openstack-network/recipes/build_openvswitch_source.rb

100 lines
3.4 KiB
Ruby

# Encoding: utf-8
#
# Cookbook Name:: openstack-network
# Recipe:: build_openvswitch_source
#
# Copyright 2013, AT&T
#
# 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.
#
['quantum', 'neutron'].include?(node['openstack']['compute']['network']['service_type']) || return
platform_options = node['openstack']['network']['platform']
platform_options['neutron_openvswitch_build_packages'].each do |pkg|
package pkg do
action :install
end
end
ovs_options = node['openstack']['network']['openvswitch']
src_filename = ovs_options['openvswitch_filename']
src_filepath = "#{Chef::Config['file_cache_path']}/#{src_filename}"
extract_path = "#{Chef::Config['file_cache_path']}/#{ovs_options['openvswitch_checksum']}"
remote_file src_filepath do
source ovs_options['openvswitch_url']
checksum ovs_options['openvswitch_checksum']
owner 'root'
group 'root'
mode 00644
not_if { ::File.exist?("#{Chef::Config['file_cache_path']}/#{ovs_options['openvswitch_filename']}") }
end
bash 'disable_openvswitch_before_upgrade' do
cwd '/tmp'
not_if "dpkg -l | grep openvswitch-switch | grep #{ovs_options['openvswitch_dpkgversion']}"
code <<-EOH
# Politely stop OVS
service openvswitch-switch stop || exit 0
sleep 2;
# After stopping it, ensure it's down
killall -9 ovs-vswitchd || exit 0
killall -9 ovsdb-server || exit 0
fi
EOH
end
bash 'extract_package' do
cwd ::File.dirname(src_filepath)
code <<-EOH
rm -rf #{extract_path}
mkdir -p #{extract_path}
tar xzf #{src_filename} -C #{extract_path}
cd #{extract_path}/#{ovs_options['openvswitch_base_filename']}
DEB_BUILD_OPTIONS='parallel=8' fakeroot debian/rules binary
EOH
not_if "dpkg -l | grep openvswitch-switch | grep #{ovs_options['openvswitch_dpkgversion']}"
notifies :install, 'dpkg_package[openvswitch-common]', :immediately
notifies :install, 'dpkg_package[openvswitch-datapath-dkms]', :immediately
notifies :install, 'dpkg_package[openvswitch-pki]', :immediately
notifies :install, 'dpkg_package[openvswitch-switch]', :immediately
end
dpkg_package 'openvswitch-common' do
source "#{extract_path}/openvswitch-common_#{ovs_options['openvswitch_dpkgversion']}_#{ovs_options['openvswitch_architecture']}.deb"
action :nothing
end
dpkg_package 'openvswitch-common' do
source "#{extract_path}/openvswitch-common_#{ovs_options['openvswitch_dpkgversion']}_#{ovs_options['openvswitch_architecture']}.deb"
action :nothing
end
dpkg_package 'openvswitch-datapath-dkms' do
source "#{extract_path}/openvswitch-datapath-dkms_#{ovs_options['openvswitch_dpkgversion']}_all.deb"
action :nothing
end
dpkg_package 'openvswitch-pki' do
source "#{extract_path}/openvswitch-pki_#{ovs_options['openvswitch_dpkgversion']}_all.deb"
action :nothing
end
dpkg_package 'openvswitch-switch' do
source "#{extract_path}/openvswitch-switch_#{ovs_options['openvswitch_dpkgversion']}_#{ovs_options['openvswitch_architecture']}.deb"
action :nothing
end