Add initial meta-stx to support StarlingX build
[pti/rtp.git] / meta-stx / recipes-support / puppet / files / puppet-network / fix-absent-options.patch
1 From f22d4c9d24939afb8f29323adffe3eb570f14804 Mon Sep 17 00:00:00 2001
2 From: =?UTF-8?q?=3D=3FUTF-8=3Fq=3FIgor=3D20Gali=3DC4=3D87=3F=3D?=
3  <i.galic@brainsware.org>
4 Date: Wed, 2 Nov 2016 14:54:28 -0400
5 Subject: [PATCH] fix "absent" options
6
7 analogous to redhat, we check if options are absent, before appending
8 them to the file. This fixes #160
9
10 Signed-off-by: Allain Legacy <allain.legacy@windriver.com>
11 ---
12  .../lib/puppet/provider/network_route/redhat.rb    | 10 ++---
13  .../lib/puppet/provider/network_route/routes.rb    |  3 +-
14  .../unit/provider/network_route/routes_spec.rb     | 48 ++++++++++++++++++++++
15  3 files changed, 53 insertions(+), 8 deletions(-)
16
17 diff --git a/packstack/puppet/modules/network/lib/puppet/provider/network_route/redhat.rb b/packstack/puppet/modules/network/lib/puppet/provider/network_route/redhat.rb
18 index 9841c8e..7123d44 100644
19 --- a/packstack/puppet/modules/network/lib/puppet/provider/network_route/redhat.rb
20 +++ b/packstack/puppet/modules/network/lib/puppet/provider/network_route/redhat.rb
21 @@ -84,15 +84,11 @@ Puppet::Type.type(:network_route).provide(:redhat) do
22          raise Puppet::Error, "#{provider.name} does not have a #{prop}." if provider.send(prop).nil?
23        end
24        if provider.network == "default"
25 -        contents << "#{provider.network} via #{provider.gateway} dev #{provider.interface}\n"
26 +        contents << "#{provider.network} via #{provider.gateway} dev #{provider.interface}"
27        else
28 -        contents << "#{provider.network}/#{provider.netmask} via #{provider.gateway} dev #{provider.interface}\n"
29 +        contents << "#{provider.network}/#{provider.netmask} via #{provider.gateway} dev #{provider.interface}"
30        end
31 -      contents << if provider.options == :absent
32 -                    "\n"
33 -                  else
34 -                    " #{provider.options}\n"
35 -                  end
36 +      contents << (provider.options == :absent ? "\n" : " #{provider.options}\n")
37      end
38      contents.join
39    end
40 diff --git a/packstack/puppet/modules/network/lib/puppet/provider/network_route/routes.rb b/packstack/puppet/modules/network/lib/puppet/provider/network_route/routes.rb
41 index 2dd579f..ca7066d 100644
42 --- a/packstack/puppet/modules/network/lib/puppet/provider/network_route/routes.rb
43 +++ b/packstack/puppet/modules/network/lib/puppet/provider/network_route/routes.rb
44 @@ -93,7 +93,8 @@ Puppet::Type.type(:network_route).provide(:routes) do
45        raise Puppet::Error, "#{provider.name} is missing the required parameter 'gateway'." if provider.gateway.nil?
46        raise Puppet::Error, "#{provider.name} is missing the required parameter 'interface'." if provider.interface.nil?
47  
48 -      contents << "#{provider.network} #{provider.netmask} #{provider.gateway} #{provider.interface} #{provider.options}\n"
49 +      contents << "#{provider.network} #{provider.netmask} #{provider.gateway} #{provider.interface}"
50 +      contents << (provider.options == :absent ? "\n" : " #{provider.options}\n")
51      end
52  
53      contents.join
54 diff --git a/packstack/puppet/modules/network/spec/unit/provider/network_route/routes_spec.rb b/packstack/puppet/modules/network/spec/unit/provider/network_route/routes_spec.rb
55 index 2e55eba..9376739 100644
56 --- a/packstack/puppet/modules/network/spec/unit/provider/network_route/routes_spec.rb
57 +++ b/packstack/puppet/modules/network/spec/unit/provider/network_route/routes_spec.rb
58 @@ -93,4 +93,52 @@ describe Puppet::Type.type(:network_route).provider(:routes) do
59        end
60      end
61    end
62 +  describe 'when formatting simple files' do
63 +    let(:route1_provider) do
64 +      stub('route1_provider',
65 +           name: '172.17.67.0',
66 +           network: '172.17.67.0',
67 +           netmask: '255.255.255.0',
68 +           gateway: '172.18.6.2',
69 +           interface: 'vlan200',
70 +           options: :absent,
71 +      )
72 +    end
73 +
74 +    let(:route2_provider) do
75 +      stub('lo_provider',
76 +           name: '172.28.45.0',
77 +           network: '172.28.45.0',
78 +           netmask: '255.255.255.0',
79 +           gateway: '172.18.6.2',
80 +           interface: 'eth0',
81 +           options: :absent,
82 +      )
83 +    end
84 +
85 +    let(:content) { described_class.format_file('', [route1_provider, route2_provider]) }
86 +
87 +    describe 'writing the route line' do
88 +      it 'should write only fields' do
89 +        expect(content.scan(/^172.17.67.0 .*$/).length).to eq(1)
90 +        expect(content.scan(/^172.17.67.0 .*$/).first.split(/\s/, 5).length).to eq(4)
91 +      end
92 +
93 +      it 'should have the correct fields appended' do
94 +        expect(content.scan(/^172.17.67.0 .*$/).first).to include('172.17.67.0 255.255.255.0 172.18.6.2 vlan200')
95 +      end
96 +
97 +      it 'should fail if the netmask property is not defined' do
98 +        route2_provider.unstub(:netmask)
99 +        route2_provider.stubs(:netmask).returns nil
100 +        expect { content }.to raise_exception
101 +      end
102 +
103 +      it 'should fail if the gateway property is not defined' do
104 +        route2_provider.unstub(:gateway)
105 +        route2_provider.stubs(:gateway).returns nil
106 +        expect { content }.to raise_exception
107 +      end
108 +    end
109 +  end
110  end
111 -- 
112 1.8.3.1
113