HEX

Warning: set_time_limit() [function.set-time-limit]: Cannot set time limit - prohibited by configuration in /home/u547966/brikov.ru/www/wp-content/plugins/admin-menu-editor/menu-editor.php on line 745
Server: Apache
System: Linux 4.19.0-0.bpo.9-amd64 x86_64 at red40
User: u547966 (5490)
PHP: 5.3.29-mh2
Disabled: syslog, dl, popen, proc_open, proc_nice, proc_get_status, proc_close, proc_terminate, posix_mkfifo, chown, chgrp, accelerator_reset, opcache_reset, accelerator_get_status, opcache_get_status, pcntl_alarm, pcntl_fork, pcntl_waitpid, pcntl_wait, pcntl_wifexited, pcntl_wifstopped, pcntl_wifsignaled, pcntl_wifcontinued, pcntl_wexitstatus, pcntl_wtermsig, pcntl_wstopsig, pcntl_signal, pcntl_signal_dispatch, pcntl_get_last_error, pcntl_strerror, pcntl_sigprocmask, pcntl_sigwaitinfo, pcntl_sigtimedwait, pcntl_exec, pcntl_getpriority, pcntl_setpriority
Upload Files
File: //var/cache/puppet/lib/facter/docker.rb
# frozen_string_literal: true

require 'facter'
require 'json'

Facter.add(:docker_systemroot) do
  confine osfamily: :windows
  setcode do
    Puppet::Util.get_env('SystemRoot')
  end
end

Facter.add(:docker_program_files_path) do
  confine osfamily: :windows
  setcode do
    Puppet::Util.get_env('ProgramFiles')
  end
end

Facter.add(:docker_program_data_path) do
  confine osfamily: :windows
  setcode do
    Puppet::Util.get_env('ProgramData')
  end
end

Facter.add(:docker_user_temp_path) do
  confine osfamily: :windows
  setcode do
    Puppet::Util.get_env('TEMP')
  end
end

docker_command = if Facter.value(:kernel) == 'windows'
                   'powershell -NoProfile -NonInteractive -NoLogo -ExecutionPolicy Bypass -c docker'
                 else
                   'docker'
                 end

def interfaces
  Facter.value(:interfaces).split(',')
end

Facter.add(:docker_client_version) do
  setcode do
    docker_version = Facter.value(:docker_version)
    if docker_version
      if !docker_version['Client'].nil?
        docker_version['Client']['Version']
      else
        docker_version['Version']
      end
    end
  end
end

Facter.add(:docker_server_version) do
  setcode do
    docker_version = Facter.value(:docker_version)
    if docker_version && !docker_version['Server'].nil? && docker_version['Server'].is_a?(Hash)
      docker_version['Server']['Version']
    else
      nil
    end
  end
end

Facter.add(:docker_version) do
  setcode do
    if Facter::Util::Resolution.which('docker')
      value = Facter::Util::Resolution.exec(
        "#{docker_command} version --format '{{json .}}'",
      )
      val = JSON.parse(value)
    end
    val
  end
end

Facter.add(:docker_worker_join_token) do
  setcode do
    if Facter::Util::Resolution.which('docker')
      val = Facter::Util::Resolution.exec(
        "#{docker_command} swarm join-token worker -q",
      )
    end
    val
  end
end

Facter.add(:docker_manager_join_token) do
  setcode do
    if Facter::Util::Resolution.which('docker')
      val = Facter::Util::Resolution.exec(
        "#{docker_command} swarm join-token manager -q",
      )
    end
    val
  end
end

Facter.add(:docker) do
  setcode do
    docker_version = Facter.value(:docker_client_version)
    if docker_version !~ %r{1[.][0-9][0-2]?[.]\w+}
      if Facter::Util::Resolution.which('docker')
        docker_json_str = Facter::Util::Resolution.exec(
          "#{docker_command} info --format '{{json .}}'",
        )
        begin
          docker = JSON.parse(docker_json_str)
          docker['network'] = {}

          docker['network']['managed_interfaces'] = {}
          network_list = Facter::Util::Resolution.exec("#{docker_command} 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_command} 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
      end
    end
  end
end