@@ -21,7 +21,11 @@ def interfaces
21
21
Facter . add ( :docker_server_version ) do
22
22
setcode do
23
23
docker_version = Facter . value ( :docker_version )
24
- docker_version [ 'Server' ] [ 'Version' ] if docker_version
24
+ if docker_version && docker_version [ 'Server' ] . is_a? ( Hash )
25
+ docker_version [ 'Server' ] [ 'Version' ]
26
+ else
27
+ nil
28
+ end
25
29
end
26
30
end
27
31
@@ -45,24 +49,28 @@ def interfaces
45
49
docker_json_str = Facter ::Util ::Resolution . exec (
46
50
"#{ docker_command } info --format '{{json .}}'" ,
47
51
)
48
- docker = JSON . parse ( docker_json_str )
49
- docker [ 'network' ] = { }
52
+ begin
53
+ docker = JSON . parse ( docker_json_str )
54
+ docker [ 'network' ] = { }
50
55
51
- docker [ 'network' ] [ 'managed_interfaces' ] = { }
52
- network_list = Facter ::Util ::Resolution . exec ( 'docker network ls | tail -n +2' )
53
- docker_network_names = [ ]
54
- network_list . each_line { |line | docker_network_names . push line . split [ 1 ] }
55
- docker_network_ids = [ ]
56
- network_list . each_line { |line | docker_network_ids . push line . split [ 0 ] }
57
- docker_network_names . each do |network |
58
- inspect = JSON . parse ( Facter ::Util ::Resolution . exec ( "docker network inspect #{ network } " ) )
59
- docker [ 'network' ] [ network ] = inspect [ 0 ]
60
- network_id = docker [ 'network' ] [ network ] [ 'Id' ] [ 0 ..11 ]
61
- interfaces . each do |iface |
62
- docker [ 'network' ] [ 'managed_interfaces' ] [ iface ] = network if iface =~ %r{#{ network_id } }
56
+ docker [ 'network' ] [ 'managed_interfaces' ] = { }
57
+ network_list = Facter ::Util ::Resolution . exec ( 'docker network ls | tail -n +2' )
58
+ docker_network_names = [ ]
59
+ network_list . each_line { |line | docker_network_names . push line . split [ 1 ] }
60
+ docker_network_ids = [ ]
61
+ network_list . each_line { |line | docker_network_ids . push line . split [ 0 ] }
62
+ docker_network_names . each do |network |
63
+ inspect = JSON . parse ( Facter ::Util ::Resolution . exec ( "docker network inspect #{ network } " ) )
64
+ docker [ 'network' ] [ network ] = inspect [ 0 ]
65
+ network_id = docker [ 'network' ] [ network ] [ 'Id' ] [ 0 ..11 ]
66
+ interfaces . each do |iface |
67
+ docker [ 'network' ] [ 'managed_interfaces' ] [ iface ] = network if iface =~ %r{#{ network_id } }
68
+ end
63
69
end
70
+ docker
71
+ rescue JSON ::ParserError
72
+ nil
64
73
end
65
- docker
66
74
end
67
75
end
68
76
end
0 commit comments