Skip to content

Commit 942f859

Browse files
stdietrichdavejrt
authored andcommitted
Fix error messages from docker facts if docker not running (#325)
1 parent 43928d2 commit 942f859

File tree

1 file changed

+24
-16
lines changed

1 file changed

+24
-16
lines changed

lib/facter/docker.rb

+24-16
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,11 @@ def interfaces
2121
Facter.add(:docker_server_version) do
2222
setcode do
2323
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
2529
end
2630
end
2731

@@ -45,24 +49,28 @@ def interfaces
4549
docker_json_str = Facter::Util::Resolution.exec(
4650
"#{docker_command} info --format '{{json .}}'",
4751
)
48-
docker = JSON.parse(docker_json_str)
49-
docker['network'] = {}
52+
begin
53+
docker = JSON.parse(docker_json_str)
54+
docker['network'] = {}
5055

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
6369
end
70+
docker
71+
rescue JSON::ParserError
72+
nil
6473
end
65-
docker
6674
end
6775
end
6876
end

0 commit comments

Comments
 (0)