Sha256: 175157ac5cc782e771bcaec7cf33e167d0690119ded5d67c207c422557e18d85

Contents?: true

Size: 1.4 KB

Versions: 2

Compression:

Stored size: 1.4 KB

Contents

module Kitchen
  module Transport
    class Winrm < Kitchen::Transport::Base
      # Monkey patch of test-kitchen winrm transport
      # that returns stdout
      class Connection < Kitchen::Transport::Base::Connection
        def node_execute(command, &block)
          session.run_powershell_script(command, &block)
        end
      end
    end
  end

  module Provisioner
    module Finder
      # WinRM implementation for returning active non-localhost IPs
      class Winrm
        Finder.register_finder(Kitchen::Transport::Winrm, self)

        def initialize(connection)
          @connection = connection
        end

        def find_ips
          out = @connection.node_execute(
            'Get-NetIPConfiguration | % { $_.ipv4address.IPAddress }')
          data = []
          out[:data].each do |out_data|
            stdout = out_data[:stdout]
            data << stdout.chomp unless stdout.nil?
          end
          data
        end

        def find_fqdn
          out = @connection.node_execute <<-EOS
            [System.Net.Dns]::GetHostByName($env:computername) |
              FL HostName |
              Out-String |
              % { \"{0}\" -f $_.Split(':')[1].Trim() }
          EOS
          data = ''
          out[:data].each do |out_data|
            stdout = out_data[:stdout]
            data << stdout.chomp unless stdout.nil?
          end
          data
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
kitchen-nodes-0.6.4 lib/kitchen/provisioner/finder/winrm.rb
kitchen-nodes-0.6.4.dev lib/kitchen/provisioner/finder/winrm.rb