]> review.fuel-infra Code Review - puppet-modules/puppetlabs-firewall.git/commitdiff
MODULES-1029
authorJonathan Tripathy <jonathan.tripathy@puppetlabs.com>
Thu, 22 Jan 2015 23:39:40 +0000 (15:39 -0800)
committerJonathan Tripathy <jt@puppetlabs.com>
Fri, 23 Jan 2015 19:54:11 +0000 (11:54 -0800)
Fixed issues with Ubuntu 14.10

lib/facter/iptables_persistent_version.rb
lib/puppet/type/firewall.rb
lib/puppet/util/firewall.rb
manifests/params.pp
spec/unit/facter/iptables_persistent_version_spec.rb

index 80bf9dea1a45341aa6f65f4ddcd1dd3b6b3af5a0..4dbf6bcf6c56dba334e8330f03ac11f65e0d62f8 100644 (file)
@@ -3,7 +3,14 @@ Facter.add(:iptables_persistent_version) do
   setcode do
     # Throw away STDERR because dpkg >= 1.16.7 will make some noise if the
     # package isn't currently installed.
-    cmd = "dpkg-query -Wf '${Version}' iptables-persistent 2>/dev/null"
+    os = Facter.value(:operatingsystem)
+    os_release = Facter.value(:operatingsystemrelease)
+    if (os == 'Debian' and (Puppet::Util::Package.versioncmp(os_release, '8.0') >= 0)) or
+       (os == 'Ubuntu' and (Puppet::Util::Package.versioncmp(os_release, '14.10') >= 0))
+      cmd = "dpkg-query -Wf '${Version}' netfilter-persistent 2>/dev/null"
+    else
+      cmd = "dpkg-query -Wf '${Version}' iptables-persistent 2>/dev/null"
+    end
     version = Facter::Util::Resolution.exec(cmd)
 
     if version.nil? or !version.match(/\d+\.\d+/)
index 0895b6c6209f212c9c03dfad5aaae7bc6ba6abd4..6209c88407bc0f9a3c16f6ca5da62d244e4a8700 100644 (file)
@@ -1113,7 +1113,7 @@ Puppet::Type.newtype(:firewall) do
   autorequire(:package) do
     case value(:provider)
     when :iptables, :ip6tables
-      %w{iptables iptables-persistent iptables-services}
+      %w{iptables iptables-persistent netfilter-persistent iptables-services}
     else
       []
     end
index 34bcd4044935f5ee14cefd989680f4a94d28fdd8..fa81e75ed224695038e693f53ba9879084a4e4ec 100644 (file)
@@ -191,7 +191,7 @@ module Puppet::Util::Firewall
     when :Debian
       case proto.to_sym
       when :IPv4, :IPv6
-        if Puppet::Util::Package.versioncmp(persist_ver, '1.0') > 0
+        if (persist_ver and Puppet::Util::Package.versioncmp(persist_ver, '1.0') > 0)
           %w{/usr/sbin/service netfilter-persistent save}
         else
           %w{/usr/sbin/service iptables-persistent save}
index c9814bf6e200022867d052b40a0119ee233b32db..4d66159bde928fa0271795b6c12e00f6789c33f7 100644 (file)
@@ -29,21 +29,31 @@ class firewall::params {
       }
     }
     'Debian': {
-      if $::operatingsystem == 'Debian' and versioncmp($::operatingsystemrelease, '8.0') >= 0 {
-        $service_name = 'netfilter-persistent'
-        $package_name = 'netfilter-persistent'
-      } else {
-        $service_name = 'iptables-persistent'
-        $package_name = 'iptables-persistent'
-      }
-    }
-    'Ubuntu' : {
-      if $::operatingsystem == 'Ubuntu' and versioncmp($::operatingsystemrelease, '14.10') >= 0 {
-        $service_name = 'netfilter-persistent'
-        $package_name = 'netfilter-persistent'
-      } else {
-        $service_name = 'iptables-persistent'
-        $package_name = 'iptables-persistent'
+      case $::operatingsystem {
+        'Debian': {
+          if versioncmp($::operatingsystemrelease, '8.0') >= 0 {
+            $service_name = 'netfilter-persistent'
+            $package_name = 'netfilter-persistent'
+          } else {
+            $service_name = 'iptables-persistent'
+            $package_name = 'iptables-persistent'
+          }
+
+        }
+        'Ubuntu': {
+          if versioncmp($::operatingsystemrelease, '14.10') >= 0 {
+            $service_name = 'netfilter-persistent'
+            $package_name = 'netfilter-persistent'
+          } else {
+            $service_name = 'iptables-persistent'
+            $package_name = 'iptables-persistent'
+          }
+
+        }
+        default: {
+          $service_name = 'iptables-persistent'
+          $package_name = 'iptables-persistent'
+        }
       }
     }
     default: {
index 13a23a5c299c4055170b6a458353af3e977a8907..2c97c3d009c1531262f93fe927ff8fad8d7a4693 100644 (file)
 require 'spec_helper'
 
 describe "Facter::Util::Fact iptables_persistent_version" do
-  before { Facter.clear }
-  let(:dpkg_cmd) { "dpkg-query -Wf '${Version}' iptables-persistent 2>/dev/null" }
-
-  {
-    "Debian" => "0.0.20090701",
-    "Ubuntu" => "0.5.3ubuntu2",
-  }.each do |os, ver|
-    describe "#{os} package installed" do
+
+
+  context "iptables-persistent applicable" do
+    before { Facter.clear }
+
+    let(:dpkg_cmd) { "dpkg-query -Wf '${Version}' iptables-persistent 2>/dev/null" }
+
+    {
+      "Debian" => "0.0.20090701",
+      "Ubuntu" => "0.5.3ubuntu2",
+    }.each do |os, ver|
+
+      if os == "Debian"
+        os_release = "7.0"
+      elsif os == "Ubuntu"
+        os_release = "14.04"
+      end
+
+      describe "#{os} package installed" do
+        before {
+          allow(Facter.fact(:operatingsystem)).to receive(:value).and_return(os)
+          allow(Facter.fact(:operatingsystemrelease)).to receive(:value).and_return(os_release)
+          allow(Facter::Util::Resolution).to receive(:exec).with(dpkg_cmd).
+            and_return(ver)
+        }
+        it { Facter.fact(:iptables_persistent_version).value.should == ver }
+      end
+    end
+
+    describe 'Ubuntu package not installed' do
       before {
-        allow(Facter.fact(:operatingsystem)).to receive(:value).and_return(os)
+        allow(Facter.fact(:operatingsystem)).to receive(:value).and_return('Ubuntu')
+        allow(Facter.fact(:operatingsystemrelease)).to receive(:value).and_return('14.04')
         allow(Facter::Util::Resolution).to receive(:exec).with(dpkg_cmd).
-          and_return(ver)
+          and_return(nil)
       }
-      it { Facter.fact(:iptables_persistent_version).value.should == ver }
+      it { Facter.fact(:iptables_persistent_version).value.should be_nil }
+    end
+
+    describe 'CentOS not supported' do
+      before { allow(Facter.fact(:operatingsystem)).to receive(:value).
+                 and_return("CentOS") }
+      it { Facter.fact(:iptables_persistent_version).value.should be_nil }
     end
-  end
 
-  describe 'Ubuntu package not installed' do
-    before {
-      allow(Facter.fact(:operatingsystem)).to receive(:value).and_return('Ubuntu')
-      allow(Facter::Util::Resolution).to receive(:exec).with(dpkg_cmd).
-        and_return(nil)
-    }
-    it { Facter.fact(:iptables_persistent_version).value.should be_nil }
   end
 
-  describe 'CentOS not supported' do
-    before { allow(Facter.fact(:operatingsystem)).to receive(:value).
-               and_return("CentOS") }
-    it { Facter.fact(:iptables_persistent_version).value.should be_nil }
+  context "netfilter-persistent applicable" do
+    before { Facter.clear }
+
+    let(:dpkg_cmd) { "dpkg-query -Wf '${Version}' netfilter-persistent 2>/dev/null" }
+
+    {
+      "Debian" => "0.0.20090701",
+      "Ubuntu" => "0.5.3ubuntu2",
+    }.each do |os, ver|
+
+      if os == "Debian"
+        os_release = "8.0"
+      elsif os == "Ubuntu"
+        os_release = "14.10"
+      end
+
+      describe "#{os} package installed" do
+        before {
+          allow(Facter.fact(:operatingsystem)).to receive(:value).and_return(os)
+          allow(Facter.fact(:operatingsystemrelease)).to receive(:value).and_return(os_release)
+          allow(Facter::Util::Resolution).to receive(:exec).with(dpkg_cmd).
+            and_return(ver)
+        }
+        it { Facter.fact(:iptables_persistent_version).value.should == ver }
+      end
+    end
+
+    describe 'Ubuntu package not installed' do
+      os_release = "14.10"
+      before {
+        allow(Facter.fact(:operatingsystem)).to receive(:value).and_return('Ubuntu')
+        allow(Facter.fact(:operatingsystemrelease)).to receive(:value).and_return(os_release)
+        allow(Facter::Util::Resolution).to receive(:exec).with(dpkg_cmd).
+          and_return(nil)
+      }
+      it { Facter.fact(:iptables_persistent_version).value.should be_nil }
+    end
+
+    describe 'CentOS not supported' do
+      before { allow(Facter.fact(:operatingsystem)).to receive(:value).
+                 and_return("CentOS") }
+      it { Facter.fact(:iptables_persistent_version).value.should be_nil }
+    end
+
   end
+
+
+
+
 end