Class: VagrantPlugins::WinAzure::Action::ReadWinrmInfo
- Inherits:
-
Object
- Object
- VagrantPlugins::WinAzure::Action::ReadWinrmInfo
- Defined in:
- lib/vagrant-azure/action/read_winrm_info.rb
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(app, env) ⇒ ReadWinrmInfo
constructor
A new instance of ReadWinrmInfo.
- #read_winrm_info(azure, machine) ⇒ Object
Constructor Details
#initialize(app, env) ⇒ ReadWinrmInfo
Returns a new instance of ReadWinrmInfo.
12 13 14 15 |
# File 'lib/vagrant-azure/action/read_winrm_info.rb', line 12 def initialize(app, env) @app = app @logger = Log4r::Logger.new('vagrant_azure::action::read_winrm_info') end |
Instance Method Details
#call(env) ⇒ Object
17 18 19 20 21 22 23 24 25 |
# File 'lib/vagrant-azure/action/read_winrm_info.rb', line 17 def call(env) if env[:machine].config.vm.guest == :windows env[:ui].detail 'Looking for WinRM' env[:machine_winrm_info] = read_winrm_info(env[:azure_vm_service], env[:machine]) env[:ui].detail "Found public port #{env[:machine_winrm_info][:port]}" end @app.call(env) end |
#read_winrm_info(azure, machine) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/vagrant-azure/action/read_winrm_info.rb', line 27 def read_winrm_info(azure, machine) return nil if machine.id.nil? machine.id =~ /@/ vm = azure.get_virtual_machine($`, $') if vm.nil? || !vm.instance_of?(Azure::VirtualMachineManagement::VirtualMachine) # Machine cannot be found @logger.info 'Machine not found. Assuming it was destroyed' machine.id = nil return nil end types = %w(PowerShell WinRm-Http) endpoint = vm.tcp_endpoints.reject { |i| !types.include?(i[:name]) }.sort{ |i| i[:name] }.first if endpoint machine.config.winrm.host = "#{vm.cloud_service_name}.cloudapp.net" machine.config.winrm.port = endpoint[:public_port] if endpoint[:name] == types[0] # if it's PowerShell, then it's over https so use ssl (cert is self signed) machine.config.winrm.ssl_peer_verification = false machine.config.winrm.transport = :ssl end return {:host => "#{vm.cloud_service_name}.cloudapp.net", :port => endpoint[:public_port]} end nil end |