Class: Fog::Compute::Hyperv::Real
- Defined in:
- lib/fog/hyperv/compute.rb,
lib/fog/hyperv/requests/compute/get_vm.rb,
lib/fog/hyperv/requests/compute/new_vm.rb,
lib/fog/hyperv/requests/compute/set_vm.rb,
lib/fog/hyperv/requests/compute/get_vhd.rb,
lib/fog/hyperv/requests/compute/new_vhd.rb,
lib/fog/hyperv/requests/compute/stop_vm.rb,
lib/fog/hyperv/requests/compute/start_vm.rb,
lib/fog/hyperv/requests/compute/remove_vm.rb,
lib/fog/hyperv/requests/compute/restart_vm.rb,
lib/fog/hyperv/requests/compute/get_cluster.rb,
lib/fog/hyperv/requests/compute/get_vm_bios.rb,
lib/fog/hyperv/requests/compute/get_vm_host.rb,
lib/fog/hyperv/requests/compute/remove_item.rb,
lib/fog/hyperv/requests/compute/set_vm_bios.rb,
lib/fog/hyperv/requests/compute/get_vm_group.rb,
lib/fog/hyperv/requests/compute/get_vm_switch.rb,
lib/fog/hyperv/requests/compute/new_vm_switch.rb,
lib/fog/hyperv/requests/compute/set_vm_switch.rb,
lib/fog/hyperv/requests/compute/get_vm_firmware.rb,
lib/fog/hyperv/requests/compute/set_vm_firmware.rb,
lib/fog/hyperv/requests/compute/add_vm_dvd_drive.rb,
lib/fog/hyperv/requests/compute/get_cluster_node.rb,
lib/fog/hyperv/requests/compute/get_vm_dvd_drive.rb,
lib/fog/hyperv/requests/compute/set_vm_dvd_drive.rb,
lib/fog/hyperv/requests/compute/get_vm_host_cluster.rb,
lib/fog/hyperv/requests/compute/remove_vm_dvd_drive.rb,
lib/fog/hyperv/requests/compute/add_vm_hard_disk_drive.rb,
lib/fog/hyperv/requests/compute/add_vm_network_adapter.rb,
lib/fog/hyperv/requests/compute/get_vm_hard_disk_drive.rb,
lib/fog/hyperv/requests/compute/get_vm_network_adapter.rb,
lib/fog/hyperv/requests/compute/set_vm_hard_disk_drive.rb,
lib/fog/hyperv/requests/compute/set_vm_network_adapter.rb,
lib/fog/hyperv/requests/compute/get_vm_floppy_disk_drive.rb,
lib/fog/hyperv/requests/compute/remove_vm_hard_disk_drive.rb,
lib/fog/hyperv/requests/compute/remove_vm_network_adapter.rb,
lib/fog/hyperv/requests/compute/connect_vm_network_adapter.rb,
lib/fog/hyperv/requests/compute/set_vm_network_adapter_vlan.rb,
lib/fog/hyperv/requests/compute/disconnect_vm_network_adapter.rb
Instance Attribute Summary collapse
-
#bake_json ⇒ Object
Returns the value of attribute bake_json.
-
#bake_optmap ⇒ Object
Returns the value of attribute bake_optmap.
-
#logger ⇒ Object
readonly
Returns the value of attribute logger.
Instance Method Summary collapse
- #add_vm_dvd_disk_drive(options = {}) ⇒ Object
- #add_vm_hard_disk_drive(options = {}) ⇒ Object
- #add_vm_network_adapter(options = {}) ⇒ Object
- #connect_vm_network_adapter(options = {}) ⇒ Object
- #disconnect_vm_network_adapter(options = {}) ⇒ Object
- #get_cluster(options = {}) ⇒ Object
- #get_cluster_node(options = {}) ⇒ Object
- #get_vhd(options = {}) ⇒ Object
- #get_vm(options = {}) ⇒ Object
- #get_vm_bios(options = {}) ⇒ Object
- #get_vm_dvd_drive(options = {}) ⇒ Object
- #get_vm_firmware(options = {}) ⇒ Object
- #get_vm_floppy_disk_drive(options = {}) ⇒ Object
- #get_vm_group(options = {}) ⇒ Object
- #get_vm_hard_disk_drive(options = {}) ⇒ Object
- #get_vm_host(options = {}) ⇒ Object
- #get_vm_host_cluster(options = {}) ⇒ Object
- #get_vm_network_adapter(options = {}) ⇒ Object
- #get_vm_switch(options = {}) ⇒ Object
-
#initialize(options = {}) ⇒ Real
constructor
A new instance of Real.
- #local? ⇒ Boolean
- #new_vhd(options = {}) ⇒ Object
- #new_vm(options = {}) ⇒ Object
- #new_vm_switch(options = {}) ⇒ Object
- #ps_version ⇒ Object
- #remove_item(options = {}) ⇒ Object
- #remove_vm(options = {}) ⇒ Object
- #remove_vm_dvd_drive(options = {}) ⇒ Object
- #remove_vm_hard_disk_drive(options = {}) ⇒ Object
- #remove_vm_network_adapter(options = {}) ⇒ Object
- #restart_vm(options = {}) ⇒ Object
- #set_vm(options = {}) ⇒ Object
- #set_vm_bios(options = {}) ⇒ Object
- #set_vm_dvd_drive(options = {}) ⇒ Object
- #set_vm_firmware(options = {}) ⇒ Object
- #set_vm_hard_disk_drive(options = {}) ⇒ Object
- #set_vm_network_adapter(options = {}) ⇒ Object
- #set_vm_network_adapter_vlan(options = {}) ⇒ Object
- #set_vm_switch(options = {}) ⇒ Object
- #start_vm(options = {}) ⇒ Object
- #stop_vm(options = {}) ⇒ Object
- #supports_clusters? ⇒ Boolean
- #supports_multihop? ⇒ Boolean
- #valid? ⇒ Boolean
- #version ⇒ Object
Constructor Details
#initialize(options = {}) ⇒ Real
Returns a new instance of Real.
140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 |
# File 'lib/fog/hyperv/compute.rb', line 140 def initialize( = {}) # require 'ostruct' require 'fog/json' require 'logging' @connections = {} @hyperv_endpoint = [:hyperv_endpoint] @hyperv_endpoint = "http://#{[:hyperv_host]}:5985/wsman" if !@hyperv_endpoint && [:hyperv_host] @hyperv_username = [:hyperv_username] @hyperv_password = [:hyperv_password] @hyperv_realm = [:hyperv_realm] @hyperv_transport = [:hyperv_transport] || (@hyperv_realm ? :kerberos : :negotiate) Logging.logger['WinRM::HTTP::HttpNegotiate'].level = :error @logger = Logging.logger['hyper-v'] if [:hyperv_debug] logger.level = :debug logger.add_appenders Logging.appenders.stdout end connect end |
Instance Attribute Details
#bake_json ⇒ Object
Returns the value of attribute bake_json.
138 139 140 |
# File 'lib/fog/hyperv/compute.rb', line 138 def bake_json @bake_json end |
#bake_optmap ⇒ Object
Returns the value of attribute bake_optmap.
138 139 140 |
# File 'lib/fog/hyperv/compute.rb', line 138 def bake_optmap @bake_optmap end |
#logger ⇒ Object (readonly)
Returns the value of attribute logger.
136 137 138 |
# File 'lib/fog/hyperv/compute.rb', line 136 def logger @logger end |
Instance Method Details
#add_vm_dvd_disk_drive(options = {}) ⇒ Object
5 6 7 8 |
# File 'lib/fog/hyperv/requests/compute/add_vm_dvd_drive.rb', line 5 def add_vm_dvd_disk_drive( = {}) requires , :vm_name run_shell('Add-VMDvdDrive', ) end |
#add_vm_hard_disk_drive(options = {}) ⇒ Object
5 6 7 8 |
# File 'lib/fog/hyperv/requests/compute/add_vm_hard_disk_drive.rb', line 5 def add_vm_hard_disk_drive( = {}) requires , :vm_name run_shell('Add-VMHardDiskDrive', ) end |
#add_vm_network_adapter(options = {}) ⇒ Object
5 6 7 8 |
# File 'lib/fog/hyperv/requests/compute/add_vm_network_adapter.rb', line 5 def add_vm_network_adapter( = {}) requires_one , :vm_name, :management_os run_shell('Add-VMNetworkAdapter', .merge(_always_include: [:is_legacy])) end |
#connect_vm_network_adapter(options = {}) ⇒ Object
5 6 7 8 |
# File 'lib/fog/hyperv/requests/compute/connect_vm_network_adapter.rb', line 5 def connect_vm_network_adapter( = {}) requires , :vm_name, :switch_name run_shell('Connect-VMNetworkAdapter', .merge(_skip_json: true)).exitcode.zero? end |
#disconnect_vm_network_adapter(options = {}) ⇒ Object
5 6 7 8 |
# File 'lib/fog/hyperv/requests/compute/disconnect_vm_network_adapter.rb', line 5 def disconnect_vm_network_adapter( = {}) requires :vm_name run_shell('Disconnect-VMNetworkAdapter', .merge(_skip_json: true)).exitcode.zero? end |
#get_cluster(options = {}) ⇒ Object
5 6 7 |
# File 'lib/fog/hyperv/requests/compute/get_cluster.rb', line 5 def get_cluster( = {}) run_shell('Get-Cluster', ) end |
#get_cluster_node(options = {}) ⇒ Object
5 6 7 |
# File 'lib/fog/hyperv/requests/compute/get_cluster_node.rb', line 5 def get_cluster_node( = {}) run_shell('Get-ClusterNode', ) end |
#get_vhd(options = {}) ⇒ Object
5 6 7 8 |
# File 'lib/fog/hyperv/requests/compute/get_vhd.rb', line 5 def get_vhd( = {}) requires_one , :vm_id, :path, :disk_number run_shell('Get-VHD', ) end |
#get_vm(options = {}) ⇒ Object
5 6 7 |
# File 'lib/fog/hyperv/requests/compute/get_vm.rb', line 5 def get_vm( = {}) run_shell('Get-VM', ) end |
#get_vm_bios(options = {}) ⇒ Object
5 6 7 8 |
# File 'lib/fog/hyperv/requests/compute/get_vm_bios.rb', line 5 def get_vm_bios( = {}) requires , :vm_name run_shell('Get-VMBios', ) end |
#get_vm_dvd_drive(options = {}) ⇒ Object
5 6 7 8 |
# File 'lib/fog/hyperv/requests/compute/get_vm_dvd_drive.rb', line 5 def get_vm_dvd_drive( = {}) requires , :vm_name run_shell('Get-VMDvdDrive', ) end |
#get_vm_firmware(options = {}) ⇒ Object
5 6 7 8 |
# File 'lib/fog/hyperv/requests/compute/get_vm_firmware.rb', line 5 def get_vm_firmware( = {}) requires , :vm_name run_shell('Get-VMFirmware', ) end |
#get_vm_floppy_disk_drive(options = {}) ⇒ Object
5 6 7 8 |
# File 'lib/fog/hyperv/requests/compute/get_vm_floppy_disk_drive.rb', line 5 def get_vm_floppy_disk_drive( = {}) requires , :vm_name run_shell('Get-VMFloppyDiskDrive', ) end |
#get_vm_group(options = {}) ⇒ Object
5 6 7 8 9 |
# File 'lib/fog/hyperv/requests/compute/get_vm_group.rb', line 5 def get_vm_group( = {}) requires_version '10.0' run_shell('Get-VMGroup', ) end |
#get_vm_hard_disk_drive(options = {}) ⇒ Object
5 6 7 8 |
# File 'lib/fog/hyperv/requests/compute/get_vm_hard_disk_drive.rb', line 5 def get_vm_hard_disk_drive( = {}) requires , :vm_name run_shell('Get-VMHardDiskDrive', ) end |
#get_vm_host(options = {}) ⇒ Object
5 6 7 8 |
# File 'lib/fog/hyperv/requests/compute/get_vm_host.rb', line 5 def get_vm_host( = {}) # TODO: Reject unavailable arguments? run_shell('Get-VMHost', ) end |
#get_vm_host_cluster(options = {}) ⇒ Object
5 6 7 8 9 10 |
# File 'lib/fog/hyperv/requests/compute/get_vm_host_cluster.rb', line 5 def get_vm_host_cluster( = {}) requires_version '10.0' requires , :cluster_name run_shell('Get-VMHostCluster', ) end |
#get_vm_network_adapter(options = {}) ⇒ Object
5 6 7 8 |
# File 'lib/fog/hyperv/requests/compute/get_vm_network_adapter.rb', line 5 def get_vm_network_adapter( = {}) requires_one , :vm_name, :all, :management_os run_shell('Get-VMNetworkAdapter', ) end |
#get_vm_switch(options = {}) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/fog/hyperv/requests/compute/get_vm_switch.rb', line 5 def get_vm_switch( = {}) if [:_quick_query] search = {} search[:element_name] = [:name] if [:name] search[:name] = [:id].upcase if [:id] data = run_wql('SELECT ElementName,Name FROM Msvm_VirtualEthernetSwitch', search) nil if data.empty? data[:xml_fragment].map do |sw| { id: sw[:name].downcase, computer_name: [:computer_name], name: sw[:element_name], } end else run_shell('Get-VMSwitch', ) end end |
#local? ⇒ Boolean
163 164 165 |
# File 'lib/fog/hyperv/compute.rb', line 163 def local? false # @hyperv_endpoint.nil? end |
#new_vhd(options = {}) ⇒ Object
5 6 7 8 |
# File 'lib/fog/hyperv/requests/compute/new_vhd.rb', line 5 def new_vhd( = {}) requires , :path, :size_bytes run_shell('New-VHD', ) end |
#new_vm(options = {}) ⇒ Object
5 6 7 8 9 10 11 |
# File 'lib/fog/hyperv/requests/compute/new_vm.rb', line 5 def new_vm( = {}) [:memory_startup_bytes] = .delete :memory_startup if .key? :memory_startup requires , :new_vhd_path, :new_vhd_size_bytes \ if [:new_whd_path] || [:new_vhd_size_bytes] run_shell('New-VM', ) end |
#new_vm_switch(options = {}) ⇒ Object
5 6 7 8 9 |
# File 'lib/fog/hyperv/requests/compute/new_vm_switch.rb', line 5 def new_vm_switch( = {}) requires , :name requires_one , :net_adapter_name, :net_adapter_interface_description run_shell('New-VMSwitch', ) end |
#ps_version ⇒ Object
194 195 196 |
# File 'lib/fog/hyperv/compute.rb', line 194 def ps_version @ps_version ||= run_shell('$PSVersionTable.PSVersion', _bake_optmap: false, _bake_json: false) end |
#remove_item(options = {}) ⇒ Object
5 6 7 8 9 |
# File 'lib/fog/hyperv/requests/compute/remove_item.rb', line 5 def remove_item( = {}) # TODO: Really lock this method down, validation is good. requires , :path run_shell('Remove-Item', .merge(force: true, _skip_json: true)).exitcode.zero? end |
#remove_vm(options = {}) ⇒ Object
5 6 7 8 9 10 11 |
# File 'lib/fog/hyperv/requests/compute/remove_vm.rb', line 5 def remove_vm( = {}) # TODO: Handle -VMId/-Id too; # # Get-VM -Id <guid> | Remove-VM requires , :name run_shell('Remove-VM', .merge(force: true, _skip_json: true)).exitcode.zero? end |
#remove_vm_dvd_drive(options = {}) ⇒ Object
5 6 7 8 |
# File 'lib/fog/hyperv/requests/compute/remove_vm_dvd_drive.rb', line 5 def remove_vm_dvd_drive( = {}) requires , :vm_name, :controller_number, :controller_location run_shell('Remove-VMDvdDrive', .merge(_skip_json: true)).exitcode.zero? end |
#remove_vm_hard_disk_drive(options = {}) ⇒ Object
5 6 7 8 |
# File 'lib/fog/hyperv/requests/compute/remove_vm_hard_disk_drive.rb', line 5 def remove_vm_hard_disk_drive( = {}) requires , :vm_name, :controller_type, :controller_number, :controller_location run_shell('Remove-VMHardDiskDrive', .merge(_skip_json: true)).exitcode.zero? end |
#remove_vm_network_adapter(options = {}) ⇒ Object
5 6 7 8 |
# File 'lib/fog/hyperv/requests/compute/remove_vm_network_adapter.rb', line 5 def remove_vm_network_adapter( = {}) requires_one , :vm_name, :management_os run_shell('Remove-VMNetworkAdapter', ) end |
#restart_vm(options = {}) ⇒ Object
5 6 7 8 9 10 11 |
# File 'lib/fog/hyperv/requests/compute/restart_vm.rb', line 5 def restart_vm( = {}) # TODO: Handle -VMId/-Id too; # # Get-VM -Id <guid> | Start-VM requires , :name run_shell('Restart-VM', .merge(_skip_json: true)).exitcode.zero? end |
#set_vm(options = {}) ⇒ Object
5 6 7 8 |
# File 'lib/fog/hyperv/requests/compute/set_vm.rb', line 5 def set_vm( = {}) requires , :name run_shell('Set-VM', ) end |
#set_vm_bios(options = {}) ⇒ Object
5 6 7 8 |
# File 'lib/fog/hyperv/requests/compute/set_vm_bios.rb', line 5 def set_vm_bios( = {}) requires , :vm_name run_shell('Set-VMBios', ) end |
#set_vm_dvd_drive(options = {}) ⇒ Object
5 6 7 8 |
# File 'lib/fog/hyperv/requests/compute/set_vm_dvd_drive.rb', line 5 def set_vm_dvd_drive( = {}) requires , :vm_name run_shell('Set-VMDvdDrive', ) end |
#set_vm_firmware(options = {}) ⇒ Object
5 6 7 8 |
# File 'lib/fog/hyperv/requests/compute/set_vm_firmware.rb', line 5 def set_vm_firmware( = {}) requires , :vm_name run_shell('Set-VMFirmware', ) end |
#set_vm_hard_disk_drive(options = {}) ⇒ Object
5 6 7 8 |
# File 'lib/fog/hyperv/requests/compute/set_vm_hard_disk_drive.rb', line 5 def set_vm_hard_disk_drive( = {}) requires , :vm_name run_shell('Set-VMHardDiskDrive', ) end |
#set_vm_network_adapter(options = {}) ⇒ Object
5 6 7 8 |
# File 'lib/fog/hyperv/requests/compute/set_vm_network_adapter.rb', line 5 def set_vm_network_adapter( = {}) requires_one , :vm_name, :management_os run_shell('Set-VMNetworkAdapter', ) end |
#set_vm_network_adapter_vlan(options = {}) ⇒ Object
5 6 7 8 |
# File 'lib/fog/hyperv/requests/compute/set_vm_network_adapter_vlan.rb', line 5 def set_vm_network_adapter_vlan( = {}) requires_one , :vm_name, :management_os run_shell('Set-VMNetworkAdapterVlan', ) end |
#set_vm_switch(options = {}) ⇒ Object
5 6 7 8 |
# File 'lib/fog/hyperv/requests/compute/set_vm_switch.rb', line 5 def set_vm_switch( = {}) requires , :name run_shell('Set-VMSwitch', ) end |
#start_vm(options = {}) ⇒ Object
5 6 7 8 9 10 11 |
# File 'lib/fog/hyperv/requests/compute/start_vm.rb', line 5 def start_vm( = {}) # TODO: Handle -VMId/-Id too; # # Get-VM -Id <guid> | Start-VM requires , :name run_shell('Start-VM', .merge(_skip_json: true)).exitcode.zero? end |
#stop_vm(options = {}) ⇒ Object
5 6 7 8 9 10 11 |
# File 'lib/fog/hyperv/requests/compute/stop_vm.rb', line 5 def stop_vm( = {}) # TODO: Handle -VMId/-Id too; # # Get-VM -Id <guid> | Stop-VM requires , :name run_shell('Stop-VM', .merge(_skip_json: true)).exitcode.zero? end |
#supports_clusters? ⇒ Boolean
182 183 184 185 186 187 |
# File 'lib/fog/hyperv/compute.rb', line 182 def supports_clusters? run_wql('SELECT Name FROM MSCluster_ResourceGroup', _namespace: 'root/mscluster/*')[:xml_fragment] && true rescue => e logger.debug "Cluster support checking failed with #{e.class}: #{e.}" false end |
#supports_multihop? ⇒ Boolean
178 179 180 |
# File 'lib/fog/hyperv/compute.rb', line 178 def supports_multihop? return [ :kerberos ].include? @hyperv_transport.to_s.downcase.to_sym end |
#valid? ⇒ Boolean
167 168 169 170 171 172 173 174 175 176 |
# File 'lib/fog/hyperv/compute.rb', line 167 def valid? if local? run_shell('Get-VMHost', _return_fields: :name) && true else run_wql('SELECT Name FROM Msvm_ComputerSystem WHERE Caption = "Hosting Computer System"')[:xml_fragment] && true end rescue => e logger.debug "Validation failed with #{e.class}; #{e.}" false end |
#version ⇒ Object
189 190 191 192 |
# File 'lib/fog/hyperv/compute.rb', line 189 def version @version ||= run_wql('SELECT Version FROM Win32_OperatingSystem', _namespace: 'root/cimv2/*')[:xml_fragment].first[:version] rescue \ run_shell("$VMMS = if ([environment]::Is64BitProcess) { \"$($env:SystemRoot)\\System32\\vmms.exe\" } else { \"$($env:SystemRoot)\\Sysnative\\vmms.exe\" }\n(Get-Item $VMMS).VersionInfo.ProductVersion", _skip_json: true).stdout.strip end |