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.
Files changed (183) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +12 -2
  3. data/lib/fog/bin/hyperv.rb +6 -4
  4. data/lib/fog/hyperv/collection.rb +89 -0
  5. data/lib/fog/hyperv/compute/models/bios.rb +70 -0
  6. data/lib/fog/hyperv/compute/models/cluster.rb +50 -0
  7. data/lib/fog/hyperv/compute/models/clusters.rb +21 -0
  8. data/lib/fog/hyperv/compute/models/com_port.rb +78 -0
  9. data/lib/fog/hyperv/compute/models/com_ports.rb +29 -0
  10. data/lib/fog/hyperv/compute/models/dvd_drive.rb +126 -0
  11. data/lib/fog/hyperv/compute/models/dvd_drives.rb +29 -0
  12. data/lib/fog/hyperv/compute/models/firmware.rb +78 -0
  13. data/lib/fog/hyperv/compute/models/floppy_drive.rb +64 -0
  14. data/lib/fog/hyperv/compute/models/floppy_drives.rb +18 -0
  15. data/lib/fog/hyperv/compute/models/hard_drive.rb +183 -0
  16. data/lib/fog/hyperv/compute/models/hard_drives.rb +28 -0
  17. data/lib/fog/hyperv/compute/models/host.rb +63 -0
  18. data/lib/fog/hyperv/compute/models/hosts.rb +13 -0
  19. data/lib/fog/hyperv/compute/models/network_adapter.rb +368 -0
  20. data/lib/fog/hyperv/compute/models/network_adapter_vlan.rb +172 -0
  21. data/lib/fog/hyperv/compute/models/network_adapters.rb +32 -0
  22. data/lib/fog/hyperv/compute/models/security.rb +121 -0
  23. data/lib/fog/hyperv/compute/models/server.rb +466 -0
  24. data/lib/fog/hyperv/compute/models/servers.rb +18 -0
  25. data/lib/fog/hyperv/compute/models/switch.rb +117 -0
  26. data/lib/fog/hyperv/compute/models/switches.rb +20 -0
  27. data/lib/fog/hyperv/compute/models/vhd.rb +210 -0
  28. data/lib/fog/hyperv/compute/models/vhds.rb +28 -0
  29. data/lib/fog/hyperv/compute/requests/add_vm_dvd_drive.rb +15 -0
  30. data/lib/fog/hyperv/compute/requests/add_vm_hard_disk_drive.rb +15 -0
  31. data/lib/fog/hyperv/compute/requests/add_vm_network_adapter.rb +24 -0
  32. data/lib/fog/hyperv/compute/requests/connect_vm_network_adapter.rb +41 -0
  33. data/lib/fog/hyperv/compute/requests/disable_vm_tpm.rb +16 -0
  34. data/lib/fog/hyperv/compute/requests/disconnect_vm_network_adapter.rb +29 -0
  35. data/lib/fog/hyperv/compute/requests/enable_vm_tpm.rb +16 -0
  36. data/lib/fog/hyperv/compute/requests/get_cluster.rb +11 -0
  37. data/lib/fog/hyperv/compute/requests/get_cluster_node.rb +22 -0
  38. data/lib/fog/hyperv/compute/requests/get_vhd.rb +32 -0
  39. data/lib/fog/hyperv/compute/requests/get_vm.rb +18 -0
  40. data/lib/fog/hyperv/compute/requests/get_vm_bios.rb +21 -0
  41. data/lib/fog/hyperv/compute/requests/get_vm_com_port.rb +17 -0
  42. data/lib/fog/hyperv/compute/requests/get_vm_dvd_drive.rb +25 -0
  43. data/lib/fog/hyperv/compute/requests/get_vm_firmware.rb +21 -0
  44. data/lib/fog/hyperv/compute/requests/get_vm_floppy_disk_drive.rb +16 -0
  45. data/lib/fog/hyperv/compute/requests/get_vm_group.rb +20 -0
  46. data/lib/fog/hyperv/compute/requests/get_vm_hard_disk_drive.rb +24 -0
  47. data/lib/fog/hyperv/compute/requests/get_vm_host.rb +9 -0
  48. data/lib/fog/hyperv/compute/requests/get_vm_host_cluster.rb +21 -0
  49. data/lib/fog/hyperv/compute/requests/get_vm_host_sbt.rb +10 -0
  50. data/lib/fog/hyperv/compute/requests/get_vm_key_protector.rb +16 -0
  51. data/lib/fog/hyperv/compute/requests/get_vm_network_adapter.rb +41 -0
  52. data/lib/fog/hyperv/compute/requests/get_vm_network_adapter_vlan.rb +41 -0
  53. data/lib/fog/hyperv/compute/requests/get_vm_security.rb +15 -0
  54. data/lib/fog/hyperv/compute/requests/get_vm_switch.rb +10 -0
  55. data/lib/fog/hyperv/compute/requests/mock_files/get_vm.json +4 -0
  56. data/lib/fog/hyperv/compute/requests/new_vhd.rb +9 -0
  57. data/lib/fog/hyperv/compute/requests/new_vm.rb +12 -0
  58. data/lib/fog/hyperv/compute/requests/new_vm_switch.rb +11 -0
  59. data/lib/fog/hyperv/compute/requests/optimize_vhd.rb +9 -0
  60. data/lib/fog/hyperv/compute/requests/remove_item.rb +10 -0
  61. data/lib/fog/hyperv/compute/requests/remove_vm.rb +16 -0
  62. data/lib/fog/hyperv/compute/requests/remove_vm_dvd_drive.rb +17 -0
  63. data/lib/fog/hyperv/compute/requests/remove_vm_hard_disk_drive.rb +17 -0
  64. data/lib/fog/hyperv/compute/requests/remove_vm_network_adapter.rb +29 -0
  65. data/lib/fog/hyperv/compute/requests/remove_vm_switch.rb +9 -0
  66. data/lib/fog/hyperv/compute/requests/rename_vm.rb +16 -0
  67. data/lib/fog/hyperv/compute/requests/rename_vm_network_adapter.rb +25 -0
  68. data/lib/fog/hyperv/compute/requests/rename_vm_switch.rb +16 -0
  69. data/lib/fog/hyperv/compute/requests/resize_vhd.rb +16 -0
  70. data/lib/fog/hyperv/compute/requests/restart_vm.rb +22 -0
  71. data/lib/fog/hyperv/compute/requests/resume_vm.rb +22 -0
  72. data/lib/fog/hyperv/compute/requests/save_vm.rb +22 -0
  73. data/lib/fog/hyperv/compute/requests/set_vm.rb +15 -0
  74. data/lib/fog/hyperv/compute/requests/set_vm_bios.rb +15 -0
  75. data/lib/fog/hyperv/compute/requests/set_vm_com_port.rb +16 -0
  76. data/lib/fog/hyperv/compute/requests/set_vm_dvd_drive.rb +16 -0
  77. data/lib/fog/hyperv/compute/requests/set_vm_firmware.rb +15 -0
  78. data/lib/fog/hyperv/compute/requests/set_vm_floppy_disk_drive.rb +16 -0
  79. data/lib/fog/hyperv/compute/requests/set_vm_hard_disk_drive.rb +16 -0
  80. data/lib/fog/hyperv/compute/requests/set_vm_key_protector.rb +15 -0
  81. data/lib/fog/hyperv/compute/requests/set_vm_network_adapter.rb +25 -0
  82. data/lib/fog/hyperv/compute/requests/set_vm_network_adapter_vlan.rb +25 -0
  83. data/lib/fog/hyperv/compute/requests/set_vm_security.rb +17 -0
  84. data/lib/fog/hyperv/compute/requests/set_vm_switch.rb +9 -0
  85. data/lib/fog/hyperv/compute/requests/start_vm.rb +22 -0
  86. data/lib/fog/hyperv/compute/requests/stop_vm.rb +22 -0
  87. data/lib/fog/hyperv/compute/requests/suspend_vm.rb +22 -0
  88. data/lib/fog/hyperv/compute/requests/update_vm.rb +22 -0
  89. data/lib/fog/hyperv/compute.rb +206 -387
  90. data/lib/fog/hyperv/constants.rb +24 -0
  91. data/lib/fog/hyperv/fog_extensions/associations/collection.rb +11 -0
  92. data/lib/fog/hyperv/fog_extensions/attributes/datetime.rb +28 -0
  93. data/lib/fog/hyperv/fog_extensions/attributes/enum.rb +139 -0
  94. data/lib/fog/hyperv/fog_extensions/attributes/enumarray.rb +149 -0
  95. data/lib/fog/hyperv/fog_extensions/attributes/timespan.rb +27 -0
  96. data/lib/fog/hyperv/model.rb +142 -0
  97. data/lib/fog/hyperv/utils/powershell.rb +88 -0
  98. data/lib/fog/hyperv/utils/winrm.rb +233 -0
  99. data/lib/fog/hyperv/version.rb +4 -1
  100. data/lib/fog/hyperv.rb +53 -44
  101. metadata +187 -105
  102. data/.gitignore +0 -10
  103. data/.travis.yml +0 -11
  104. data/CHANGELOG.md +0 -52
  105. data/Gemfile +0 -4
  106. data/Rakefile +0 -10
  107. data/fog-hyperv.gemspec +0 -25
  108. data/lib/fog/collection.rb +0 -152
  109. data/lib/fog/hyperv/fog_extensions/enum.rb +0 -85
  110. data/lib/fog/hyperv/models/compute/bios.rb +0 -61
  111. data/lib/fog/hyperv/models/compute/cluster.rb +0 -64
  112. data/lib/fog/hyperv/models/compute/clusters.rb +0 -15
  113. data/lib/fog/hyperv/models/compute/com_port.rb +0 -22
  114. data/lib/fog/hyperv/models/compute/dvd_drive.rb +0 -92
  115. data/lib/fog/hyperv/models/compute/dvd_drives.rb +0 -12
  116. data/lib/fog/hyperv/models/compute/firmware.rb +0 -53
  117. data/lib/fog/hyperv/models/compute/floppy_drive.rb +0 -53
  118. data/lib/fog/hyperv/models/compute/floppy_drives.rb +0 -12
  119. data/lib/fog/hyperv/models/compute/hard_drive.rb +0 -110
  120. data/lib/fog/hyperv/models/compute/hard_drives.rb +0 -11
  121. data/lib/fog/hyperv/models/compute/host.rb +0 -45
  122. data/lib/fog/hyperv/models/compute/hosts.rb +0 -15
  123. data/lib/fog/hyperv/models/compute/network_adapter.rb +0 -145
  124. data/lib/fog/hyperv/models/compute/network_adapters.rb +0 -19
  125. data/lib/fog/hyperv/models/compute/server.rb +0 -220
  126. data/lib/fog/hyperv/models/compute/servers.rb +0 -21
  127. data/lib/fog/hyperv/models/compute/switch.rb +0 -65
  128. data/lib/fog/hyperv/models/compute/switches.rb +0 -15
  129. data/lib/fog/hyperv/models/compute/vhd.rb +0 -101
  130. data/lib/fog/hyperv/models/compute/vhds.rb +0 -16
  131. data/lib/fog/hyperv/requests/compute/add_vm_dvd_drive.rb +0 -12
  132. data/lib/fog/hyperv/requests/compute/add_vm_hard_disk_drive.rb +0 -12
  133. data/lib/fog/hyperv/requests/compute/add_vm_network_adapter.rb +0 -12
  134. data/lib/fog/hyperv/requests/compute/connect_vm_network_adapter.rb +0 -12
  135. data/lib/fog/hyperv/requests/compute/disconnect_vm_network_adapter.rb +0 -12
  136. data/lib/fog/hyperv/requests/compute/get_cluster.rb +0 -11
  137. data/lib/fog/hyperv/requests/compute/get_cluster_node.rb +0 -19
  138. data/lib/fog/hyperv/requests/compute/get_vhd.rb +0 -34
  139. data/lib/fog/hyperv/requests/compute/get_vm.rb +0 -20
  140. data/lib/fog/hyperv/requests/compute/get_vm_bios.rb +0 -21
  141. data/lib/fog/hyperv/requests/compute/get_vm_dvd_drive.rb +0 -20
  142. data/lib/fog/hyperv/requests/compute/get_vm_firmware.rb +0 -19
  143. data/lib/fog/hyperv/requests/compute/get_vm_floppy_disk_drive.rb +0 -20
  144. data/lib/fog/hyperv/requests/compute/get_vm_group.rb +0 -23
  145. data/lib/fog/hyperv/requests/compute/get_vm_hard_disk_drive.rb +0 -20
  146. data/lib/fog/hyperv/requests/compute/get_vm_host.rb +0 -12
  147. data/lib/fog/hyperv/requests/compute/get_vm_host_cluster.rb +0 -25
  148. data/lib/fog/hyperv/requests/compute/get_vm_network_adapter.rb +0 -27
  149. data/lib/fog/hyperv/requests/compute/get_vm_switch.rb +0 -27
  150. data/lib/fog/hyperv/requests/compute/mock_files/get_vm.json +0 -1
  151. data/lib/fog/hyperv/requests/compute/new_vhd.rb +0 -12
  152. data/lib/fog/hyperv/requests/compute/new_vm.rb +0 -15
  153. data/lib/fog/hyperv/requests/compute/new_vm_switch.rb +0 -13
  154. data/lib/fog/hyperv/requests/compute/remove_item.rb +0 -13
  155. data/lib/fog/hyperv/requests/compute/remove_vm.rb +0 -15
  156. data/lib/fog/hyperv/requests/compute/remove_vm_dvd_drive.rb +0 -12
  157. data/lib/fog/hyperv/requests/compute/remove_vm_hard_disk_drive.rb +0 -12
  158. data/lib/fog/hyperv/requests/compute/remove_vm_network_adapter.rb +0 -12
  159. data/lib/fog/hyperv/requests/compute/restart_vm.rb +0 -15
  160. data/lib/fog/hyperv/requests/compute/set_vm.rb +0 -12
  161. data/lib/fog/hyperv/requests/compute/set_vm_bios.rb +0 -13
  162. data/lib/fog/hyperv/requests/compute/set_vm_dvd_drive.rb +0 -12
  163. data/lib/fog/hyperv/requests/compute/set_vm_firmware.rb +0 -13
  164. data/lib/fog/hyperv/requests/compute/set_vm_hard_disk_drive.rb +0 -12
  165. data/lib/fog/hyperv/requests/compute/set_vm_network_adapter.rb +0 -12
  166. data/lib/fog/hyperv/requests/compute/set_vm_network_adapter_vlan.rb +0 -12
  167. data/lib/fog/hyperv/requests/compute/set_vm_switch.rb +0 -13
  168. data/lib/fog/hyperv/requests/compute/start_vm.rb +0 -15
  169. data/lib/fog/hyperv/requests/compute/stop_vm.rb +0 -15
  170. data/lib/fog/model.rb +0 -91
  171. data/test/fog/hyperv_test.rb +0 -7
  172. data/test/test_helper.rb +0 -4
  173. /data/lib/fog/hyperv/{requests/compute → compute/requests}/mock_files/get_cluster.json +0 -0
  174. /data/lib/fog/hyperv/{requests/compute → compute/requests}/mock_files/get_cluster_node.json +0 -0
  175. /data/lib/fog/hyperv/{requests/compute → compute/requests}/mock_files/get_vhd.json +0 -0
  176. /data/lib/fog/hyperv/{requests/compute → compute/requests}/mock_files/get_vm_bios.json +0 -0
  177. /data/lib/fog/hyperv/{requests/compute → compute/requests}/mock_files/get_vm_dvd_drive.json +0 -0
  178. /data/lib/fog/hyperv/{requests/compute → compute/requests}/mock_files/get_vm_firmware.json +0 -0
  179. /data/lib/fog/hyperv/{requests/compute → compute/requests}/mock_files/get_vm_floppy_disk_drive.json +0 -0
  180. /data/lib/fog/hyperv/{requests/compute → compute/requests}/mock_files/get_vm_hard_disk_drive.json +0 -0
  181. /data/lib/fog/hyperv/{requests/compute → compute/requests}/mock_files/get_vm_host.json +0 -0
  182. /data/lib/fog/hyperv/{requests/compute → compute/requests}/mock_files/get_vm_network_adapter.json +0 -0
  183. /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,12 +0,0 @@
1
- module Fog
2
- module Compute
3
- class Hyperv
4
- class DvdDrives < Fog::Hyperv::VMCollection
5
- model Fog::Compute::Hyperv::DvdDrive
6
- requires_vm
7
-
8
- get_method :get_vm_dvd_drive
9
- end
10
- end
11
- end
12
- 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,12 +0,0 @@
1
- module Fog
2
- module Compute
3
- class Hyperv
4
- class FloppyDrives < Fog::Hyperv::VMCollection
5
- model Fog::Compute::Hyperv::FloppyDrive
6
- requires_vm
7
-
8
- get_method :get_vm_floppy_disk_drive
9
- end
10
- end
11
- end
12
- 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,11 +0,0 @@
1
- module Fog
2
- module Compute
3
- class Hyperv
4
- class HardDrives < Fog::Hyperv::VMCollection
5
- model Fog::Compute::Hyperv::HardDrive
6
-
7
- get_method :get_vm_hard_disk_drive
8
- end
9
- end
10
- end
11
- 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