Projet

Général

Profil

Révision 032387dc

ID032387dc692902dc82dcd8a4743fb93a902ae82f
Parent 7a77d75a
Enfant 4d95ea85

Ajouté par Steve Traylen il y a environ 4 ans

Add nftables.version to structured fact.

```
FACTERLIB=. facter -p nftables {
tables => [
"bridge-filter",
"bridge-nat",
"inet-firewalld",
"ip-firewalld",
"ip6-firewalld"
],
version => "0.9.3"
}
```

Voir les différences:

lib/facter/nftables.rb
6 6
# table ip6 nat
7 7
# table inet f2b-table
8 8
#
9
# Produce the version of nftables (nft --version)
10
# nftables v0.9.3 (Topsy)
11
#
9 12
Facter.add(:nftables) do
10 13
  @nft_cmd = Facter::Util::Resolution.which('nft')
11 14
  confine { @nft_cmd }
......
16 19
    table_result.each_line do |line|
17 20
      tables.push(line.split(' ')[1, 2].join('-'))
18 21
    end
19
    { 'tables' => tables }
22
    version = Facter::Core::Execution.execute(%(#{@nft_cmd} --version))[%r{^.*v(\d+\.\d+.\d+)\s.*$}, 1]
23
    {
24
      'tables'  => tables,
25
      'version' => version,
26
    }
20 27
  end
21 28
end
spec/unit/facter/nftables_spec.rb
5 5
    Facter.clear
6 6
    Process.stubs(:uid).returns(0)
7 7
    Facter::Util::Resolution.stubs(:which).with('nft').returns('/usr/sbin/nft')
8
    Facter::Core::Execution.stubs(:execute).with('/usr/sbin/nft list tables').returns(nft_result)
8
    Facter::Core::Execution.stubs(:execute).with('/usr/sbin/nft list tables').returns(nft_tables_result)
9
    Facter::Core::Execution.stubs(:execute).with('/usr/sbin/nft --version').returns(nft_version_result)
9 10
  end
10 11

  
11
  context 'nft rules present' do
12
    let(:nft_result) { "table inet firewalld\ntable ip firewalld\n" }
12
  context 'nft present' do
13
    let(:nft_tables_result) { "table inet firewalld\ntable ip firewalld\n" }
14
    let(:nft_version_result) { "nftables v0.9.15 (Topsy)\n" }
13 15

  
14
    it 'returns valid tables' do
15
      expect(Facter.fact('nftables').value).to eq('tables' => ['inet-firewalld', 'ip-firewalld'])
16
    it 'returns valid fact' do
17
      expect(Facter.fact('nftables').value).to eq('tables' => ['inet-firewalld', 'ip-firewalld'], 'version' => '0.9.15')
16 18
    end
17 19
  end
18 20

  
19 21
  context 'nft fails' do
20
    let(:nft_result) { :failed }
22
    let(:nft_tables_result) { :failed }
23
    let(:nft_version_result) { :failed }
21 24

  
22 25
    it 'does not return a fact' do
26
      Facter::Core::Execution.stubs(:execute).with('/usr/sbin/nft --version', on_fail: :failed).returns(:failed)
23 27
      Facter::Core::Execution.stubs(:execute).with('/usr/sbin/nft list tables', on_fail: :failed).returns(:failed)
24 28

  
25 29
      expect(Facter.fact('nftables').value).to be_nil

Formats disponibles : Unified diff