[openstack-puppet-modules/el6-icehouse] Updated to 2014.1-17
Martin Mágr
mmagr at fedoraproject.org
Wed Jun 25 14:03:14 UTC 2014
commit 567880e74fc33f54e1e5a02cb9ad89dd1e781caa
Author: Martin Magr <mmagr at redhat.com>
Date: Wed Jun 25 15:52:28 2014 +0200
Updated to 2014.1-17
0001-Fixed-ovs-provider.patch | 259 ++++++++++++++
0001-Fixes-bridge-interface-name-check.patch | 27 ++
0001-stop-puppet-from-breaking-neutron.patch | 52 +++
...fored-a-more-suitable-ovs_redhat-provider.patch | 374 ++++++++++++++++++++
...dge-addition-error-if-interface-has-no-IP.patch | 30 ++
openstack-puppet-modules.spec | 78 +++--
rdo-documentation.patch | 27 ++
sources | 8 +-
8 files changed, 828 insertions(+), 27 deletions(-)
---
diff --git a/0001-Fixed-ovs-provider.patch b/0001-Fixed-ovs-provider.patch
new file mode 100644
index 0000000..7910240
--- /dev/null
+++ b/0001-Fixed-ovs-provider.patch
@@ -0,0 +1,259 @@
+From 9e9f91e83ca46c715107aba0299c4c754b22292b Mon Sep 17 00:00:00 2001
+From: Gilles Dubreuil <gilles at redhat.com>
+Date: Tue, 20 May 2014 17:07:45 +1000
+Subject: [PATCH 1/2] Fixed ovs provider
+
+The vs_bridge type needed:
+
+ - A regex value to validate external_ids
+
+ - An extra test for autorequire
+
+The vs_bridge provider needed:
+
+ - Openvswitch corresponding link to go
+ down before being remove: #destroy
+
+ - parameter external_ids had a typo and
+ couldn't be setup properly during create
+
+Standardization
+
+ - Replaced 'optional_commands' with 'commands'
+ and used no path to be more generic as
+ puppet will search for best path
+
+ - Types using :namevar good practice
+
+ - Inline documentation: for all parameters
+ and properties. Replaced @doc with desc
+
+ - Comestic: some doubled quotes => single
+
+Change-Id: I522888b1d2d147e07667344f9dfc9bcbc0c96668
+---
+ lib/puppet/provider/vs_bridge/ovs.rb | 25 ++++++++-------
+ lib/puppet/provider/vs_port/ovs.rb | 14 +++++---
+ lib/puppet/type/vs_bridge.rb | 33 ++++++++++++-------
+ lib/puppet/type/vs_port.rb | 62 ++++++++++++++++++++----------------
+ 4 files changed, 78 insertions(+), 56 deletions(-)
+
+diff --git a/lib/puppet/provider/vs_bridge/ovs.rb b/lib/puppet/provider/vs_bridge/ovs.rb
+index 3d66185..cd51ba3 100644
+--- a/lib/puppet/provider/vs_bridge/ovs.rb
++++ b/lib/puppet/provider/vs_bridge/ovs.rb
+@@ -1,8 +1,8 @@
+-require "puppet"
++require 'puppet'
+
+ Puppet::Type.type(:vs_bridge).provide(:ovs) do
+- optional_commands :vsctl => "/usr/bin/ovs-vsctl",
+- :ip => "/sbin/ip"
++ commands :vsctl => 'ovs-vsctl'
++ commands :ip => 'ip'
+
+ def exists?
+ vsctl("br-exists", @resource[:name])
+@@ -11,22 +11,23 @@ Puppet::Type.type(:vs_bridge).provide(:ovs) do
+ end
+
+ def create
+- vsctl("add-br", @resource[:name])
+- ip("link", "set", @resource[:name], "up")
+- external_ids = @resource[:external_ids] if at resource[:external_ids]
++ vsctl('add-br', @resource[:name])
++ ip('link', 'set', @resource[:name], 'up')
++ external_ids = @resource[:external_ids] if @resource[:external_ids]
+ end
+
+ def destroy
+- vsctl("del-br", @resource[:name])
++ ip('link', 'set', @resource[:name], 'down')
++ vsctl('del-br', @resource[:name])
+ end
+
+- def _split(string, splitter=",")
+- return Hash[string.split(splitter).map{|i| i.split("=")}]
++ def _split(string, splitter=',')
++ return Hash[string.split(splitter).map{|i| i.split('=')}]
+ end
+
+ def external_ids
+- result = vsctl("br-get-external-id", @resource[:name])
+- return result.split("\n").join(",")
++ result = vsctl('br-get-external-id', @resource[:name])
++ return result.split("\n").join(',')
+ end
+
+ def external_ids=(value)
+@@ -35,7 +36,7 @@ Puppet::Type.type(:vs_bridge).provide(:ovs) do
+
+ new_ids.each_pair do |k,v|
+ unless old_ids.has_key?(k)
+- vsctl("br-set-external-id", @resource[:name], k, v)
++ vsctl('br-set-external-id', @resource[:name], k, v)
+ end
+ end
+ end
+diff --git a/lib/puppet/provider/vs_port/ovs.rb b/lib/puppet/provider/vs_port/ovs.rb
+index b7be530..483b13b 100644
+--- a/lib/puppet/provider/vs_port/ovs.rb
++++ b/lib/puppet/provider/vs_port/ovs.rb
+@@ -1,17 +1,21 @@
+-require "puppet"
++require 'puppet'
+
+ Puppet::Type.type(:vs_port).provide(:ovs) do
+- optional_commands :vsctl => "/usr/bin/ovs-vsctl"
++ desc 'Openvswitch port manipulation'
++
++ commands :vsctl => 'ovs-vsctl'
+
+ def exists?
+- vsctl("list-ports", @resource[:bridge]).include? @resource[:interface]
++ vsctl('list-ports', @resource[:bridge]).include? @resource[:interface]
++ rescue Puppet::ExecutionFailure => e
++ return false
+ end
+
+ def create
+- vsctl("add-port", @resource[:bridge], @resource[:interface])
++ vsctl('add-port', @resource[:bridge], @resource[:interface])
+ end
+
+ def destroy
+- vsctl("del-port", @resource[:bridge], @resource[:interface])
++ vsctl('del-port', @resource[:bridge], @resource[:interface])
+ end
+ end
+diff --git a/lib/puppet/type/vs_bridge.rb b/lib/puppet/type/vs_bridge.rb
+index 6a1f84d..c5a5e7c 100644
+--- a/lib/puppet/type/vs_bridge.rb
++++ b/lib/puppet/type/vs_bridge.rb
+@@ -1,19 +1,30 @@
+-require "puppet"
++require 'puppet'
+
+-module Puppet
+- Puppet::Type.newtype(:vs_bridge) do
+- @doc = "A Switch - For example 'br-int' in OpenStack"
++Puppet::Type.newtype(:vs_bridge) do
++ desc 'A Switch - For example "br-int" in OpenStack'
+
+- ensurable
++ ensurable
+
+- newparam(:name) do
+- isnamevar
+- desc "The bridge to configure"
+- end
++ newparam(:name, :namevar => true) do
++ desc 'The bridge to configure'
+
+- newproperty(:external_ids) do
+- desc "External IDs for the bridge"
++ validate do |value|
++ if !value.is_a?(String)
++ raise ArgumentError, "Invalid name #{value}. Requires a String, not a #{value.class}"
++ end
+ end
++ end
+
++ newproperty(:external_ids) do
++ desc 'External IDs for the bridge: "key1=value2,key2=value2"'
++
++ validate do |value|
++ if !value.is_a?(String)
++ raise ArgumentError, "Invalid external_ids #{value}. Requires a String, not a #{value.class}"
++ end
++ if value !~ /^(?>[a-zA-Z]\w*=\w*){1}(?>[,][a-zA-Z]\w*=\w*)*$/
++ raise ArgumentError, "Invalid external_ids #{value}. Must a list of key1=value2,key2=value2"
++ end
++ end
+ end
+ end
+diff --git a/lib/puppet/type/vs_port.rb b/lib/puppet/type/vs_port.rb
+index 58559d2..df4705e 100644
+--- a/lib/puppet/type/vs_port.rb
++++ b/lib/puppet/type/vs_port.rb
+@@ -1,43 +1,49 @@
+-require "puppet"
++require 'puppet'
+
+-module Puppet
+- Puppet::Type.newtype(:vs_port) do
+- @doc = "A Virtual Switch Port"
++Puppet::Type.newtype(:vs_port) do
++ desc 'A Virtual Switch Port'
+
+- ensurable
++ ensurable
+
+- newparam(:interface) do
+- isnamevar
+- desc "The interface to attach to the bridge"
+- end
++ newparam(:interface, :namevar => true) do
++ desc 'The interface to attach to the bridge'
+
+- newparam(:bridge) do
+- desc "What bridge to use"
++ validate do |value|
++ if !value.is_a?(String)
++ raise ArgumentError, "Invalid interface #{value}. Requires a String, not a #{value.class}"
++ end
+ end
++ end
+
+- # newparam(:keep_ip, :boolean => true, :parent => Puppet::Parameter::Boolean) do
+- newparam(:keep_ip) do
+- desc "True: keep physical interface's details and assign them to the bridge"
++ newparam(:bridge) do
++ desc "What bridge to use"
+
+- defaultto false
++ validate do |value|
++ if !value.is_a?(String)
++ raise ArgumentError, "Invalid bridge #{value}. Requires a String, not a #{value.class}'"
++ end
+ end
++ end
++
++ newparam(:keep_ip) do
++ desc "True: keep physical interface's details and assign them to the bridge"
+
+- newparam(:sleep) do
+- desc "Waiting time, in seconds (0 by default), for network to sync after activating port, used with keep_ip only"
++ defaultto false
++ end
++
++ newparam(:sleep) do
++ desc "Waiting time, in seconds (0 by default), for network to sync after activating port, used with keep_ip only"
++
++ defaultto '0'
+
+- defaultto '0'
+-
+- validate do |value|
+- if value.to_i.class != Fixnum || value.to_i < 0
+- raise ArgumentError, "sleep requires a positive integer"
+- end
++ validate do |value|
++ if value.to_i.class != Fixnum || value.to_i < 0
++ raise ArgumentError, "sleep requires a positive integer"
+ end
+ end
+-
+- autorequire(:vs_bridge) do
+- [self[:bridge]]
+- end
++ end
+
++ autorequire(:vs_bridge) do
++ self[:bridge] if self[:bridge]
+ end
+ end
+-
+--
+1.8.3.1
+
diff --git a/0001-Fixes-bridge-interface-name-check.patch b/0001-Fixes-bridge-interface-name-check.patch
new file mode 100644
index 0000000..912b625
--- /dev/null
+++ b/0001-Fixes-bridge-interface-name-check.patch
@@ -0,0 +1,27 @@
+From 0e47ea85dcc926fa6e3e44bf11f91d1da88111fc Mon Sep 17 00:00:00 2001
+From: Ivan Chavero <ichavero at redhat.com>
+Date: Mon, 16 Jun 2014 13:01:25 -0600
+Subject: [PATCH] Fixes bridge interface name check
+
+Fixes name check for interface names that contain:
+"-", ":", "@", "."
+---
+ lib/puppet/type/vs_bridge.rb | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/puppet/type/vs_bridge.rb b/lib/puppet/type/vs_bridge.rb
+index c5a5e7c..13bfd19 100644
+--- a/lib/puppet/type/vs_bridge.rb
++++ b/lib/puppet/type/vs_bridge.rb
+@@ -22,7 +22,7 @@ Puppet::Type.newtype(:vs_bridge) do
+ if !value.is_a?(String)
+ raise ArgumentError, "Invalid external_ids #{value}. Requires a String, not a #{value.class}"
+ end
+- if value !~ /^(?>[a-zA-Z]\w*=\w*){1}(?>[,][a-zA-Z]\w*=\w*)*$/
++ if value !~ /^(?>[a-zA-Z][\w\-\.]*=[\w\-\.:@]*){1}(?>[,][a-zA-Z][\w\-\.]*=[\w\-\.:@]*)*$/
+ raise ArgumentError, "Invalid external_ids #{value}. Must a list of key1=value2,key2=value2"
+ end
+ end
+--
+1.9.3
+
diff --git a/0001-stop-puppet-from-breaking-neutron.patch b/0001-stop-puppet-from-breaking-neutron.patch
new file mode 100644
index 0000000..300f9fd
--- /dev/null
+++ b/0001-stop-puppet-from-breaking-neutron.patch
@@ -0,0 +1,52 @@
+From 5d953a42b5f8a3a52bb894e4289b0d557c047a8a Mon Sep 17 00:00:00 2001
+From: Lars Kellogg-Stedman <lars at redhat.com>
+Date: Fri, 13 Jun 2014 21:32:20 -0400
+Subject: [PATCH] stop puppet from breaking neutron
+
+The neutron-ovs-cleanup service is meant to run at boot to tear down ovs
+interfaces created by Neutron. The service runs and then exits, which
+means that from Puppet's perspective it is always "stopped".
+
+By setting `ensure => started` on the neutron-ovs-cleanup service,
+puppet was starting this service every time it runs, which would
+completely disable Neutron networking.
+
+This patch removes the `ensure` setting, such that the service will be
+enabled and will run at boot but will not be erroneously started by
+Puppet.
+
+Change-Id: I5445fcd05f7cf5c48ded209a2895ea7d8732f40f
+---
+ manifests/agents/ovs.pp | 1 -
+ spec/classes/neutron_agents_ovs_spec.rb | 3 +--
+ 2 files changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/manifests/agents/ovs.pp b/manifests/agents/ovs.pp
+index 289f67f..978c68e 100644
+--- a/manifests/agents/ovs.pp
++++ b/manifests/agents/ovs.pp
+@@ -144,7 +144,6 @@ class neutron::agents::ovs (
+ }
+ if $::neutron::params::ovs_cleanup_service {
+ service {'ovs-cleanup-service':
+- ensure => $service_ensure,
+ name => $::neutron::params::ovs_cleanup_service,
+ enable => $enabled,
+ }
+diff --git a/spec/classes/neutron_agents_ovs_spec.rb b/spec/classes/neutron_agents_ovs_spec.rb
+index 9c1c581..b827baa 100644
+--- a/spec/classes/neutron_agents_ovs_spec.rb
++++ b/spec/classes/neutron_agents_ovs_spec.rb
+@@ -185,8 +185,7 @@ describe 'neutron::agents::ovs' do
+ it 'configures neutron ovs cleanup service' do
+ should contain_service('ovs-cleanup-service').with(
+ :name => platform_params[:ovs_cleanup_service],
+- :enable => true,
+- :ensure => 'running'
++ :enable => true
+ )
+ should contain_package('neutron-plugin-ovs').with_before(/Service\[ovs-cleanup-service\]/)
+ end
+--
+1.9.3
+
diff --git a/0002-Refacfored-a-more-suitable-ovs_redhat-provider.patch b/0002-Refacfored-a-more-suitable-ovs_redhat-provider.patch
new file mode 100644
index 0000000..0dcf6f1
--- /dev/null
+++ b/0002-Refacfored-a-more-suitable-ovs_redhat-provider.patch
@@ -0,0 +1,374 @@
+From bdd88f2ad262f23ca32e3f0c5d4ad78b7c9322d8 Mon Sep 17 00:00:00 2001
+From: Gilles Dubreuil <gilles at redhat.com>
+Date: Wed, 21 May 2014 10:13:00 +1000
+Subject: [PATCH 2/2] Refacfored a more suitable ovs_redhat provider
+
+ - Added a helper class/library to handle ifcfg content
+
+ - Removed keep_ip and sleep parameters
+
+Change-Id: I584fb1442de9a760b3a092f96cbfcbcd6776fdba
+---
+ lib/puppet/provider/vs_bridge/ovs_redhat.rb | 54 ++++-------
+ lib/puppet/provider/vs_port/ovs_redhat.rb | 133 ++++++++++------------------
+ lib/puppet/type/vs_port.rb | 18 ----
+ lib/puppet_x/redhat/ifcfg.rb | 91 +++++++++++++++++++
+ 4 files changed, 151 insertions(+), 145 deletions(-)
+ create mode 100644 lib/puppet_x/redhat/ifcfg.rb
+
+diff --git a/lib/puppet/provider/vs_bridge/ovs_redhat.rb b/lib/puppet/provider/vs_bridge/ovs_redhat.rb
+index 5495d12..e57597d 100644
+--- a/lib/puppet/provider/vs_bridge/ovs_redhat.rb
++++ b/lib/puppet/provider/vs_bridge/ovs_redhat.rb
+@@ -1,51 +1,27 @@
+-require "puppet"
++require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', '..', 'puppet_x', 'redhat', 'ifcfg.rb'))
+
+-Base="/etc/sysconfig/network-scripts/ifcfg-"
++Puppet::Type.type(:vs_bridge).provide(:ovs_redhat, :parent => :ovs) do
++ desc 'Openvswitch bridge manipulation for RedHat OSes family'
+
+-Puppet::Type.type(:vs_bridge).provide(:ovs_redhat) do
+- desc "Openvswitch bridge manipulation for RedHat family OSs"
+-
+- confine :osfamily => :redhat
++ confine :osfamily => :redhat
+ defaultfor :osfamily => :redhat
+
+- optional_commands :vsctl => "/usr/bin/ovs-vsctl",
+- :ip => "/sbin/ip"
+-
+- def exists?
+- vsctl("br-exists", @resource[:name])
+- rescue Puppet::ExecutionFailure
+- return false
+- end
++ commands :vsctl => 'ovs-vsctl'
+
+ def create
+- vsctl("add-br", @resource[:name])
+- ip("link", "set", @resource[:name], "up")
+- external_ids = @resource[:external_ids] if @resource[:external_ids]
+- end
+-
+- def destroy
+- vsctl("del-br", @resource[:name])
+- end
+-
+- def external_ids
+- result = vsctl("br-get-external-id", @resource[:name])
+- return result.split("\n").join(",")
+- end
+-
+- def external_ids=(value)
+- old_ids = _split(external_ids)
+- new_ids = _split(value)
+-
+- new_ids.each_pair do |k,v|
+- unless old_ids.has_key?(k)
+- vsctl("br-set-external-id", @resource[:name], k, v)
+- end
++ begin
++ super unless vsctl('br-exists', @resource[:name])
++ rescue Puppet::ExecutionFailure => e
++ super
+ end
++ IFCFG::Bridge.new(@resource[:name]).save
+ end
+
+- private
++ def exists?
++ super && IFCFG::OVS.exists?(@resource[:name])
++ end
+
+- def _split(string, splitter=",")
+- return Hash[string.split(splitter).map{|i| i.split("=")}]
++ def destroy
++ super && IFCFG::OVS.remove(@resource[:name])
+ end
+ end
+diff --git a/lib/puppet/provider/vs_port/ovs_redhat.rb b/lib/puppet/provider/vs_port/ovs_redhat.rb
+index 6d43797..5a17897 100644
+--- a/lib/puppet/provider/vs_port/ovs_redhat.rb
++++ b/lib/puppet/provider/vs_port/ovs_redhat.rb
+@@ -1,105 +1,62 @@
+-require "puppet"
++require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', '..', 'puppet_x', 'redhat', 'ifcfg.rb'))
+
+-Puppet::Type.type(:vs_port).provide(:ovs_redhat) do
+- desc "Openvswitch port manipulation for RedHat family OSs"
++Puppet::Type.type(:vs_port).provide(:ovs_redhat, :parent => :ovs) do
++ desc 'Openvswitch port manipulation for RedHat OSes family'
+
+- confine :osfamily => :redhat
++ confine :osfamily => :redhat
+ defaultfor :osfamily => :redhat
+
+- optional_commands :vsctl => "/usr/bin/ovs-vsctl",
+- :sleep => "/bin/sleep"
+-
+- def exists?
+- vsctl("list-ports", @resource[:bridge]).include? @resource[:interface]
+- end
++ commands :grep => 'grep'
++ commands :ip => 'ip'
++ commands :ifdown => 'ifdown'
++ commands :ifup => 'ifup'
++ commands :vsctl => 'ovs-vsctl'
+
+ def create
+- if @resource[:keep_ip]
+- create_bridge_file
+- create_physical_interface_file
+- activate_port
++ begin
++ super unless vsctl('br-exists', @resource[:name])
++ rescue Puppet::ExecutionFailure => e
++ super
++ end
++ IFCFG::Port.new(@resource[:interface], @resource[:bridge]).save
++
++ if link?
++ if dynamic?
++ # Persistent MAC address
++ bridge_mac_address = nil
++ datapath_id = vsctl('get', 'bridge', @resource[:bridge], 'datapath_id')
++ bridge_mac_address = datapath_id[-14..-3].scan(/.{1,2}/).join(':') if datapath_id
++ IFCFG::BridgeDynamic.new(@resource[:bridge], @resource[:interface], bridge_mac_address).save
++ else
++ device = ip('addr', 'show', @resource[:interface])
++ cidr = device.to_s.match(/inet (\d*\.\d*\.\d*\.\d*\/\d*)/)[1]
++ IFCFG::BridgeStatic.new(@resource[:bridge], cidr).save
++ end
+ else
+- vsctl("add-port", @resource[:bridge], @resource[:interface])
++ IFCFG::Bridge.new(@resource[:bridge]).save
+ end
+- end
+
+- def destroy
+- vsctl("del-port", @resource[:bridge], @resource[:interface])
++ ifdown(@resource[:interface])
++ ifdown(@resource[:bridge])
++ ifup(@resource[:interface])
++ ifup(@resource[:bridge])
+ end
+
+- private
+-
+- def activate_port
+- atomic_operation="ifdown #{@resource[:interface]};
+- ovs-vsctl add-port #{@resource[:bridge]} #{@resource[:interface]};
+- ifup #{@resource[:interface]};
+- ifup #{@resource[:bridge]}"
+- system(atomic_operation)
+- sleep(@resource[:sleep]) if @resource[:sleep]
+- end
+-
+- def create_physical_interface_file
+- file = File.open(Base + @resource[:interface], 'w+')
+- file << "DEVICE=#{@resource[:interface]}\n"
+- file << "DEVICETYPE=ovs\n"
+- file << "TYPE=OVSPort\n"
+- file << "BOOTPROTO=none\n"
+- file << "OVS_BRIDGE=#{@resource[:bridge]}\n"
+- file << "ONBOOT=yes\n"
+- file.close
++ def exists?
++ super && IFCFG::OVS.exists?(@resource[:interface])
+ end
+
+- def search(file_name, value)
+- File.open(file_name) { |file|
+- file.each_line { |line|
+- match = value.match(line)
+- return match[0] if match
+- }
+- }
++ def destroy
++ super && IFCFG::OVS.remove(@resource[:interface])
+ end
+
+- def create_bridge_file
+- bridge_file = File.open(Base + @resource[:bridge], 'w+')
+- interface_file_name = Base + @resource[:interface]
+-
+- # Ultimately this to go to vs_bridge
+- bridge_file << "DEVICE=#{@resource[:bridge]}\n"
+- bridge_file << "TYPE=OVSBridge\n"
+- bridge_file << "DEVICETYPE=ovs\n"
+- bridge_file << "ONBOOT=yes\n"
+- # End ultimately
+-
+- case search(interface_file_name, /bootproto=.*/i)
+- when /dhcp/
+- bridge_file << "OVSBOOTPROTO=dhcp\n"
+- bridge_file << "OVSDHCPINTERFACES=#{@resource[:interface]}\n"
+- when /static/, /none/
+- bridge_file << "OVSBOOTPROTO=static\n"
++ def dynamic?
++ device = ''
++ device = ip('addr', 'show', @resource[:interface])
++ return device =~ /dynamic/ ? true : false
++ end
+
+- ipaddr = search(interface_file_name, /ipaddr=.*/i)
+- if ipaddr.class == String
+- bridge_file << ipaddr + "\n"
+- else
+- raise RuntimeError, 'Undefined IP address'
+- end
+-
+- mask = search(interface_file_name, /(prefix|netmask)=.*/i)
+- if mask.class == String
+- bridge_file << mask + "\n"
+- else
+- raise RuntimeError, 'Undefined netmask or prefix'
+- end
+- else
+- raise RuntimeError, 'Undefined boot protocol'
+- end
+-
+- # The idea here to have a fixed MAC address
+- datapath_id = vsctl("get", "bridge", @resource[:bridge], 'datapath_id')
+- bridge_mac_address = datapath_id[-14..-3].scan(/.{1,2}/).join(':') if datapath_id
+-
+- if bridge_mac_address
+- bridge_file << "OVS_EXTRA=\"set bridge #{@resource[:bridge]} other-config:hwaddr=#{bridge_mac_address}\"\n"
+- end
+- bridge_file.close
++ def link?
++ grep('up', "/sys/class/net/#{@resource[:interface]}/operstate")
+ end
+-end
+\ No newline at end of file
++end
+diff --git a/lib/puppet/type/vs_port.rb b/lib/puppet/type/vs_port.rb
+index df4705e..8a4b913 100644
+--- a/lib/puppet/type/vs_port.rb
++++ b/lib/puppet/type/vs_port.rb
+@@ -25,24 +25,6 @@ Puppet::Type.newtype(:vs_port) do
+ end
+ end
+
+- newparam(:keep_ip) do
+- desc "True: keep physical interface's details and assign them to the bridge"
+-
+- defaultto false
+- end
+-
+- newparam(:sleep) do
+- desc "Waiting time, in seconds (0 by default), for network to sync after activating port, used with keep_ip only"
+-
+- defaultto '0'
+-
+- validate do |value|
+- if value.to_i.class != Fixnum || value.to_i < 0
+- raise ArgumentError, "sleep requires a positive integer"
+- end
+- end
+- end
+-
+ autorequire(:vs_bridge) do
+ self[:bridge] if self[:bridge]
+ end
+diff --git a/lib/puppet_x/redhat/ifcfg.rb b/lib/puppet_x/redhat/ifcfg.rb
+new file mode 100644
+index 0000000..fe3a648
+--- /dev/null
++++ b/lib/puppet_x/redhat/ifcfg.rb
+@@ -0,0 +1,91 @@
++module IFCFG
++ class OVS
++ Base = '/etc/sysconfig/network-scripts/ifcfg-'
++
++ def self.remove(name)
++ File.delete(Base + name)
++ rescue Errno::ENOENT
++ end
++
++ def self.exists?(name)
++ File.exist?(Base + name)
++ end
++
++ def initialize(name)
++ @name = name
++ @device_type = 'ovs'
++ @onboot = 'yes'
++ end
++
++ def to_s
++ ifcfg = "DEVICE=#{@name}\n"
++ ifcfg << "DEVICETYPE=#{@device_type}\n"
++ ifcfg << "TYPE=#{@type}\n"
++ ifcfg << "ONBOOT=yes\n"
++ ifcfg << "OVSBOOTPROTO=#{@bootproto}\n"
++ end
++
++ def save
++ File.open(Base + @name, 'w+') { |file|
++ file << self.to_s
++ }
++ end
++ end
++
++ class Bridge < OVS
++ def initialize(name, bootproto = nil)
++ super(name)
++ @type = 'OVSBridge'
++ @bootproto = bootproto ? bootproto : 'none'
++ end
++ end
++
++ class BridgeDynamic < Bridge
++ def initialize(name, interface, bridge_mac_address=nil)
++ super(name, 'dhcp')
++ @interface = interface
++ @bridge_mac_address = bridge_mac_address
++ end
++
++ def to_s
++ ifcfg = super
++ ifcfg << "OVSDHCPINTERFACES=#{@interface}\n"
++ if @bridge_mac_address
++ ifcfg << "OVS_EXTRA=\"set bridge #{@name} other-config:hwaddr=#{@bridge_mac_address}\"\n"
++ end
++ ifcfg
++ end
++ end
++
++ class BridgeStatic < Bridge
++ def initialize(name, cidr)
++ super(name)
++ cidr.match('(.*)\/(.*)') { |m|
++ @ipaddr = m[1]
++ @prefix = m[2]
++ }
++ end
++
++ def to_s
++ ifcfg = super
++ if @cidr != ''
++ ifcfg << "IPADDR=#{@ipaddr}\n"
++ ifcfg << "PREFIX=#{@prefix}\n"
++ end
++ ifcfg
++ end
++ end
++
++ class Port < OVS
++ def initialize(name, bridge)
++ super(name)
++ @type = 'OVSPort'
++ @bridge = bridge
++ @bootproto = 'none'
++ end
++
++ def to_s
++ super + "OVS_BRIDGE=#{@bridge}\n"
++ end
++ end
++end
+--
+1.8.3.1
+
diff --git a/0003-Fixes-bridge-addition-error-if-interface-has-no-IP.patch b/0003-Fixes-bridge-addition-error-if-interface-has-no-IP.patch
new file mode 100644
index 0000000..2477026
--- /dev/null
+++ b/0003-Fixes-bridge-addition-error-if-interface-has-no-IP.patch
@@ -0,0 +1,30 @@
+From 7ed22bc78fa82fbc87aee0a5c01e08bd24278cfb Mon Sep 17 00:00:00 2001
+From: Ivan Chavero <ichavero at redhat.com>
+Date: Thu, 19 Jun 2014 16:13:23 -0600
+Subject: [PATCH] Fixes bridge addition error if interface has no IP
+
+It is perfectly valid for not to have an ip address on the bridge and
+for the external network gateway to be elsewhere on the network.
+
+Fixes: rhbz#1109894
+---
+ lib/puppet/provider/vs_port/ovs_redhat.rb | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/lib/puppet/provider/vs_port/ovs_redhat.rb b/lib/puppet/provider/vs_port/ovs_redhat.rb
+index 5a17897..07fc655 100644
+--- a/lib/puppet/provider/vs_port/ovs_redhat.rb
++++ b/lib/puppet/provider/vs_port/ovs_redhat.rb
+@@ -29,7 +29,8 @@ Puppet::Type.type(:vs_port).provide(:ovs_redhat, :parent => :ovs) do
+ IFCFG::BridgeDynamic.new(@resource[:bridge], @resource[:interface], bridge_mac_address).save
+ else
+ device = ip('addr', 'show', @resource[:interface])
+- cidr = device.to_s.match(/inet (\d*\.\d*\.\d*\.\d*\/\d*)/)[1]
++ cidr = device.to_s.match(/inet (\d*\.\d*\.\d*\.\d*\/\d*)/)
++ cidr = cidr ? cidr[1] : ""
+ IFCFG::BridgeStatic.new(@resource[:bridge], cidr).save
+ end
+ else
+--
+1.9.0
+
diff --git a/openstack-puppet-modules.spec b/openstack-puppet-modules.spec
index 1c6bb58..656e4c6 100644
--- a/openstack-puppet-modules.spec
+++ b/openstack-puppet-modules.spec
@@ -6,7 +6,7 @@
%global common_commit 2c0ed2844c606fd806bde0c02e47e79c88fab4a9
%global concat_commit 031bf261289dcbb32e63b053ed5b3a82117698c0
%global firewall_commit c147a624fb3dba7df625d0d7571b1b6669bcfca5
-%global galera_commit 43d31b5cbf688190ea530ce7d8bbc422e2e8a8e3
+%global galera_commit 3f63bd5ffdd707b42ef37a0ead3c2cf7e803586f
%global glance_commit cb0daf02d7a991be642e62294912d93b036c6a5a
%global gluster_commit 80c2b13448c97c70a4b4bc0e402e00ecb5d681d5
%global haproxy_commit f381510e940ee11feb044c1c728ba2e5af807c79
@@ -17,14 +17,14 @@
%global memcached_commit 49dbf102fb6eee90297b2ed6a1fa463a8c5ccee7
%global module_data_commit 159fc5e0e21ce9df96c777f0064b5eca88e29cae
%global mongodb_commit 3f392925710f1758a95f1775d700b5fb787a003d
-%global mysql_commit 54588506e6d82bbd079739799a3fa50696a83a01
+%global mysql_commit 8d5fed32c22c5e4231d5a475cfe8060ce8b2ed0f
%global neutron_commit 66c436bc2f06c5a71d79c674697394a11ec227f9
%global nova_commit 1e77a9d48a85a3ae6d30993b3c887f58e4a5973c
%global nssdb_commit b3799a9a7c62c3b5b7968f9860220a885b45fb8a
%global openstack_commit c20039004cb39e78c93cd00f154c3b9ba6404951
-%global pacemaker_commit fc9ef90dca8a20ae2a52cdb34507f3c5d1c60124
+%global pacemaker_commit 2aa760c3497840ad2474f15737846e2ad95c54e5
%global puppet_commit 07ec49d1f67a498b31b4f164678a76c464e129c4
-%global qpid_commit 1d6b2752c5c8cd3439dc31b62a2f163886ce22a5
+%global qpid_commit 1f0c32b39ad17e7acbd440b50fb6f0875971f5e1
%global rabbitmq_commit e7447851a60a419cd51a09ccf807964b36fdebac
%global rsync_commit 357d51f3a6a22bc3da842736176c3510e507b4fb
%global sahara_commit f4e5681cfb289113be1ba49c12709145ecbad938
@@ -42,7 +42,7 @@
Name: openstack-puppet-modules
Version: 2014.1
-Release: 16%{?dist}
+Release: 17%{?dist}
Summary: Puppet modules used to deploy OpenStack
License: ASL 2.0 and GPLv2 and GPLv3
@@ -88,15 +88,25 @@ Source36: https://github.com/derekhiggins/puppet-vlan/archive/%{vlan_commit}/vla
Source37: https://github.com/stackforge/puppet-vswitch/archive/%{vswitch_commit}/vswitch-%{vswitch_commit}.tar.gz
Source38: https://github.com/packstack/puppetlabs-xinetd/archive/%{xinetd_commit}/xinetd-%{xinetd_commit}.tar.gz
-Patch0: compute_driver.patch
-Patch2: openstack.patch
-Patch5: nova.patch
-Patch7: 0001-Quickfix-to-remove-duplication-with-ceilometer-agent.patch
-Patch8: puppetlabs-firewall-pull-request-337.patch
-Patch10: puppetlabs-firewall-pull-request-365.patch
-Patch11: puppetlabs-firewall-pull-request-367.patch
-Patch12: swift-restorecon.patch
-Patch13: 0001-Implement-Keystone-domain-creation.patch
+# stable patches
+Patch0: rdo-documentation.patch
+
+# temporary patches
+Patch100: compute_driver.patch
+Patch101: openstack.patch
+Patch102: nova.patch
+Patch103: 0001-Quickfix-to-remove-duplication-with-ceilometer-agent.patch
+Patch104: puppetlabs-firewall-pull-request-337.patch
+Patch105: puppetlabs-firewall-pull-request-365.patch
+Patch106: puppetlabs-firewall-pull-request-367.patch
+Patch107: swift-restorecon.patch
+Patch108: 0001-Implement-Keystone-domain-creation.patch
+Patch109: 0001-Fixed-ovs-provider.patch
+Patch110: 0002-Refacfored-a-more-suitable-ovs_redhat-provider.patch
+Patch111: 0001-stop-puppet-from-breaking-neutron.patch
+Patch112: 0001-Fixes-bridge-interface-name-check.patch
+Patch113: 0003-Fixes-bridge-addition-error-if-interface-has-no-IP.patch
+
BuildArch: noarch
Requires: rubygem-json
@@ -146,30 +156,44 @@ A collection of Puppet modules used to install and configure OpenStack.
%setup -c -q -T -D -a 37
%setup -c -q -T -D -a 38
+# puppet-horizon patches
+cd %{_builddir}/%{name}-%{version}/puppet-horizon-%{horizon_commit}
+%patch0 -p1
+
# puppet-nova patches
cd %{_builddir}/%{name}-%{version}/puppet-nova-%{nova_commit}
-%patch0 -p1
-%patch5 -p1
-%patch7 -p1
+%patch100 -p1
+%patch102 -p1
+%patch103 -p1
# puppet-heat patches
cd %{_builddir}/%{name}-%{version}/puppet-heat-%{heat_commit}
-%patch13 -p1
+%patch108 -p1
# puppet-openstack patches
cd %{_builddir}/%{name}-%{version}/puppet-openstack-%{openstack_commit}
-%patch2 -p1
+%patch101 -p1
# puppetlabs-firewall patches
cd %{_builddir}/%{name}-%{version}/puppetlabs-firewall-%{firewall_commit}
-%patch8 -p1
-%patch10 -p1
-%patch11 -p1
+%patch104 -p1
+%patch105 -p1
+%patch106 -p1
# puppet-swift patches
cd %{_builddir}/%{name}-%{version}/puppet-swift-%{swift_commit}
-%patch12 -p1
+%patch107 -p1
+
+# puppet-neutron patches
+cd %{_builddir}/%{name}-%{version}/puppet-neutron-%{neutron_commit}
+%patch111 -p1
+# puppet-vswitch patches
+cd %{_builddir}/%{name}-%{version}/puppet-vswitch-%{vswitch_commit}
+%patch109 -p1
+%patch110 -p1
+%patch112 -p1
+%patch113 -p1
find %{_builddir}/%{name}-%{version}/ -type f -name ".*" -exec rm {} +
find %{_builddir}/%{name}-%{version}/ -size 0 -exec rm {} +
@@ -231,6 +255,14 @@ rm -f %{buildroot}/%{_datadir}/openstack-puppet/modules/nova/files/nova-novncpro
%changelog
+* Wed Jun 25 2014 Martin Mágr <mmagr at redhat.com> - 2014.1-17
+- Updated modules to redhat-openstack/openstack-puppet-modules-2014.1-17
+- Added rdo-documentation.patch
+- Added 0001-stop-puppet-from-breaking-neutron.patch
+- Added 0001-Fixes-bridge-interface-name-check.patch
+- Added 0001-Fixed-ovs-provider.patch, 0002-Refacfored-a-more-suitable-ovs_redhat-provider.patch,
+ 0003-Fixes-bridge-addition-error-if-interface-has-no-IP.patch (rhbz#1109894)
+
* Wed Jun 18 2014 Martin Mágr <mmagr at redhat.com> - 2014.1-16
- Updated modules to redhat-openstack/openstack-puppet-modules-2014.1-16
- Removed keystone.patch and 0001-Fixes-agent_notification_service_name.patch
diff --git a/rdo-documentation.patch b/rdo-documentation.patch
new file mode 100644
index 0000000..38d9667
--- /dev/null
+++ b/rdo-documentation.patch
@@ -0,0 +1,27 @@
+From 87721197918bb50682545c0c95a8a6b0b9c8b5d6 Mon Sep 17 00:00:00 2001
+From: Martin Magr <mmagr at redhat.com>
+Date: Thu, 19 Jun 2014 12:49:20 +0200
+Subject: [PATCH] Change default documentation URL
+
+Documentation should point to RDO docs by default. This patch is changing it.
+
+Fixes: rhbz#1092019
+---
+ manifests/init.pp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/manifests/init.pp b/manifests/init.pp
+index aa3f823..640a964 100644
+--- a/manifests/init.pp
++++ b/manifests/init.pp
+@@ -185,7 +185,7 @@ class horizon(
+ $available_regions = undef,
+ $api_result_limit = 1000,
+ $log_level = 'DEBUG',
+- $help_url = 'http://docs.openstack.org',
++ $help_url = 'http://openstack.redhat.com/Docs',
+ $local_settings_template = 'horizon/local_settings.py.erb',
+ $configure_apache = true,
+ $bind_address = undef,
+--
+1.9.3
diff --git a/sources b/sources
index a887d70..1e6ae7a 100644
--- a/sources
+++ b/sources
@@ -5,7 +5,7 @@
6e70f75bbb494957eb64e5b71f835bd3 common-2c0ed2844c606fd806bde0c02e47e79c88fab4a9.tar.gz
8cff08df8d7fe83817af8b4ba5b13227 concat-031bf261289dcbb32e63b053ed5b3a82117698c0.tar.gz
3c338845ca69b093a065cae1c35996c0 firewall-c147a624fb3dba7df625d0d7571b1b6669bcfca5.tar.gz
-026adeaf3615ec8e4b20f3980a42f604 galera-43d31b5cbf688190ea530ce7d8bbc422e2e8a8e3.tar.gz
+4215c82a4f158d748023fde09d0c061f galera-3f63bd5ffdd707b42ef37a0ead3c2cf7e803586f.tar.gz
590eefb9f7520cf37b3513031dba426f glance-cb0daf02d7a991be642e62294912d93b036c6a5a.tar.gz
7d21112588ba43525f2006fd65a00b07 gluster-80c2b13448c97c70a4b4bc0e402e00ecb5d681d5.tar.gz
edef1e76ec9200bb1989302f19ea18b9 haproxy-f381510e940ee11feb044c1c728ba2e5af807c79.tar.gz
@@ -16,14 +16,14 @@ b92cb5bb97ea2c2ccdd6fbd361cbb2e7 inifile-fe9b0d5229ea37179a08c4b49239da9bc950ac
d91faa359ff81cc3e5bdc2a4217afff5 memcached-49dbf102fb6eee90297b2ed6a1fa463a8c5ccee7.tar.gz
8506a98c0ceddf5299bdfe579e256c3f module-data-159fc5e0e21ce9df96c777f0064b5eca88e29cae.tar.gz
25f400100566e0a10580b84835126631 mongodb-3f392925710f1758a95f1775d700b5fb787a003d.tar.gz
-e90d1ac45fcdfe905452bfe8132c8ee9 mysql-54588506e6d82bbd079739799a3fa50696a83a01.tar.gz
+9a74df5dd93d041d7f0095ca769294c9 mysql-8d5fed32c22c5e4231d5a475cfe8060ce8b2ed0f.tar.gz
e5a5e314c4b96d79d467cd0afa72b60f neutron-66c436bc2f06c5a71d79c674697394a11ec227f9.tar.gz
2f0d23068f0eb1916755787b1d7bb9ae nova-1e77a9d48a85a3ae6d30993b3c887f58e4a5973c.tar.gz
ee40158527431488131f4331092b958c nssdb-b3799a9a7c62c3b5b7968f9860220a885b45fb8a.tar.gz
b210832794c85b5f4e5aa75de0007b51 openstack-c20039004cb39e78c93cd00f154c3b9ba6404951.tar.gz
-619f2768622de37a65b925caf2e040ee pacemaker-fc9ef90dca8a20ae2a52cdb34507f3c5d1c60124.tar.gz
+30968baadd9a70399d427805fc44da44 pacemaker-2aa760c3497840ad2474f15737846e2ad95c54e5.tar.gz
625ce5ea3a37e0d1e4a0b1c09b6495ff puppet-07ec49d1f67a498b31b4f164678a76c464e129c4.tar.gz
-77ccfe862e8ec26223ddfd2a45c5dbcf qpid-1d6b2752c5c8cd3439dc31b62a2f163886ce22a5.tar.gz
+0597e6eb94ca2cbbf3b22b4294e60dae qpid-1f0c32b39ad17e7acbd440b50fb6f0875971f5e1.tar.gz
a05c3e7ba8e2055a15901d1ddbd8cb79 rabbitmq-e7447851a60a419cd51a09ccf807964b36fdebac.tar.gz
b5d0c1c4cd711a3f762052813ad6a1bc rsync-357d51f3a6a22bc3da842736176c3510e507b4fb.tar.gz
ed84fcfd855b066f6d74777d5d6b76cc sahara-f4e5681cfb289113be1ba49c12709145ecbad938.tar.gz
More information about the scm-commits
mailing list