fog-kubevirt 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (27) hide show
  1. checksums.yaml +4 -4
  2. data/lib/fog/compute/kubevirt.rb +27 -27
  3. data/lib/fog/compute/kubevirt/models/template.rb +15 -15
  4. data/lib/fog/compute/kubevirt/models/{offlinevm.rb → vm.rb} +9 -9
  5. data/lib/fog/compute/kubevirt/models/{livevm.rb → vminstance.rb} +2 -2
  6. data/lib/fog/compute/kubevirt/models/vminstances.rb +40 -0
  7. data/lib/fog/compute/kubevirt/models/vms.rb +25 -0
  8. data/lib/fog/compute/kubevirt/requests/create_vm.rb +2 -3
  9. data/lib/fog/compute/kubevirt/requests/{create_offlinevm.rb → create_vminstance.rb} +5 -4
  10. data/lib/fog/compute/kubevirt/requests/{delete_livevm.rb → delete_vm.rb} +2 -2
  11. data/lib/fog/compute/kubevirt/requests/delete_vminstance.rb +16 -0
  12. data/lib/fog/compute/kubevirt/requests/get_node.rb +1 -1
  13. data/lib/fog/compute/kubevirt/requests/get_vm.rb +24 -0
  14. data/lib/fog/compute/kubevirt/requests/{get_livevm.rb → get_vminstance.rb} +9 -9
  15. data/lib/fog/compute/kubevirt/requests/list_templates.rb +2 -2
  16. data/lib/fog/compute/kubevirt/requests/list_vminstances.rb +21 -0
  17. data/lib/fog/compute/kubevirt/requests/list_vms.rb +55 -0
  18. data/lib/fog/compute/kubevirt/requests/update_vm.rb +16 -0
  19. data/lib/fog/kubevirt/version.rb +1 -1
  20. metadata +14 -14
  21. data/lib/fog/compute/kubevirt/models/livevms.rb +0 -40
  22. data/lib/fog/compute/kubevirt/models/offlinevms.rb +0 -25
  23. data/lib/fog/compute/kubevirt/requests/delete_offlinevm.rb +0 -16
  24. data/lib/fog/compute/kubevirt/requests/get_offlinevm.rb +0 -24
  25. data/lib/fog/compute/kubevirt/requests/list_livevms.rb +0 -21
  26. data/lib/fog/compute/kubevirt/requests/list_offlinevms.rb +0 -52
  27. data/lib/fog/compute/kubevirt/requests/update_offlinevm.rb +0 -16
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7a44f9af0dbc054c9c1ad536e20916c4c90bbee0
4
- data.tar.gz: 622eead4dcc53570f189f73c819bf3fbb63789c4
3
+ metadata.gz: 5246648e5a5f2830f1ac4a9c177f02cd6d22cc5c
4
+ data.tar.gz: c11e2e2b8a2924b0a814560d872e2749d93cddbd
5
5
  SHA512:
6
- metadata.gz: 02dd72c399e6c1bdc096794b16241f7b55c8e8db0383335236a8a19a1af04208ed96cb00dae2548c31da832bf5cf55367ad2697f02b7f4b5d7cd80435031d95b
7
- data.tar.gz: 94d3d0630a5c5da539689027e897cd7f57ea456ca2bb4a6b26b99f780de8a233c6bf0e155d3a1d5292fea5e4b7dfbdf281570704d18947443054730df234591e
6
+ metadata.gz: bdce78cc9bd4e5ee885baeba9ba9f2098da3ff41b0a2e0e32ae534d2958c46cfc84b3e7acd5517154f4c35b1948a97bc2e2c6ba07b9bf4efd3755de45a71e8e5
7
+ data.tar.gz: 1c64fc9fd3d74b778323d47c6bf922d0cfbef6cf14ddcefa1aef03181cf47426f2ef1046faefbae5090bc2b7b66486f3e63339c05855971e4b9cc3c5dcd081a2
@@ -10,12 +10,12 @@ module Fog
10
10
  recognizes :kubevirt_hostname, :kubevirt_port, :kubevirt_namespace, :kubevirt_log
11
11
 
12
12
  model_path 'fog/compute/kubevirt/models'
13
- model :livevm
14
- collection :livevms
13
+ model :vminstance
14
+ collection :vminstances
15
15
  model :node
16
16
  collection :nodes
17
- model :offlinevm
18
- collection :offlinevms
17
+ model :vm
18
+ collection :vms
19
19
  model :template
20
20
  collection :templates
21
21
  model :volume
@@ -24,19 +24,19 @@ module Fog
24
24
  request_path 'fog/compute/kubevirt/requests'
25
25
 
26
26
  request :create_vm
27
- request :create_offlinevm
27
+ request :create_vminstance
28
28
  request :create_pvc
29
- request :delete_livevm
30
- request :delete_offlinevm
31
- request :get_livevm
29
+ request :delete_vminstance
30
+ request :delete_vm
31
+ request :get_vminstance
32
32
  request :get_node
33
- request :get_offlinevm
33
+ request :get_vm
34
34
  request :get_template
35
- request :list_livevms
35
+ request :list_vminstances
36
36
  request :list_nodes
37
- request :list_offlinevms
37
+ request :list_vms
38
38
  request :list_templates
39
- request :update_offlinevm
39
+ request :update_vm
40
40
 
41
41
  module Shared
42
42
 
@@ -108,7 +108,7 @@ module Fog
108
108
  # The API version and group of KubeVirt:
109
109
  #
110
110
  KUBEVIRT_GROUP = 'kubevirt.io'.freeze
111
- KUBEVIRT_VERSION = 'v1alpha1'.freeze
111
+ KUBEVIRT_VERSION = 'v1alpha2'.freeze
112
112
 
113
113
  def initialize(options={})
114
114
  require 'kubeclient'
@@ -118,7 +118,7 @@ module Fog
118
118
  @port = options[:kubevirt_port]
119
119
 
120
120
  @log = options[:kubevirt_log]
121
- @log ||= Logger.new(STDOUT)
121
+ @log ||= Logger::Logger.new(STDOUT)
122
122
 
123
123
  @namespace = options[:kubevirt_namespace] || 'default'
124
124
 
@@ -193,37 +193,37 @@ module Fog
193
193
  end
194
194
 
195
195
  #
196
- # Returns a watcher for offline virtual machines.
196
+ # Returns a watcher for virtual machines.
197
197
  #
198
198
  # @param opts [Hash] A hash with options for the watcher.
199
199
  # @return [WatchWrapper] The watcher.
200
200
  #
201
- def watch_offline_vms(opts = {})
201
+ def watch_vms(opts = {})
202
202
  mapper = Proc.new do |notice|
203
- offlinevm = OpenStruct.new(Offlinevm.parse(notice.object)) if notice.object.kind == 'OfflineVirtualMachine'
204
- offlinevm ||= OpenStruct.new
203
+ vm = OpenStruct.new(Vm.parse(notice.object)) if notice.object.kind == 'VirtualMachine'
204
+ vm ||= OpenStruct.new
205
205
 
206
- populate_notice_attributes(offlinevm, notice)
207
- offlinevm
206
+ populate_notice_attributes(vm, notice)
207
+ vm
208
208
  end
209
- watch = kubevirt_client.watch_offline_virtual_machines(opts)
209
+ watch = kubevirt_client.watch_virtual_machines(opts)
210
210
 
211
211
  WatchWrapper.new(watch, mapper)
212
212
  end
213
213
 
214
214
  #
215
- # Returns a watcher for live virtual machines.
215
+ # Returns a watcher for virtual machine instances.
216
216
  #
217
217
  # @param opts [Hash] A hash with options for the watcher.
218
218
  # @return [WatchWrapper] The watcher.
219
219
  #
220
- def watch_live_vms(opts = {})
220
+ def watch_vminstances(opts = {})
221
221
  mapper = Proc.new do |notice|
222
- livevm = OpenStruct.new(Livevm.parse(notice.object)) if notice.object.kind == 'VirtualMachine'
223
- livevm ||= OpenStruct.new
222
+ vminstance = OpenStruct.new(Vminstance.parse(notice.object)) if notice.object.kind == 'VirtualMachine'
223
+ vminstance ||= OpenStruct.new
224
224
 
225
- populate_notice_attributes(livevm, notice)
226
- livevm
225
+ populate_notice_attributes(vminstance, notice)
226
+ vminstance
227
227
  end
228
228
  watch = kubevirt_client.watch_virtual_machines(opts)
229
229
 
@@ -21,8 +21,8 @@ module Fog
21
21
  # use persistent volume claims if any from a template and send
22
22
  create_persistent_volume_claims(persistent_volume_claims_from_objects(objects), params, namespace)
23
23
 
24
- # use offline vm definition from a template and send
25
- create_offline_vm(offline_vm_from_objects(objects), params, namespace)
24
+ # use vm definition from a template and send
25
+ create_vm(vm_from_objects(objects), params, namespace)
26
26
  end
27
27
 
28
28
  def self.parse(object)
@@ -39,7 +39,7 @@ module Fog
39
39
  :parameters => object[:parameters],
40
40
  :description => annotations && annotations[:description],
41
41
  :tags => annotations && annotations[:tags]
42
- }.compact
42
+ }
43
43
  end
44
44
 
45
45
  private
@@ -65,16 +65,16 @@ module Fog
65
65
  end
66
66
 
67
67
  #
68
- # Creates an offline virtual machine within provided namespace.
68
+ # Creates a virtual machine within provided namespace.
69
69
  #
70
- # @param offline_vm [Hash] Offline virtual machine hash as defined in the template.
70
+ # @param vm [Hash] Virtual machine hash as defined in the template.
71
71
  # @param params [Hash] Containing mapping of name and value.
72
72
  # @param namespace [String] Namespace used to store the object.
73
73
  #
74
- def create_offline_vm(offline_vm, params, namespace)
75
- offline_vm = param_substitution!(offline_vm, params)
74
+ def create_vm(vm, params, namespace)
75
+ vm = param_substitution!(vm, params)
76
76
  os_labels = labels || {}
77
- offline_vm = deep_merge!(offline_vm,
77
+ vm = deep_merge!(vm,
78
78
  :spec => {
79
79
  :running => false
80
80
  },
@@ -83,7 +83,7 @@ module Fog
83
83
  }
84
84
  )
85
85
 
86
- offline_vm = deep_merge!(offline_vm,
86
+ vm = deep_merge!(vm,
87
87
  :metadata => {
88
88
  :labels => {
89
89
  OS_LABEL => os_labels[OS_LABEL_SYMBOL]
@@ -91,8 +91,8 @@ module Fog
91
91
  }
92
92
  ) if os_labels[OS_LABEL_SYMBOL]
93
93
 
94
- # Send the request to create the offline virtual machine:
95
- offline_vm = service.create_offlinevm(offline_vm)
94
+ # Send the request to create the virtual machine:
95
+ vm = service.create_vm(vm)
96
96
  end
97
97
 
98
98
  #
@@ -118,15 +118,15 @@ module Fog
118
118
  end
119
119
 
120
120
  #
121
- # Returns object of `OfflineVirtualMachine` kind from provided objects.
121
+ # Returns object of `VirtualMachine` kind from provided objects.
122
122
  #
123
123
  # @param objects Array[Object] Objects defined in the template.
124
- # @return [Hash] Offline virtual machine hash
124
+ # @return [Hash] Virtual machine hash
125
125
  #
126
- def offline_vm_from_objects(objects)
126
+ def vm_from_objects(objects)
127
127
  vm = nil
128
128
  objects.each do |object|
129
- if object[:kind] == "OfflineVirtualMachine"
129
+ if object[:kind] == "VirtualMachine"
130
130
  vm = object
131
131
  end
132
132
  end
@@ -1,7 +1,7 @@
1
1
  module Fog
2
2
  module Compute
3
3
  class Kubevirt
4
- class Offlinevm < Fog::Model
4
+ class Vm < Fog::Model
5
5
  include Shared
6
6
 
7
7
  identity :name
@@ -19,25 +19,25 @@ module Fog
19
19
 
20
20
 
21
21
  def start(options = {})
22
- # Change the `running` attribute to `true` so that the offline virtual machine controller will take it and
23
- # create the live virtual machine.
24
- offline_vm = service.get_raw_offlinevm(name)
25
- offline_vm = deep_merge!(offline_vm,
22
+ # Change the `running` attribute to `true` so that the virtual machine controller will take it and
23
+ # create the virtual machine instance.
24
+ vm = service.get_raw_vm(name)
25
+ vm = deep_merge!(vm,
26
26
  :spec => {
27
27
  :running => true
28
28
  }
29
29
  )
30
- service.update_offline_vm(offline_vm)
30
+ service.update_vm(vm)
31
31
  end
32
32
 
33
33
  def stop(options = {})
34
- offline_vm = service.get_raw_offlinevm(name)
35
- offline_vm = deep_merge!(offline_vm,
34
+ vm = service.get_raw_vm(name)
35
+ vm = deep_merge!(vm,
36
36
  :spec => {
37
37
  :running => false
38
38
  }
39
39
  )
40
- service.update_offline_vm(offline_vm)
40
+ service.update_vm(vm)
41
41
  end
42
42
 
43
43
  def self.parse(object)
@@ -1,7 +1,7 @@
1
1
  module Fog
2
2
  module Compute
3
3
  class Kubevirt
4
- class Livevm < Fog::Model
4
+ class Vminstance < Fog::Model
5
5
  identity :name
6
6
 
7
7
  attribute :namespace, :aliases => 'metadata_namespace'
@@ -42,4 +42,4 @@ module Fog
42
42
  end
43
43
  end
44
44
  end
45
- end
45
+ end
@@ -0,0 +1,40 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/compute/kubevirt/models/vminstance'
3
+
4
+ module Fog
5
+ module Compute
6
+ class Kubevirt
7
+ class Vminstances < Fog::Collection
8
+ attr_reader :kind, :resource_version
9
+
10
+ model Fog::Compute::Kubevirt::Vminstance
11
+
12
+ def all(filters = {})
13
+ vms = service.list_vminstances(filters)
14
+ kind = vms.kind
15
+ resource_version = vms.resource_version
16
+ load vms
17
+ end
18
+
19
+ def get(name)
20
+ new service.get_vminstance(name)
21
+ end
22
+
23
+ def destroy(name, namespace)
24
+ begin
25
+ vm_instance = get(name)
26
+ rescue Kubeclient::HttpError
27
+ # the virtual machine instance doesn't exist
28
+ vm_instance = nil
29
+ end
30
+
31
+ # delete vm
32
+ service.delete_vm(name, namespace)
33
+
34
+ # delete vm instance
35
+ service.delete_vminstance(name, namespace) unless vm_instance.nil?
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,25 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/compute/kubevirt/models/vm'
3
+
4
+ module Fog
5
+ module Compute
6
+ class Kubevirt
7
+ class Vms < Fog::Collection
8
+ attr_reader :kind, :resource_version
9
+
10
+ model Fog::Compute::Kubevirt::Vm
11
+
12
+ def all(filters = {})
13
+ vms = service.list_vms(filters)
14
+ kind = vms.kind
15
+ resource_version = vms.resource_version
16
+ load vms
17
+ end
18
+
19
+ def get(name)
20
+ new service.get_vm(name)
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -4,15 +4,14 @@ module Fog
4
4
  class Real
5
5
  def create_vm(vm)
6
6
  kubevirt_client.create_virtual_machine(vm)
7
- rescue Kubeclient::HttpError
7
+ rescue Kubeclient::HttpError => err
8
8
  log.warn(err)
9
9
  raise ::Fog::Kubevirt::Errors::AlreadyExistsError
10
10
  end
11
11
  end
12
12
 
13
13
  class Mock
14
- def create_vm(vm)
15
- end
14
+ def create_vm(vm); end
16
15
  end
17
16
  end
18
17
  end
@@ -2,16 +2,17 @@ module Fog
2
2
  module Compute
3
3
  class Kubevirt
4
4
  class Real
5
- def create_offlinevm(vm)
6
- kubevirt_client.create_offline_virtual_machine(vm)
7
- rescue KubeException => err
5
+ def create_vminstance(vm)
6
+ kubevirt_client.create_virtual_machine_instance(vm)
7
+ rescue Kubeclient::HttpError => err
8
8
  log.warn(err)
9
9
  raise ::Fog::Kubevirt::Errors::AlreadyExistsError
10
10
  end
11
11
  end
12
12
 
13
13
  class Mock
14
- def create_offlinevm(vm); end
14
+ def create_vminstance(vm)
15
+ end
15
16
  end
16
17
  end
17
18
  end
@@ -2,13 +2,13 @@ module Fog
2
2
  module Compute
3
3
  class Kubevirt
4
4
  class Real
5
- def delete_livevm(name, namespace)
5
+ def delete_vm(name, namespace)
6
6
  kubevirt_client.delete_virtual_machine(name, namespace)
7
7
  end
8
8
  end
9
9
 
10
10
  class Mock
11
- def delete_livevm(name, namespace = nil)
11
+ def delete_vm(name)
12
12
  end
13
13
  end
14
14
  end
@@ -0,0 +1,16 @@
1
+ module Fog
2
+ module Compute
3
+ class Kubevirt
4
+ class Real
5
+ def delete_vminstance(name, namespace)
6
+ kubevirt_client.delete_virtual_machine_instance(name, namespace)
7
+ end
8
+ end
9
+
10
+ class Mock
11
+ def delete_virtual_machine_instance(name, namespace = nil)
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -10,7 +10,7 @@ module Fog
10
10
  end
11
11
 
12
12
  class Mock
13
- def get_livevm(name)
13
+ def get_node(name)
14
14
  node = {:apiVersion => "v1",
15
15
  :kind => "Node",
16
16
  :metadata => {
@@ -0,0 +1,24 @@
1
+ module Fog
2
+ module Compute
3
+ class Kubevirt
4
+ class Real
5
+ def get_vm(name)
6
+ Vm.parse get_raw_vm(name)
7
+ end
8
+
9
+ def get_raw_vm(name)
10
+ object_to_hash( kubevirt_client.get_virtual_machine(name, @namespace) )
11
+ end
12
+ end
13
+
14
+ class Mock
15
+ # TODO provide implementation
16
+ def get_vm(name)
17
+ end
18
+
19
+ def get_raw_vm(name)
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -4,28 +4,28 @@ module Fog
4
4
  module Compute
5
5
  class Kubevirt
6
6
  class Real
7
- def get_livevm(name)
7
+ def get_vminstance(name)
8
8
  # namespace is defined on the Real object
9
- Livevm.parse object_to_hash( kubevirt_client.get_virtual_machine(name, @namespace) )
9
+ Vminstance.parse object_to_hash( kubevirt_client.get_virtual_machine_instance(name, @namespace) )
10
10
  end
11
11
  end
12
12
 
13
13
  class Mock
14
- def get_livevm(name)
15
- vm = { :apiVersion => "kubevirt.io/v1alpha1",
16
- :kind => "VirtualMachine",
14
+ def get_vminstance(name)
15
+ vm = { :apiVersion => "kubevirt.io/v1alpha2",
16
+ :kind => "VirtualMachineInstance",
17
17
  :metadata => { :clusterName => "",
18
18
  :creationTimestamp => "2018-02-23T10:12:47Z",
19
19
  :name => "demo",
20
20
  :namespace => "default",
21
- :ownerReferences => [{ :apiVersion => "kubevirt.io/v1alpha1",
22
- :kind => "OfflineVirtualMachine",
21
+ :ownerReferences => [{ :apiVersion => "kubevirt.io/v1alpha2",
22
+ :kind => "VirtualMachine",
23
23
  :name => "demo",
24
24
  :uid => "57e279c1-17ee-11e8-a9f9-525400a7f647"
25
25
  }
26
26
  ],
27
27
  :resourceVersion => "84873",
28
- :selfLink => "/apis/kubevirt.io/v1alpha1/namespaces/default/virtualmachines/demo",
28
+ :selfLink => "/apis/kubevirt.io/v1alpha2/namespaces/default/virtualmachineinstances/demo",
29
29
  :uid => "1906421f-1882-11e8-b539-525400a7f647"
30
30
  },
31
31
  :spec => { :domain => { :cpu => { :cores => "4" },
@@ -52,7 +52,7 @@ module Fog
52
52
  }
53
53
  }
54
54
  object = RecursiveOpenStruct.new(vm, recurse_over_arrays: true)
55
- Livevm.parse object_to_hash(object)
55
+ Vminstance.parse object_to_hash(object)
56
56
  end
57
57
  end
58
58
  end
@@ -26,8 +26,8 @@ module Fog
26
26
  annotations: { description: 'OCP kubevirt linux, template',
27
27
  tags: 'kubevirt,ocp,template,linux' }
28
28
  },
29
- objects: [{ apiVersion: 'kubevirt.io/v1alpha1',
30
- kind: 'OfflineVirtualMachine',
29
+ objects: [{ apiVersion: 'kubevirt.io/v1alpha2',
30
+ kind: 'VirtualMachine',
31
31
  metadata: { name: '${NAME}' },
32
32
  spec: { template: { spec: { domain:
33
33
  { cpu: { cores: '${CPU_CORES}' },
@@ -0,0 +1,21 @@
1
+ module Fog
2
+ module Compute
3
+ class Kubevirt
4
+ class Real
5
+ def list_vminstances(_filters = {})
6
+ vminstances = kubevirt_client.get_virtual_machine_instances(namespace: @namespace)
7
+ entities = vminstances.map do |kubevirt_obj|
8
+ Vminstance.parse object_to_hash(kubevirt_obj)
9
+ end
10
+ EntityCollection.new(vminstances.kind, vminstances.resourceVersion, entities)
11
+ end
12
+ end
13
+
14
+ class Mock
15
+ # TODO provide implementation
16
+ def list_vminstances(_filters = {})
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,55 @@
1
+ require 'recursive_open_struct'
2
+
3
+ module Fog
4
+ module Compute
5
+ class Kubevirt
6
+ class Real
7
+ def list_vms(_filters = {})
8
+ vms = kubevirt_client.get_virtual_machines(namespace: @namespace)
9
+ entities = vms.map do |kubevirt_obj|
10
+ Vm.parse object_to_hash(kubevirt_obj)
11
+ end
12
+ EntityCollection.new(vms.kind, vms.resourceVersion, entities)
13
+ end
14
+ end
15
+
16
+ class Mock
17
+ def list_vms(_filters = {})
18
+ vms = [{ apiVersion: 'kubevirt.io/v1alpha2',
19
+ kind: 'VirtualMachine',
20
+ metadata: {
21
+ clusterName: '',
22
+ creationTimestamp: '2018-02-21T11:15:41Z',
23
+ name: 'aaa',
24
+ namespace: 'default',
25
+ resourceVersion: '967810',
26
+ selfLink: '/apis/kubevirt.io/v1alpha2/namespaces/default/virtualmachines/aaa',
27
+ uid: '8d27ad76-16f8-11e8-95dc-525400b2cba8'
28
+ },
29
+ spec: {
30
+ template: {
31
+ spec: { domain: { cpu: { cores: 4 },
32
+ devices: { disks: [{ disk: { dev: 'vda' },
33
+ name: 'registrydisk',
34
+ volumeName: 'registryvolume' },
35
+ { disk: { dev: 'vdb' },
36
+ name: 'cloudinitdisk',
37
+ volumeName: 'cloudinitvolume' }] },
38
+ machine: { type: 'q35' },
39
+ resources: { requests: { memory: '512Mi' } } },
40
+ volumes: [
41
+ { name: 'registryvolume',
42
+ registryDisk: { image: 'kubevirt/fedora-cloud-registry-disk-demo:latest' }
43
+ },
44
+ { cloudInitNoCloud: { userDataBase64: 'I2Nsb3VkLWNvbmZpZwpwYXNzd29yZDogYXRvbWljCnNzaF9wd2F1dGg6IFRydWUKY2hwYXNzd2Q6IHsgZXhwaXJlOiBGYWxzZSB9Cg==' },
45
+ name: 'cloudinitvolume' }]
46
+ }
47
+ }
48
+ }}]
49
+ object = RecursiveOpenStruct.new(vms, recurse_over_arrays: true)
50
+ object.map { |kubevirt_obj| Vm.parse object_to_hash(kubevirt_obj) }
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,16 @@
1
+ module Fog
2
+ module Compute
3
+ class Kubevirt
4
+ class Real
5
+ def update_vm(update)
6
+ kubevirt_client.update_virtual_machine(update)
7
+ end
8
+ end
9
+
10
+ class Mock
11
+ def update_vm(update)
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -1,5 +1,5 @@
1
1
  module Fog
2
2
  module Kubevirt
3
- VERSION = '0.1.2'
3
+ VERSION = '0.1.3'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fog-kubevirt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Kliczewski
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2018-05-27 00:00:00.000000000 Z
14
+ date: 2018-06-18 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: bundler
@@ -111,30 +111,30 @@ files:
111
111
  - README.md
112
112
  - lib/fog/bin/kubevirt.rb
113
113
  - lib/fog/compute/kubevirt.rb
114
- - lib/fog/compute/kubevirt/models/livevm.rb
115
- - lib/fog/compute/kubevirt/models/livevms.rb
116
114
  - lib/fog/compute/kubevirt/models/node.rb
117
115
  - lib/fog/compute/kubevirt/models/nodes.rb
118
- - lib/fog/compute/kubevirt/models/offlinevm.rb
119
- - lib/fog/compute/kubevirt/models/offlinevms.rb
120
116
  - lib/fog/compute/kubevirt/models/template.rb
121
117
  - lib/fog/compute/kubevirt/models/templates.rb
118
+ - lib/fog/compute/kubevirt/models/vm.rb
119
+ - lib/fog/compute/kubevirt/models/vminstance.rb
120
+ - lib/fog/compute/kubevirt/models/vminstances.rb
121
+ - lib/fog/compute/kubevirt/models/vms.rb
122
122
  - lib/fog/compute/kubevirt/models/volume.rb
123
123
  - lib/fog/compute/kubevirt/models/volumes.rb
124
- - lib/fog/compute/kubevirt/requests/create_offlinevm.rb
125
124
  - lib/fog/compute/kubevirt/requests/create_pvc.rb
126
125
  - lib/fog/compute/kubevirt/requests/create_vm.rb
127
- - lib/fog/compute/kubevirt/requests/delete_livevm.rb
128
- - lib/fog/compute/kubevirt/requests/delete_offlinevm.rb
129
- - lib/fog/compute/kubevirt/requests/get_livevm.rb
126
+ - lib/fog/compute/kubevirt/requests/create_vminstance.rb
127
+ - lib/fog/compute/kubevirt/requests/delete_vm.rb
128
+ - lib/fog/compute/kubevirt/requests/delete_vminstance.rb
130
129
  - lib/fog/compute/kubevirt/requests/get_node.rb
131
- - lib/fog/compute/kubevirt/requests/get_offlinevm.rb
132
130
  - lib/fog/compute/kubevirt/requests/get_template.rb
133
- - lib/fog/compute/kubevirt/requests/list_livevms.rb
131
+ - lib/fog/compute/kubevirt/requests/get_vm.rb
132
+ - lib/fog/compute/kubevirt/requests/get_vminstance.rb
134
133
  - lib/fog/compute/kubevirt/requests/list_nodes.rb
135
- - lib/fog/compute/kubevirt/requests/list_offlinevms.rb
136
134
  - lib/fog/compute/kubevirt/requests/list_templates.rb
137
- - lib/fog/compute/kubevirt/requests/update_offlinevm.rb
135
+ - lib/fog/compute/kubevirt/requests/list_vminstances.rb
136
+ - lib/fog/compute/kubevirt/requests/list_vms.rb
137
+ - lib/fog/compute/kubevirt/requests/update_vm.rb
138
138
  - lib/fog/kubevirt.rb
139
139
  - lib/fog/kubevirt/version.rb
140
140
  homepage: https://github.com/pkliczewski/fog-kubevirt
@@ -1,40 +0,0 @@
1
- require 'fog/core/collection'
2
- require 'fog/compute/kubevirt/models/livevm'
3
-
4
- module Fog
5
- module Compute
6
- class Kubevirt
7
- class Livevms < Fog::Collection
8
- attr_reader :kind, :resource_version
9
-
10
- model Fog::Compute::Kubevirt::Livevm
11
-
12
- def all(filters = {})
13
- vms = service.list_livevms(filters)
14
- kind = vms.kind
15
- resource_version = vms.resource_version
16
- load vms
17
- end
18
-
19
- def get(name)
20
- new service.get_livevm(name)
21
- end
22
-
23
- def destroy(name, namespace)
24
- begin
25
- live_vm = get(name)
26
- rescue KubeException
27
- # the live virtual machine doesn't exist
28
- live_vm = nil
29
- end
30
-
31
- # delete offline vm
32
- service.delete_offlinevm(name, namespace)
33
-
34
- # delete live vm
35
- service.delete_livevm(name, namespace) unless live_vm.nil?
36
- end
37
- end
38
- end
39
- end
40
- end
@@ -1,25 +0,0 @@
1
- require 'fog/core/collection'
2
- require 'fog/compute/kubevirt/models/offlinevm'
3
-
4
- module Fog
5
- module Compute
6
- class Kubevirt
7
- class Offlinevms < Fog::Collection
8
- attr_reader :kind, :resource_version
9
-
10
- model Fog::Compute::Kubevirt::Offlinevm
11
-
12
- def all(filters = {})
13
- ovms = service.list_offlinevms(filters)
14
- kind = ovms.kind
15
- resource_version = ovms.resource_version
16
- load ovms
17
- end
18
-
19
- def get(name)
20
- new service.get_offlinevm(name)
21
- end
22
- end
23
- end
24
- end
25
- end
@@ -1,16 +0,0 @@
1
- module Fog
2
- module Compute
3
- class Kubevirt
4
- class Real
5
- def delete_offlinevm(name, namespace)
6
- kubevirt_client.delete_offline_virtual_machine(name, namespace)
7
- end
8
- end
9
-
10
- class Mock
11
- def delete_offlinevm(name)
12
- end
13
- end
14
- end
15
- end
16
- end
@@ -1,24 +0,0 @@
1
- module Fog
2
- module Compute
3
- class Kubevirt
4
- class Real
5
- def get_offlinevm(name)
6
- Offlinevm.parse get_raw_offlinevm(name)
7
- end
8
-
9
- def get_raw_offlinevm(name)
10
- object_to_hash( kubevirt_client.get_offline_virtual_machine(name, @namespace) )
11
- end
12
- end
13
-
14
- class Mock
15
- # TODO provide implementation
16
- def get_offlinevm(name)
17
- end
18
-
19
- def get_raw_offlinevm(name)
20
- end
21
- end
22
- end
23
- end
24
- end
@@ -1,21 +0,0 @@
1
- module Fog
2
- module Compute
3
- class Kubevirt
4
- class Real
5
- def list_livevms(_filters = {})
6
- vms = kubevirt_client.get_virtual_machines(namespace: @namespace)
7
- entities = vms.map do |kubevirt_obj|
8
- Livevm.parse object_to_hash(kubevirt_obj)
9
- end
10
- EntityCollection.new(vms.kind, vms.resourceVersion, entities)
11
- end
12
- end
13
-
14
- class Mock
15
- # TODO provide implementation
16
- def list_livevms(_filters = {})
17
- end
18
- end
19
- end
20
- end
21
- end
@@ -1,52 +0,0 @@
1
- require 'recursive_open_struct'
2
-
3
- module Fog
4
- module Compute
5
- class Kubevirt
6
- class Real
7
- def list_offlinevms(_filters = {})
8
- ovms = kubevirt_client.get_offline_virtual_machines(namespace: @namespace)
9
- entities = ovms.map do |kubevirt_obj|
10
- Offlinevm.parse object_to_hash(kubevirt_obj)
11
- end
12
- EntityCollection.new(ovms.kind, ovms.resourceVersion, entities)
13
- end
14
- end
15
-
16
- class Mock
17
- def list_offlinevms(_filters = {})
18
- offlinevms = [{ apiVersion: 'kubevirt.io/v1alpha1',
19
- kind: 'OfflineVirtualMachine',
20
- metadata: {
21
- clusterName: '',
22
- creationTimestamp: '2018-02-21T11:15:41Z',
23
- name: 'aaa',
24
- namespace: 'default',
25
- resourceVersion: '967810',
26
- selfLink: '/apis/kubevirt.io/v1alpha1/namespaces/default/offlinevirtualmachines/aaa',
27
- uid: '8d27ad76-16f8-11e8-95dc-525400b2cba8'
28
- },
29
- spec: {
30
- template: {
31
- spec: { domain: { cpu: { cores: 4 },
32
- devices: { disks: [{ disk: { dev: 'vda' },
33
- name: 'registrydisk',
34
- volumeName: 'registryvolume' },
35
- { disk: { dev: 'vdb' },
36
- name: 'cloudinitdisk',
37
- volumeName: 'cloudinitvolume' }] },
38
- machine: { type: 'q35' },
39
- resources: { requests: { memory: '512Mi' } } },
40
- volumes: [{ name: 'registryvolume',
41
- registryDisk: { image: 'kubevirt/fedora-cloud-registry-disk-demo:latest' } },
42
- { cloudInitNoCloud: { userDataBase64: 'I2Nsb3VkLWNvbmZpZwpwYXNzd29yZDogYXRvbWljCnNzaF9wd2F1dGg6IFRydWUKY2hwYXNzd2Q6IHsgZXhwaXJlOiBGYWxzZSB9Cg==' },
43
- name: 'cloudinitvolume' }] }
44
- }
45
- } }]
46
- object = RecursiveOpenStruct.new(offlinevms, recurse_over_arrays: true)
47
- object.map { |kubevirt_obj| Offlinevm.parse object_to_hash(kubevirt_obj) }
48
- end
49
- end
50
- end
51
- end
52
- end
@@ -1,16 +0,0 @@
1
- module Fog
2
- module Compute
3
- class Kubevirt
4
- class Real
5
- def update_offline_vm(update)
6
- kubevirt_client.update_offline_virtual_machine(update)
7
- end
8
- end
9
-
10
- class Mock
11
- def update_offline_vm(update)
12
- end
13
- end
14
- end
15
- end
16
- end