Sha256: b2109f8d015a93ca1c427831853fcdca4d3ecd75c206646d0ce6baf2ac46dcd2

Contents?: true

Size: 1.32 KB

Versions: 2

Compression:

Stored size: 1.32 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[:data].each do |out_data|
            stdout = out_data[:stdout]
            data << Regexp.last_match[1] if stdout.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

2 entries across 2 versions & 1 rubygems

Version Path
kitchen-nodes-0.9.0 lib/kitchen/provisioner/finder/winrm.rb
kitchen-nodes-0.8.0 lib/kitchen/provisioner/finder/winrm.rb