Skip to content

Commit

Permalink
Fix error messages from docker facts if docker not running (puppetlab…
Browse files Browse the repository at this point in the history
  • Loading branch information
stdietrich authored and davejrt committed Sep 11, 2018
1 parent 43928d2 commit 942f859
Showing 1 changed file with 24 additions and 16 deletions.
40 changes: 24 additions & 16 deletions lib/facter/docker.rb
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,11 @@ def interfaces
Facter.add(:docker_server_version) do
setcode do
docker_version = Facter.value(:docker_version)
docker_version['Server']['Version'] if docker_version
if docker_version && docker_version['Server'].is_a?(Hash)
docker_version['Server']['Version']
else
nil
end
end
end

Expand All @@ -45,24 +49,28 @@ def interfaces
docker_json_str = Facter::Util::Resolution.exec(
"#{docker_command} info --format '{{json .}}'",
)
docker = JSON.parse(docker_json_str)
docker['network'] = {}
begin
docker = JSON.parse(docker_json_str)
docker['network'] = {}

docker['network']['managed_interfaces'] = {}
network_list = Facter::Util::Resolution.exec('docker network ls | tail -n +2')
docker_network_names = []
network_list.each_line { |line| docker_network_names.push line.split[1] }
docker_network_ids = []
network_list.each_line { |line| docker_network_ids.push line.split[0] }
docker_network_names.each do |network|
inspect = JSON.parse(Facter::Util::Resolution.exec("docker network inspect #{network}"))
docker['network'][network] = inspect[0]
network_id = docker['network'][network]['Id'][0..11]
interfaces.each do |iface|
docker['network']['managed_interfaces'][iface] = network if iface =~ %r{#{network_id}}
docker['network']['managed_interfaces'] = {}
network_list = Facter::Util::Resolution.exec('docker network ls | tail -n +2')
docker_network_names = []
network_list.each_line { |line| docker_network_names.push line.split[1] }
docker_network_ids = []
network_list.each_line { |line| docker_network_ids.push line.split[0] }
docker_network_names.each do |network|
inspect = JSON.parse(Facter::Util::Resolution.exec("docker network inspect #{network}"))
docker['network'][network] = inspect[0]
network_id = docker['network'][network]['Id'][0..11]
interfaces.each do |iface|
docker['network']['managed_interfaces'][iface] = network if iface =~ %r{#{network_id}}
end
end
docker
rescue JSON::ParserError
nil
end
docker
end
end
end
Expand Down

0 comments on commit 942f859

Please sign in to comment.