fog-hyperv 0.0.9 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +12 -2
- data/lib/fog/bin/hyperv.rb +6 -4
- data/lib/fog/hyperv/collection.rb +89 -0
- data/lib/fog/hyperv/compute/models/bios.rb +70 -0
- data/lib/fog/hyperv/compute/models/cluster.rb +50 -0
- data/lib/fog/hyperv/compute/models/clusters.rb +21 -0
- data/lib/fog/hyperv/compute/models/com_port.rb +78 -0
- data/lib/fog/hyperv/compute/models/com_ports.rb +29 -0
- data/lib/fog/hyperv/compute/models/dvd_drive.rb +126 -0
- data/lib/fog/hyperv/compute/models/dvd_drives.rb +29 -0
- data/lib/fog/hyperv/compute/models/firmware.rb +78 -0
- data/lib/fog/hyperv/compute/models/floppy_drive.rb +64 -0
- data/lib/fog/hyperv/compute/models/floppy_drives.rb +18 -0
- data/lib/fog/hyperv/compute/models/hard_drive.rb +183 -0
- data/lib/fog/hyperv/compute/models/hard_drives.rb +28 -0
- data/lib/fog/hyperv/compute/models/host.rb +63 -0
- data/lib/fog/hyperv/compute/models/hosts.rb +13 -0
- data/lib/fog/hyperv/compute/models/network_adapter.rb +368 -0
- data/lib/fog/hyperv/compute/models/network_adapter_vlan.rb +172 -0
- data/lib/fog/hyperv/compute/models/network_adapters.rb +32 -0
- data/lib/fog/hyperv/compute/models/security.rb +121 -0
- data/lib/fog/hyperv/compute/models/server.rb +466 -0
- data/lib/fog/hyperv/compute/models/servers.rb +18 -0
- data/lib/fog/hyperv/compute/models/switch.rb +117 -0
- data/lib/fog/hyperv/compute/models/switches.rb +20 -0
- data/lib/fog/hyperv/compute/models/vhd.rb +210 -0
- data/lib/fog/hyperv/compute/models/vhds.rb +28 -0
- data/lib/fog/hyperv/compute/requests/add_vm_dvd_drive.rb +15 -0
- data/lib/fog/hyperv/compute/requests/add_vm_hard_disk_drive.rb +15 -0
- data/lib/fog/hyperv/compute/requests/add_vm_network_adapter.rb +24 -0
- data/lib/fog/hyperv/compute/requests/connect_vm_network_adapter.rb +41 -0
- data/lib/fog/hyperv/compute/requests/disable_vm_tpm.rb +16 -0
- data/lib/fog/hyperv/compute/requests/disconnect_vm_network_adapter.rb +29 -0
- data/lib/fog/hyperv/compute/requests/enable_vm_tpm.rb +16 -0
- data/lib/fog/hyperv/compute/requests/get_cluster.rb +11 -0
- data/lib/fog/hyperv/compute/requests/get_cluster_node.rb +22 -0
- data/lib/fog/hyperv/compute/requests/get_vhd.rb +32 -0
- data/lib/fog/hyperv/compute/requests/get_vm.rb +18 -0
- data/lib/fog/hyperv/compute/requests/get_vm_bios.rb +21 -0
- data/lib/fog/hyperv/compute/requests/get_vm_com_port.rb +17 -0
- data/lib/fog/hyperv/compute/requests/get_vm_dvd_drive.rb +25 -0
- data/lib/fog/hyperv/compute/requests/get_vm_firmware.rb +21 -0
- data/lib/fog/hyperv/compute/requests/get_vm_floppy_disk_drive.rb +16 -0
- data/lib/fog/hyperv/compute/requests/get_vm_group.rb +20 -0
- data/lib/fog/hyperv/compute/requests/get_vm_hard_disk_drive.rb +24 -0
- data/lib/fog/hyperv/compute/requests/get_vm_host.rb +9 -0
- data/lib/fog/hyperv/compute/requests/get_vm_host_cluster.rb +21 -0
- data/lib/fog/hyperv/compute/requests/get_vm_host_sbt.rb +10 -0
- data/lib/fog/hyperv/compute/requests/get_vm_key_protector.rb +16 -0
- data/lib/fog/hyperv/compute/requests/get_vm_network_adapter.rb +41 -0
- data/lib/fog/hyperv/compute/requests/get_vm_network_adapter_vlan.rb +41 -0
- data/lib/fog/hyperv/compute/requests/get_vm_security.rb +15 -0
- data/lib/fog/hyperv/compute/requests/get_vm_switch.rb +10 -0
- data/lib/fog/hyperv/compute/requests/mock_files/get_vm.json +4 -0
- data/lib/fog/hyperv/compute/requests/new_vhd.rb +9 -0
- data/lib/fog/hyperv/compute/requests/new_vm.rb +12 -0
- data/lib/fog/hyperv/compute/requests/new_vm_switch.rb +11 -0
- data/lib/fog/hyperv/compute/requests/optimize_vhd.rb +9 -0
- data/lib/fog/hyperv/compute/requests/remove_item.rb +10 -0
- data/lib/fog/hyperv/compute/requests/remove_vm.rb +16 -0
- data/lib/fog/hyperv/compute/requests/remove_vm_dvd_drive.rb +17 -0
- data/lib/fog/hyperv/compute/requests/remove_vm_hard_disk_drive.rb +17 -0
- data/lib/fog/hyperv/compute/requests/remove_vm_network_adapter.rb +29 -0
- data/lib/fog/hyperv/compute/requests/remove_vm_switch.rb +9 -0
- data/lib/fog/hyperv/compute/requests/rename_vm.rb +16 -0
- data/lib/fog/hyperv/compute/requests/rename_vm_network_adapter.rb +25 -0
- data/lib/fog/hyperv/compute/requests/rename_vm_switch.rb +16 -0
- data/lib/fog/hyperv/compute/requests/resize_vhd.rb +16 -0
- data/lib/fog/hyperv/compute/requests/restart_vm.rb +22 -0
- data/lib/fog/hyperv/compute/requests/resume_vm.rb +22 -0
- data/lib/fog/hyperv/compute/requests/save_vm.rb +22 -0
- data/lib/fog/hyperv/compute/requests/set_vm.rb +15 -0
- data/lib/fog/hyperv/compute/requests/set_vm_bios.rb +15 -0
- data/lib/fog/hyperv/compute/requests/set_vm_com_port.rb +16 -0
- data/lib/fog/hyperv/compute/requests/set_vm_dvd_drive.rb +16 -0
- data/lib/fog/hyperv/compute/requests/set_vm_firmware.rb +15 -0
- data/lib/fog/hyperv/compute/requests/set_vm_floppy_disk_drive.rb +16 -0
- data/lib/fog/hyperv/compute/requests/set_vm_hard_disk_drive.rb +16 -0
- data/lib/fog/hyperv/compute/requests/set_vm_key_protector.rb +15 -0
- data/lib/fog/hyperv/compute/requests/set_vm_network_adapter.rb +25 -0
- data/lib/fog/hyperv/compute/requests/set_vm_network_adapter_vlan.rb +25 -0
- data/lib/fog/hyperv/compute/requests/set_vm_security.rb +17 -0
- data/lib/fog/hyperv/compute/requests/set_vm_switch.rb +9 -0
- data/lib/fog/hyperv/compute/requests/start_vm.rb +22 -0
- data/lib/fog/hyperv/compute/requests/stop_vm.rb +22 -0
- data/lib/fog/hyperv/compute/requests/suspend_vm.rb +22 -0
- data/lib/fog/hyperv/compute/requests/update_vm.rb +22 -0
- data/lib/fog/hyperv/compute.rb +206 -387
- data/lib/fog/hyperv/constants.rb +24 -0
- data/lib/fog/hyperv/fog_extensions/associations/collection.rb +11 -0
- data/lib/fog/hyperv/fog_extensions/attributes/datetime.rb +28 -0
- data/lib/fog/hyperv/fog_extensions/attributes/enum.rb +139 -0
- data/lib/fog/hyperv/fog_extensions/attributes/enumarray.rb +149 -0
- data/lib/fog/hyperv/fog_extensions/attributes/timespan.rb +27 -0
- data/lib/fog/hyperv/model.rb +142 -0
- data/lib/fog/hyperv/utils/powershell.rb +88 -0
- data/lib/fog/hyperv/utils/winrm.rb +233 -0
- data/lib/fog/hyperv/version.rb +4 -1
- data/lib/fog/hyperv.rb +53 -44
- metadata +187 -105
- data/.gitignore +0 -10
- data/.travis.yml +0 -11
- data/CHANGELOG.md +0 -52
- data/Gemfile +0 -4
- data/Rakefile +0 -10
- data/fog-hyperv.gemspec +0 -25
- data/lib/fog/collection.rb +0 -152
- data/lib/fog/hyperv/fog_extensions/enum.rb +0 -85
- data/lib/fog/hyperv/models/compute/bios.rb +0 -61
- data/lib/fog/hyperv/models/compute/cluster.rb +0 -64
- data/lib/fog/hyperv/models/compute/clusters.rb +0 -15
- data/lib/fog/hyperv/models/compute/com_port.rb +0 -22
- data/lib/fog/hyperv/models/compute/dvd_drive.rb +0 -92
- data/lib/fog/hyperv/models/compute/dvd_drives.rb +0 -12
- data/lib/fog/hyperv/models/compute/firmware.rb +0 -53
- data/lib/fog/hyperv/models/compute/floppy_drive.rb +0 -53
- data/lib/fog/hyperv/models/compute/floppy_drives.rb +0 -12
- data/lib/fog/hyperv/models/compute/hard_drive.rb +0 -110
- data/lib/fog/hyperv/models/compute/hard_drives.rb +0 -11
- data/lib/fog/hyperv/models/compute/host.rb +0 -45
- data/lib/fog/hyperv/models/compute/hosts.rb +0 -15
- data/lib/fog/hyperv/models/compute/network_adapter.rb +0 -145
- data/lib/fog/hyperv/models/compute/network_adapters.rb +0 -19
- data/lib/fog/hyperv/models/compute/server.rb +0 -220
- data/lib/fog/hyperv/models/compute/servers.rb +0 -21
- data/lib/fog/hyperv/models/compute/switch.rb +0 -65
- data/lib/fog/hyperv/models/compute/switches.rb +0 -15
- data/lib/fog/hyperv/models/compute/vhd.rb +0 -101
- data/lib/fog/hyperv/models/compute/vhds.rb +0 -16
- data/lib/fog/hyperv/requests/compute/add_vm_dvd_drive.rb +0 -12
- data/lib/fog/hyperv/requests/compute/add_vm_hard_disk_drive.rb +0 -12
- data/lib/fog/hyperv/requests/compute/add_vm_network_adapter.rb +0 -12
- data/lib/fog/hyperv/requests/compute/connect_vm_network_adapter.rb +0 -12
- data/lib/fog/hyperv/requests/compute/disconnect_vm_network_adapter.rb +0 -12
- data/lib/fog/hyperv/requests/compute/get_cluster.rb +0 -11
- data/lib/fog/hyperv/requests/compute/get_cluster_node.rb +0 -19
- data/lib/fog/hyperv/requests/compute/get_vhd.rb +0 -34
- data/lib/fog/hyperv/requests/compute/get_vm.rb +0 -20
- data/lib/fog/hyperv/requests/compute/get_vm_bios.rb +0 -21
- data/lib/fog/hyperv/requests/compute/get_vm_dvd_drive.rb +0 -20
- data/lib/fog/hyperv/requests/compute/get_vm_firmware.rb +0 -19
- data/lib/fog/hyperv/requests/compute/get_vm_floppy_disk_drive.rb +0 -20
- data/lib/fog/hyperv/requests/compute/get_vm_group.rb +0 -23
- data/lib/fog/hyperv/requests/compute/get_vm_hard_disk_drive.rb +0 -20
- data/lib/fog/hyperv/requests/compute/get_vm_host.rb +0 -12
- data/lib/fog/hyperv/requests/compute/get_vm_host_cluster.rb +0 -25
- data/lib/fog/hyperv/requests/compute/get_vm_network_adapter.rb +0 -27
- data/lib/fog/hyperv/requests/compute/get_vm_switch.rb +0 -27
- data/lib/fog/hyperv/requests/compute/mock_files/get_vm.json +0 -1
- data/lib/fog/hyperv/requests/compute/new_vhd.rb +0 -12
- data/lib/fog/hyperv/requests/compute/new_vm.rb +0 -15
- data/lib/fog/hyperv/requests/compute/new_vm_switch.rb +0 -13
- data/lib/fog/hyperv/requests/compute/remove_item.rb +0 -13
- data/lib/fog/hyperv/requests/compute/remove_vm.rb +0 -15
- data/lib/fog/hyperv/requests/compute/remove_vm_dvd_drive.rb +0 -12
- data/lib/fog/hyperv/requests/compute/remove_vm_hard_disk_drive.rb +0 -12
- data/lib/fog/hyperv/requests/compute/remove_vm_network_adapter.rb +0 -12
- data/lib/fog/hyperv/requests/compute/restart_vm.rb +0 -15
- data/lib/fog/hyperv/requests/compute/set_vm.rb +0 -12
- data/lib/fog/hyperv/requests/compute/set_vm_bios.rb +0 -13
- data/lib/fog/hyperv/requests/compute/set_vm_dvd_drive.rb +0 -12
- data/lib/fog/hyperv/requests/compute/set_vm_firmware.rb +0 -13
- data/lib/fog/hyperv/requests/compute/set_vm_hard_disk_drive.rb +0 -12
- data/lib/fog/hyperv/requests/compute/set_vm_network_adapter.rb +0 -12
- data/lib/fog/hyperv/requests/compute/set_vm_network_adapter_vlan.rb +0 -12
- data/lib/fog/hyperv/requests/compute/set_vm_switch.rb +0 -13
- data/lib/fog/hyperv/requests/compute/start_vm.rb +0 -15
- data/lib/fog/hyperv/requests/compute/stop_vm.rb +0 -15
- data/lib/fog/model.rb +0 -91
- data/test/fog/hyperv_test.rb +0 -7
- data/test/test_helper.rb +0 -4
- /data/lib/fog/hyperv/{requests/compute → compute/requests}/mock_files/get_cluster.json +0 -0
- /data/lib/fog/hyperv/{requests/compute → compute/requests}/mock_files/get_cluster_node.json +0 -0
- /data/lib/fog/hyperv/{requests/compute → compute/requests}/mock_files/get_vhd.json +0 -0
- /data/lib/fog/hyperv/{requests/compute → compute/requests}/mock_files/get_vm_bios.json +0 -0
- /data/lib/fog/hyperv/{requests/compute → compute/requests}/mock_files/get_vm_dvd_drive.json +0 -0
- /data/lib/fog/hyperv/{requests/compute → compute/requests}/mock_files/get_vm_firmware.json +0 -0
- /data/lib/fog/hyperv/{requests/compute → compute/requests}/mock_files/get_vm_floppy_disk_drive.json +0 -0
- /data/lib/fog/hyperv/{requests/compute → compute/requests}/mock_files/get_vm_hard_disk_drive.json +0 -0
- /data/lib/fog/hyperv/{requests/compute → compute/requests}/mock_files/get_vm_host.json +0 -0
- /data/lib/fog/hyperv/{requests/compute → compute/requests}/mock_files/get_vm_network_adapter.json +0 -0
- /data/lib/fog/hyperv/{requests/compute → compute/requests}/mock_files/get_vm_switch.json +0 -0
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
module Fog
|
|
2
|
-
module Attributes
|
|
3
|
-
class Enum < Default
|
|
4
|
-
attr_reader :values
|
|
5
|
-
|
|
6
|
-
def initialize(model, name, options)
|
|
7
|
-
@values = options.fetch(:values, [])
|
|
8
|
-
|
|
9
|
-
raise Fog::Hyperv::Errors::ServiceError, "#{values} is not a valid array or hash" \
|
|
10
|
-
unless values.class.to_s == 'Array' || values.class.to_s == 'Hash'
|
|
11
|
-
|
|
12
|
-
super
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def ensure_value_getter
|
|
16
|
-
return if model.private_methods.include?("#{name}_values".to_sym)
|
|
17
|
-
|
|
18
|
-
model.class_eval <<-EOS, __FILE__, __LINE__
|
|
19
|
-
private
|
|
20
|
-
def #{name}_values
|
|
21
|
-
#{values}.freeze
|
|
22
|
-
end
|
|
23
|
-
EOS
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def create_setter
|
|
27
|
-
ensure_value_getter
|
|
28
|
-
|
|
29
|
-
# Add a setter that always stores a symbol value
|
|
30
|
-
model.class_eval <<-EOS, __FILE__, __LINE__
|
|
31
|
-
def #{name}=(new_value)
|
|
32
|
-
_values = #{name}_values
|
|
33
|
-
if new_value.is_a?(Numeric)
|
|
34
|
-
# TODO: Better way to do class comparison in generated code
|
|
35
|
-
if _values.class.to_s == 'Array'
|
|
36
|
-
raise Fog::Hyperv::Errors::ServiceError, "\#{new_value} is not in the range (0..\#{_values.length - 1})" \
|
|
37
|
-
unless new_value >= 0 && new_value < _values.length
|
|
38
|
-
attributes[:#{name}] = _values[new_value]
|
|
39
|
-
elsif _values.class.to_s == 'Hash'
|
|
40
|
-
raise Fog::Hyperv::Errors::ServiceError, "\#{new_value} is not one of \#{_values.values})" \
|
|
41
|
-
unless _values.values.include? new_value
|
|
42
|
-
attributes[:#{name}] = _values.key(new_value)
|
|
43
|
-
end
|
|
44
|
-
elsif new_value.nil?
|
|
45
|
-
attributes[:#{name}] = nil
|
|
46
|
-
else
|
|
47
|
-
new_value = new_value.to_s.to_sym unless new_value.is_a? Symbol
|
|
48
|
-
# Ensure values is the array of enum symbols
|
|
49
|
-
_values = (_values.is_a?(Hash) ? _values.keys : _values)
|
|
50
|
-
raise Fog::Hyperv::Errors::ServiceError, "\#{new_value.inspect} is not one of \#{_values})" \
|
|
51
|
-
unless _values.include? new_value
|
|
52
|
-
attributes[:#{name}] = new_value
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
EOS
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
def create_getter
|
|
59
|
-
ensure_value_getter
|
|
60
|
-
|
|
61
|
-
# Add a getter for <enum>_num to get the numeric value
|
|
62
|
-
model.class_eval <<-EOS, __FILE__, __LINE__
|
|
63
|
-
def #{name}_num
|
|
64
|
-
_values = #{name}_values
|
|
65
|
-
_value = attributes[:#{name}]
|
|
66
|
-
|
|
67
|
-
return nil if _value.nil?
|
|
68
|
-
if _value.is_a?(Numeric)
|
|
69
|
-
_value
|
|
70
|
-
else
|
|
71
|
-
if _values.is_a?(Hash)
|
|
72
|
-
_values.send(:[], _value)
|
|
73
|
-
else
|
|
74
|
-
_values.index(_value)
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
EOS
|
|
79
|
-
|
|
80
|
-
# Add the default getter for the symbol value
|
|
81
|
-
super
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
end
|
|
85
|
-
end
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
module Fog
|
|
2
|
-
module Compute
|
|
3
|
-
class Hyperv
|
|
4
|
-
class Bios < Fog::Hyperv::Model
|
|
5
|
-
identity :vm_id, type: :string
|
|
6
|
-
|
|
7
|
-
attribute :computer_name, type: :string
|
|
8
|
-
# attribute :is_deleted, type: :boolean
|
|
9
|
-
attribute :num_lock_enabled, type: :boolean
|
|
10
|
-
# TODO? Enum values; :CD, :IDE, :LegacyNetworkAdapter, :Floppy (, :VHD, :NetworkAdapter)
|
|
11
|
-
attribute :startup_order, type: :array
|
|
12
|
-
attribute :vm_name, type: :string
|
|
13
|
-
|
|
14
|
-
attr_reader :computer, :vm
|
|
15
|
-
|
|
16
|
-
def initialize(args = {})
|
|
17
|
-
super
|
|
18
|
-
@computer = args.delete :computer
|
|
19
|
-
@vm = args.delete :vm
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def save
|
|
23
|
-
requires :computer_name, :vm_name
|
|
24
|
-
|
|
25
|
-
raise Fog::Hyperv::Errors::ServiceError, "Can't create Bios instances" unless persisted?
|
|
26
|
-
|
|
27
|
-
data = service.set_vm_bios(
|
|
28
|
-
computer_name: computer_name,
|
|
29
|
-
vm_name: vm_name,
|
|
30
|
-
passthru: true,
|
|
31
|
-
|
|
32
|
-
disable_num_lock: changed?(:num_lock_enabled) && !num_lock_enabled,
|
|
33
|
-
enable_num_lock: changed?(:num_lock_enabled) && num_lock_enabled,
|
|
34
|
-
startup_order: changed!(:startup_order),
|
|
35
|
-
|
|
36
|
-
_return_fields: self.class.attributes,
|
|
37
|
-
_json_depth: 1
|
|
38
|
-
)
|
|
39
|
-
|
|
40
|
-
merge_attributes(data)
|
|
41
|
-
@old = dup
|
|
42
|
-
self
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def reload
|
|
46
|
-
requires :computer_name, :vm_name
|
|
47
|
-
|
|
48
|
-
data = service.get_vm_bios(
|
|
49
|
-
computer_name: computer_name,
|
|
50
|
-
vm_name: vm_name,
|
|
51
|
-
|
|
52
|
-
_return_fields: self.class.attributes,
|
|
53
|
-
_json_depth: 1
|
|
54
|
-
)
|
|
55
|
-
merge_attributes(data)
|
|
56
|
-
self
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
end
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
module Fog
|
|
2
|
-
module Compute
|
|
3
|
-
class Hyperv
|
|
4
|
-
class Cluster < Fog::Hyperv::Model
|
|
5
|
-
identity :id, type: :string
|
|
6
|
-
|
|
7
|
-
attribute :description, type: :string
|
|
8
|
-
attribute :domain, type: :string
|
|
9
|
-
attribute :name, type: :string
|
|
10
|
-
|
|
11
|
-
# def initialize(attrs = {})
|
|
12
|
-
# super
|
|
13
|
-
|
|
14
|
-
# @collections = {}
|
|
15
|
-
# self.class.ensure_collections!
|
|
16
|
-
# end
|
|
17
|
-
|
|
18
|
-
def nodes
|
|
19
|
-
attributes[:nodes] ||= id.nil? ? [] : [service.get_cluster_node(cluster: name, _return_fields: [:description, :name, :node_name])].flatten
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def hosts
|
|
23
|
-
attributes[:hosts] ||= id.nil? ? [] : nodes.map { |n| service.hosts.get(n[:name]) }
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def reload
|
|
27
|
-
requires_one :domain, :name
|
|
28
|
-
|
|
29
|
-
data = service.get_cluster(
|
|
30
|
-
domain: domain,
|
|
31
|
-
name: name,
|
|
32
|
-
|
|
33
|
-
_return_fields: self.class.attributes,
|
|
34
|
-
_json_depth: 1
|
|
35
|
-
)
|
|
36
|
-
|
|
37
|
-
attributes[:nodes] = nil
|
|
38
|
-
attributes[:hosts] = nil
|
|
39
|
-
|
|
40
|
-
merge_attributes(data.attributes)
|
|
41
|
-
self
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
# def self.ensure_collections!
|
|
45
|
-
# return if @collections
|
|
46
|
-
# @collections = true
|
|
47
|
-
|
|
48
|
-
# Fog::Compute::Hyperv.collections.each do |coll|
|
|
49
|
-
# # Don't recurse on hosts
|
|
50
|
-
# next if coll == :hosts
|
|
51
|
-
|
|
52
|
-
# coll_name = coll.to_s.split('_').map(&:capitalize).join
|
|
53
|
-
# klass = Fog::Compute::Hyperv.const_get(coll_name)
|
|
54
|
-
# next if klass.requires?(:vm)
|
|
55
|
-
|
|
56
|
-
# define_method coll do
|
|
57
|
-
# @collections[coll] ||= service.send(coll, cluster: self)
|
|
58
|
-
# end
|
|
59
|
-
# end
|
|
60
|
-
# end
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
end
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
module Fog
|
|
2
|
-
module Compute
|
|
3
|
-
class Hyperv
|
|
4
|
-
class Clusters < Fog::Hyperv::VMCollection
|
|
5
|
-
model Fog::Compute::Hyperv::Cluster
|
|
6
|
-
|
|
7
|
-
get_method :get_cluster
|
|
8
|
-
|
|
9
|
-
def get(name, filters = {})
|
|
10
|
-
super(filters.merge(name: name))
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
module Fog
|
|
2
|
-
module Compute
|
|
3
|
-
class Hyperv
|
|
4
|
-
class ComPort < Fog::Hyperv::Model
|
|
5
|
-
identity :id
|
|
6
|
-
|
|
7
|
-
attribute :computer_name
|
|
8
|
-
attribute :debugger_mode, type: :enum, values: %i[On Off]
|
|
9
|
-
attribute :name
|
|
10
|
-
attribute :path
|
|
11
|
-
|
|
12
|
-
def save
|
|
13
|
-
raise Fog::Errors::NotImplemented
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def reload
|
|
17
|
-
raise Fog::Errors::NotImplemented
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
module Fog
|
|
2
|
-
module Compute
|
|
3
|
-
class Hyperv
|
|
4
|
-
class DvdDrive < Fog::Hyperv::Model
|
|
5
|
-
identity :id
|
|
6
|
-
|
|
7
|
-
attribute :computer_name
|
|
8
|
-
# attribute :is_deleted
|
|
9
|
-
attribute :name
|
|
10
|
-
attribute :path
|
|
11
|
-
attribute :pool_name
|
|
12
|
-
attribute :controller_location
|
|
13
|
-
attribute :controller_number
|
|
14
|
-
attribute :controller_type, type: :enum, values: %i[IDE SCSI]
|
|
15
|
-
attribute :dvd_media_type, type: :enum, values: %i[None ISO Passthrough]
|
|
16
|
-
attribute :vm_id
|
|
17
|
-
attribute :vm_name
|
|
18
|
-
# TODO? VM Snapshots?
|
|
19
|
-
#
|
|
20
|
-
|
|
21
|
-
def save
|
|
22
|
-
requires :computer_name, :vm_name
|
|
23
|
-
|
|
24
|
-
data = \
|
|
25
|
-
if persisted?
|
|
26
|
-
service.set_vm_dvd_drive(
|
|
27
|
-
computer_name: old.computer_name,
|
|
28
|
-
vm_name: old.vm_name,
|
|
29
|
-
controller_number: old.controller_number,
|
|
30
|
-
controller_location: old.controller_location,
|
|
31
|
-
passthru: true,
|
|
32
|
-
|
|
33
|
-
resource_pool_name: changed!(:pool_name),
|
|
34
|
-
path: changed?(:path) && (path || '$null'),
|
|
35
|
-
to_controller_number: changed!(:controller_number),
|
|
36
|
-
to_controller_location: changed!(:controller_location),
|
|
37
|
-
|
|
38
|
-
_return_fields: self.class.attributes,
|
|
39
|
-
_json_depth: 1
|
|
40
|
-
)
|
|
41
|
-
else
|
|
42
|
-
service.add_vm_dvd_drive(
|
|
43
|
-
computer_name: computer_name,
|
|
44
|
-
vm_name: vm_name,
|
|
45
|
-
passthru: true,
|
|
46
|
-
|
|
47
|
-
controller_number: controller_number,
|
|
48
|
-
controller_location: controller_location,
|
|
49
|
-
path: path,
|
|
50
|
-
resource_pool_name: pool_name,
|
|
51
|
-
|
|
52
|
-
_return_fields: self.class.attributes,
|
|
53
|
-
_json_depth: 1
|
|
54
|
-
)
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
merge_attributes(data)
|
|
58
|
-
@old = dup
|
|
59
|
-
self
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def destroy
|
|
63
|
-
requires :computer_name, :vm_name, :controller_number, :controller_location
|
|
64
|
-
|
|
65
|
-
service.remove_vm_dvd_drive(
|
|
66
|
-
computer_name: computer_name,
|
|
67
|
-
vm_name: vm_name,
|
|
68
|
-
controller_number: controller_number,
|
|
69
|
-
controller_location: controller_location
|
|
70
|
-
)
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
def reload
|
|
74
|
-
requires :computer_name, :vm_name
|
|
75
|
-
|
|
76
|
-
data = collection.get(
|
|
77
|
-
computer_name: computer_name,
|
|
78
|
-
vm_name: vm_name,
|
|
79
|
-
controller_location: controller_location,
|
|
80
|
-
controller_number: controller_number,
|
|
81
|
-
|
|
82
|
-
_return_fields: self.class.attributes,
|
|
83
|
-
_json_depth: 1
|
|
84
|
-
)
|
|
85
|
-
merge_attributes(data.attributes)
|
|
86
|
-
@old = data
|
|
87
|
-
self
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
|
-
end
|
|
91
|
-
end
|
|
92
|
-
end
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
module Fog
|
|
2
|
-
module Compute
|
|
3
|
-
class Hyperv
|
|
4
|
-
class Firmware < Fog::Hyperv::Model
|
|
5
|
-
identity :vm_id
|
|
6
|
-
|
|
7
|
-
attribute :boot_order
|
|
8
|
-
attribute :computer_name
|
|
9
|
-
attribute :console_mode, type: :enum, values: %i[Default COM1 COM2 None]
|
|
10
|
-
# attribute :is_deleted
|
|
11
|
-
attribute :preferred_network_boot_protocol, type: :enum, values: %i[IPv4 IPv6]
|
|
12
|
-
attribute :secure_boot, type: :enum, values: %i[On Off]
|
|
13
|
-
attribute :vm_name
|
|
14
|
-
|
|
15
|
-
def save
|
|
16
|
-
requires :computer_name, :vm_name
|
|
17
|
-
|
|
18
|
-
raise Fog::Hyperv::Errors::ServiceError, "Can't create Firmware instances" unless persisted?
|
|
19
|
-
|
|
20
|
-
data = service.set_vm_firmware(
|
|
21
|
-
computer_name: computer_name,
|
|
22
|
-
vm_name: vm_name,
|
|
23
|
-
passthru: true,
|
|
24
|
-
|
|
25
|
-
enable_secure_boot: changed!(:secure_boot),
|
|
26
|
-
preferred_network_boot_protocol: changed!(:preferred_network_boot_protocol),
|
|
27
|
-
console_mode: changed!(:console_mode),
|
|
28
|
-
|
|
29
|
-
_return_fields: self.class.attributes
|
|
30
|
-
)
|
|
31
|
-
|
|
32
|
-
merge_attributes(data)
|
|
33
|
-
@old = dup
|
|
34
|
-
self
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def reload
|
|
38
|
-
requires :computer_name, :vm_name
|
|
39
|
-
|
|
40
|
-
data = service.get_vm_firmware(
|
|
41
|
-
computer_name: computer_name,
|
|
42
|
-
vm_name: vm_name,
|
|
43
|
-
|
|
44
|
-
_return_fields: self.class.attributes
|
|
45
|
-
)
|
|
46
|
-
merge_attributes(data)
|
|
47
|
-
@old = data
|
|
48
|
-
self
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
end
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
module Fog
|
|
2
|
-
module Compute
|
|
3
|
-
class Hyperv
|
|
4
|
-
class FloppyDrive < Fog::Hyperv::Model
|
|
5
|
-
identity :id
|
|
6
|
-
|
|
7
|
-
attribute :computer_name
|
|
8
|
-
attribute :disk
|
|
9
|
-
# attribute :is_deleted
|
|
10
|
-
attribute :name
|
|
11
|
-
attribute :path
|
|
12
|
-
attribute :pool_name
|
|
13
|
-
attribute :vm_id
|
|
14
|
-
attribute :vm_name
|
|
15
|
-
# TODO? VM Snapshots?
|
|
16
|
-
#
|
|
17
|
-
|
|
18
|
-
def save
|
|
19
|
-
raise Fog::Hyperv::Errors::ServiceError, "Can't create new floppy drives" unless persisted?
|
|
20
|
-
|
|
21
|
-
requires :computer_name, :vm_name
|
|
22
|
-
|
|
23
|
-
data = \
|
|
24
|
-
service.set_vm_floppy_disk_drive(
|
|
25
|
-
computer_name: old.computer_name,
|
|
26
|
-
vm_name: old.vm_name,
|
|
27
|
-
passthru: true,
|
|
28
|
-
|
|
29
|
-
resource_pool_name: changed!(:pool_name),
|
|
30
|
-
path: changed?(:path) && (path || '$null'),
|
|
31
|
-
|
|
32
|
-
_return_fields: self.class.attributes,
|
|
33
|
-
_json_depth: 1
|
|
34
|
-
)
|
|
35
|
-
|
|
36
|
-
merge_attributes(data)
|
|
37
|
-
@old = dup
|
|
38
|
-
self
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def reload
|
|
42
|
-
data = collection.get(
|
|
43
|
-
computer_name: computer_name,
|
|
44
|
-
vm_name: vm_name
|
|
45
|
-
)
|
|
46
|
-
merge_attributes(data.attributes)
|
|
47
|
-
@old = data
|
|
48
|
-
self
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
end
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
module Fog
|
|
2
|
-
module Compute
|
|
3
|
-
class Hyperv
|
|
4
|
-
class HardDrive < Fog::Hyperv::Model
|
|
5
|
-
identity :id
|
|
6
|
-
|
|
7
|
-
attribute :computer_name
|
|
8
|
-
attribute :controller_location
|
|
9
|
-
attribute :controller_number, type: :integer
|
|
10
|
-
attribute :controller_type, type: :enum, values: %i[IDE SCSI]
|
|
11
|
-
attribute :disk
|
|
12
|
-
# attribute :is_deleted
|
|
13
|
-
attribute :maximum_iops, type: :integer
|
|
14
|
-
attribute :minimum_iops, type: :integer
|
|
15
|
-
attribute :name
|
|
16
|
-
attribute :path
|
|
17
|
-
attribute :pool_name
|
|
18
|
-
attribute :support_persistent_reservations
|
|
19
|
-
attribute :vm_id
|
|
20
|
-
attribute :vm_name
|
|
21
|
-
# TODO? VM Snapshots?
|
|
22
|
-
|
|
23
|
-
def vhd
|
|
24
|
-
return nil unless path && computer_name
|
|
25
|
-
@vhd ||= service.vhds.get(path, computer_name: computer_name)
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def size_bytes
|
|
29
|
-
vhd && vhd.size_bytes || 0
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def size_bytes=(bytes)
|
|
33
|
-
vhd.size_bytes = bytes if vhd
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def save
|
|
37
|
-
requires :computer_name, :vm_name
|
|
38
|
-
|
|
39
|
-
if persisted?
|
|
40
|
-
data = service.set_vm_hard_disk_drive(
|
|
41
|
-
computer_name: old.computer_name,
|
|
42
|
-
vm_name: old.vm_name,
|
|
43
|
-
controller_location: old.controller_location,
|
|
44
|
-
controller_number: old.controller_number,
|
|
45
|
-
controller_type: old.controller_type,
|
|
46
|
-
passthru: true,
|
|
47
|
-
|
|
48
|
-
disk_number: changed?(:disk) && disk && disk.number,
|
|
49
|
-
maximum_iops: changed!(:maximum_iops),
|
|
50
|
-
minimum_iops: changed!(:minimum_iops),
|
|
51
|
-
path: changed!(:path),
|
|
52
|
-
resource_pool_name: changed!(:pool_name),
|
|
53
|
-
support_persistent_reservations: changed!(:support_persistent_reservations),
|
|
54
|
-
to_controller_location: changed!(:controller_location),
|
|
55
|
-
to_controller_number: changed!(:controller_number),
|
|
56
|
-
to_controller_type: changed!(:controller_type),
|
|
57
|
-
|
|
58
|
-
_return_fields: self.class.attributes,
|
|
59
|
-
_json_depth: 1
|
|
60
|
-
)
|
|
61
|
-
@vhd = nil if changed?(:path)
|
|
62
|
-
else
|
|
63
|
-
possible = %i[computer_name controller_location controller_number controller_type path vm_name].freeze
|
|
64
|
-
data = service.add_vm_hard_disk_drive(
|
|
65
|
-
attributes.select { |k, _v| possible.include? k }.merge(
|
|
66
|
-
disk_number: disk && disk.number,
|
|
67
|
-
resource_pool_name: pool_name,
|
|
68
|
-
|
|
69
|
-
passthru: true,
|
|
70
|
-
_return_fields: self.class.attributes,
|
|
71
|
-
_json_depth: 1
|
|
72
|
-
)
|
|
73
|
-
)
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
merge_attributes(data)
|
|
77
|
-
@old = dup
|
|
78
|
-
self
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
def reload
|
|
82
|
-
data = collection.get(
|
|
83
|
-
computer_name: computer_name,
|
|
84
|
-
vm_name: vm_name,
|
|
85
|
-
controller_location: controller_location,
|
|
86
|
-
controller_number: controller_number,
|
|
87
|
-
controller_type: controller_type
|
|
88
|
-
)
|
|
89
|
-
|
|
90
|
-
merge_attributes(data.attributes)
|
|
91
|
-
@old = data
|
|
92
|
-
self
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
def destroy
|
|
96
|
-
return unless persisted?
|
|
97
|
-
|
|
98
|
-
service.remove_vm_hard_disk_drive(
|
|
99
|
-
computer_name: computer_name,
|
|
100
|
-
vm_name: vm_name,
|
|
101
|
-
|
|
102
|
-
controller_location: controller_location,
|
|
103
|
-
controller_number: controller_number,
|
|
104
|
-
controller_type: controller_type
|
|
105
|
-
)
|
|
106
|
-
end
|
|
107
|
-
end
|
|
108
|
-
end
|
|
109
|
-
end
|
|
110
|
-
end
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
module Fog
|
|
2
|
-
module Compute
|
|
3
|
-
class Hyperv
|
|
4
|
-
class Host < Fog::Hyperv::Model
|
|
5
|
-
identity :name
|
|
6
|
-
|
|
7
|
-
attribute :computer_name
|
|
8
|
-
attribute :fully_qualified_domain_name
|
|
9
|
-
attribute :logical_processor_count
|
|
10
|
-
attribute :memory_capacity
|
|
11
|
-
attribute :mac_address_minimum
|
|
12
|
-
attribute :mac_address_maximum
|
|
13
|
-
attribute :maximum_storage_migrations
|
|
14
|
-
attribute :maximum_virtual_machine_migrations
|
|
15
|
-
attribute :virtual_hard_disk_path
|
|
16
|
-
attribute :virtual_machine_path
|
|
17
|
-
|
|
18
|
-
def initialize(attrs = {})
|
|
19
|
-
super
|
|
20
|
-
|
|
21
|
-
@collections = {}
|
|
22
|
-
self.class.ensure_collections!
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def self.ensure_collections!
|
|
26
|
-
return if @collections
|
|
27
|
-
@collections = true
|
|
28
|
-
|
|
29
|
-
Fog::Compute::Hyperv.collections.each do |coll|
|
|
30
|
-
# Hosts don't have host collections
|
|
31
|
-
next if coll == :hosts
|
|
32
|
-
|
|
33
|
-
coll_name = coll.to_s.split('_').map(&:capitalize).join
|
|
34
|
-
klass = Fog::Compute::Hyperv.const_get(coll_name)
|
|
35
|
-
next if klass.requires?(:vm)
|
|
36
|
-
|
|
37
|
-
define_method coll do
|
|
38
|
-
@collections[coll] ||= service.send(coll, computer: self)
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
end
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
module Fog
|
|
2
|
-
module Compute
|
|
3
|
-
class Hyperv
|
|
4
|
-
class Hosts < Fog::Hyperv::Collection
|
|
5
|
-
model Fog::Compute::Hyperv::Host
|
|
6
|
-
|
|
7
|
-
get_method :get_vm_host
|
|
8
|
-
|
|
9
|
-
def get(name, filters = {})
|
|
10
|
-
super filters.merge(computer_name: name)
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|