Sha256: 556089337d2ea8b0574134cc760bb59bd60dab646afc49a5fd471e2af3c5abb2

Contents?: true

Size: 1.28 KB

Versions: 4

Compression:

Stored size: 1.28 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)
          unelevated_session.run(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(
            '(ipconfig) -match \'IPv[46] Address\''
          )
          data = []
          out.stdout.lines.each do |line|
            data << Regexp.last_match[1] if line.chomp =~ /:\s*(\S+)/
          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 = ''
          data = out.stdout.chomp unless out.stdout.nil?
          data
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 3 rubygems

Version Path
kitchen-nodes-lobatoa-0.10.0 lib/kitchen/provisioner/finder/winrm.rb
kitchen-nodes-scalp42-0.10.0 lib/kitchen/provisioner/finder/winrm.rb
kitchen-nodes-scalp42-0.9.1 lib/kitchen/provisioner/finder/winrm.rb
kitchen-nodes-0.9.1 lib/kitchen/provisioner/finder/winrm.rb