Update ports to also accept a ,-separated string
authorHunter Haugen <h.haugen@gmail.com>
Fri, 12 Oct 2012 18:48:35 +0000 (11:48 -0700)
committerHunter Haugen <h.haugen@gmail.com>
Fri, 12 Oct 2012 18:53:52 +0000 (11:53 -0700)
manifests/listen.pp
spec/defines/listen_spec.rb
templates/haproxy_listen_block.erb

index d4ddd60..40e2cf1 100644 (file)
@@ -22,8 +22,9 @@
 #
 # [*ports*]
 #    Ports on which the proxy will listen for connections on the ip address
 #
 # [*ports*]
 #    Ports on which the proxy will listen for connections on the ip address
-#    specified in the virtual_ip parameter. Accepts either a single string or
-#    an array of strings which may be a unique port or a hyphenated port range.
+#    specified in the virtual_ip parameter. Accepts either a single
+#    comma-separated string or an array of strings which may be ports or
+#    hyphenated port ranges.
 #
 # [*order*]
 #    The order, or numerical weight, of the fragment created by this defined
 #
 # [*order*]
 #    The order, or numerical weight, of the fragment created by this defined
index c4539b8..16a0cfa 100644 (file)
@@ -5,7 +5,8 @@ describe 'haproxy::listen' do
   let(:facts) {{ :ipaddress => '1.1.1.1' }}
   context "when only one port is provided" do
     let(:params) do
   let(:facts) {{ :ipaddress => '1.1.1.1' }}
   context "when only one port is provided" do
     let(:params) do
-      { :name  => 'croy',
+      {
+        :name  => 'croy',
         :ports => '18140'
       }
     end
         :ports => '18140'
       }
     end
@@ -18,7 +19,8 @@ describe 'haproxy::listen' do
   end
   context "when an array of ports is provided" do
     let(:params) do
   end
   context "when an array of ports is provided" do
     let(:params) do
-      { :name      => 'apache',
+      {
+        :name      => 'apache',
         :ipaddress => '23.23.23.23',
         :ports     => [
           '80',
         :ipaddress => '23.23.23.23',
         :ports     => [
           '80',
@@ -33,4 +35,19 @@ describe 'haproxy::listen' do
       'content' => "\nlisten apache 23.23.23.23:80,23.23.23.23:443\n  balance  roundrobin\n  option  tcplog\n  option  ssl-hello-chk\n"
     ) }
   end
       'content' => "\nlisten apache 23.23.23.23:80,23.23.23.23:443\n  balance  roundrobin\n  option  tcplog\n  option  ssl-hello-chk\n"
     ) }
   end
+  context "when a comma-separated list of ports is provided" do
+    let(:params) do
+      {
+        :name      => 'apache',
+        :ipaddress => '23.23.23.23',
+        :ports     => '80,443'
+      }
+    end
+
+    it { should contain_concat__fragment('apache_listen_block').with(
+      'order'   => '20',
+      'target'  => '/etc/haproxy/haproxy.cfg',
+      'content' => "\nlisten apache 23.23.23.23:80,23.23.23.23:443\n  balance  roundrobin\n  option  tcplog\n  option  ssl-hello-chk\n"
+    ) }
+  end
 end
 end
index 66abf1f..12f55f6 100644 (file)
@@ -1,5 +1,5 @@
 
 
-listen <%= name %> <%= ipaddress %>:<%= Array(ports).join(",#{ipaddress}:") %>
+listen <%= name %> <%= ipaddress %>:<%= Array(ports).collect { |x| x.split(',')}.flatten.join(",#{ipaddress}:") %>
 <% options.sort.each do |key, val| -%>
 <% if val.is_a?(Array) -%>
 <% val.each do |item| -%>
 <% options.sort.each do |key, val| -%>
 <% if val.is_a?(Array) -%>
 <% val.each do |item| -%>