fog-kubevirt 0.3.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -3
  3. data/lib/fog/bin/kubevirt.rb +2 -2
  4. data/lib/fog/kubevirt.rb +1 -4
  5. data/lib/fog/{compute/kubevirt.rb → kubevirt/compute/compute.rb} +35 -184
  6. data/lib/fog/{compute/kubevirt → kubevirt/compute}/models/node.rb +3 -3
  7. data/lib/fog/{compute/kubevirt → kubevirt/compute}/models/nodes.rb +4 -4
  8. data/lib/fog/{compute/kubevirt → kubevirt/compute}/models/template.rb +2 -2
  9. data/lib/fog/{compute/kubevirt → kubevirt/compute}/models/templates.rb +4 -4
  10. data/lib/fog/kubevirt/compute/models/vm.rb +71 -0
  11. data/lib/fog/{compute/kubevirt → kubevirt/compute}/models/vminstance.rb +4 -13
  12. data/lib/fog/{compute/kubevirt → kubevirt/compute}/models/vminstances.rb +4 -4
  13. data/lib/fog/kubevirt/compute/models/vms.rb +137 -0
  14. data/lib/fog/kubevirt/compute/models/volume.rb +9 -0
  15. data/lib/fog/kubevirt/compute/models/volumes.rb +12 -0
  16. data/lib/fog/{compute/kubevirt → kubevirt/compute}/requests/create_pvc.rb +2 -2
  17. data/lib/fog/{compute/kubevirt → kubevirt/compute}/requests/create_vm.rb +2 -3
  18. data/lib/fog/{compute/kubevirt → kubevirt/compute}/requests/create_vminstance.rb +2 -2
  19. data/lib/fog/{compute/kubevirt → kubevirt/compute}/requests/delete_vm.rb +3 -3
  20. data/lib/fog/{compute/kubevirt → kubevirt/compute}/requests/delete_vminstance.rb +5 -5
  21. data/lib/fog/{compute/kubevirt → kubevirt/compute}/requests/get_node.rb +2 -2
  22. data/lib/fog/{compute/kubevirt → kubevirt/compute}/requests/get_template.rb +2 -2
  23. data/lib/fog/{compute/kubevirt → kubevirt/compute}/requests/get_vm.rb +3 -3
  24. data/lib/fog/{compute/kubevirt → kubevirt/compute}/requests/get_vminstance.rb +6 -6
  25. data/lib/fog/{compute/kubevirt → kubevirt/compute}/requests/list_nodes.rb +2 -2
  26. data/lib/fog/{compute/kubevirt → kubevirt/compute}/requests/list_templates.rb +2 -2
  27. data/lib/fog/{compute/kubevirt → kubevirt/compute}/requests/list_vminstances.rb +2 -2
  28. data/lib/fog/{compute/kubevirt → kubevirt/compute}/requests/list_vms.rb +6 -6
  29. data/lib/fog/{compute/kubevirt → kubevirt/compute}/requests/update_vm.rb +2 -2
  30. data/lib/fog/kubevirt/version.rb +1 -1
  31. metadata +39 -133
  32. data/lib/fog/compute/kubevirt/models/networkattachmentdef.rb +0 -25
  33. data/lib/fog/compute/kubevirt/models/networkattachmentdefs.rb +0 -59
  34. data/lib/fog/compute/kubevirt/models/persistentvolume.rb +0 -82
  35. data/lib/fog/compute/kubevirt/models/persistentvolumes.rb +0 -73
  36. data/lib/fog/compute/kubevirt/models/pvc.rb +0 -59
  37. data/lib/fog/compute/kubevirt/models/pvcs.rb +0 -76
  38. data/lib/fog/compute/kubevirt/models/server.rb +0 -44
  39. data/lib/fog/compute/kubevirt/models/servers.rb +0 -32
  40. data/lib/fog/compute/kubevirt/models/service.rb +0 -36
  41. data/lib/fog/compute/kubevirt/models/services.rb +0 -83
  42. data/lib/fog/compute/kubevirt/models/storageclass.rb +0 -33
  43. data/lib/fog/compute/kubevirt/models/storageclasses.rb +0 -61
  44. data/lib/fog/compute/kubevirt/models/vm.rb +0 -17
  45. data/lib/fog/compute/kubevirt/models/vm_base.rb +0 -86
  46. data/lib/fog/compute/kubevirt/models/vm_data.rb +0 -162
  47. data/lib/fog/compute/kubevirt/models/vms.rb +0 -206
  48. data/lib/fog/compute/kubevirt/models/volume.rb +0 -57
  49. data/lib/fog/compute/kubevirt/models/volumes.rb +0 -18
  50. data/lib/fog/compute/kubevirt/requests/create_networkattachmentdef.rb +0 -37
  51. data/lib/fog/compute/kubevirt/requests/create_persistentvolume.rb +0 -19
  52. data/lib/fog/compute/kubevirt/requests/create_service.rb +0 -18
  53. data/lib/fog/compute/kubevirt/requests/create_storageclass.rb +0 -18
  54. data/lib/fog/compute/kubevirt/requests/delete_networkattachmentdef.rb +0 -16
  55. data/lib/fog/compute/kubevirt/requests/delete_persistentvolume.rb +0 -16
  56. data/lib/fog/compute/kubevirt/requests/delete_pvc.rb +0 -16
  57. data/lib/fog/compute/kubevirt/requests/delete_service.rb +0 -16
  58. data/lib/fog/compute/kubevirt/requests/delete_storageclass.rb +0 -16
  59. data/lib/fog/compute/kubevirt/requests/get_networkattachmentdef.rb +0 -19
  60. data/lib/fog/compute/kubevirt/requests/get_persistentvolume.rb +0 -16
  61. data/lib/fog/compute/kubevirt/requests/get_pvc.rb +0 -16
  62. data/lib/fog/compute/kubevirt/requests/get_server.rb +0 -32
  63. data/lib/fog/compute/kubevirt/requests/get_service.rb +0 -16
  64. data/lib/fog/compute/kubevirt/requests/get_storageclass.rb +0 -16
  65. data/lib/fog/compute/kubevirt/requests/list_networkattachmentdefs.rb +0 -21
  66. data/lib/fog/compute/kubevirt/requests/list_persistentvolumes.rb +0 -22
  67. data/lib/fog/compute/kubevirt/requests/list_pvcs.rb +0 -22
  68. data/lib/fog/compute/kubevirt/requests/list_servers.rb +0 -25
  69. data/lib/fog/compute/kubevirt/requests/list_services.rb +0 -22
  70. data/lib/fog/compute/kubevirt/requests/list_storageclasses.rb +0 -22
  71. data/lib/fog/compute/kubevirt/requests/list_volumes.rb +0 -30
  72. data/spec/compute_v1alpha2_spec.rb +0 -30
  73. data/spec/create_vm_spec.rb +0 -101
  74. data/spec/fixtures/kubevirt/networkattachmentdefinition/networkattachmentdefinitions_crud.yml +0 -320
  75. data/spec/fixtures/kubevirt/persistentvolume/persistent_volumes_crud.yml +0 -316
  76. data/spec/fixtures/kubevirt/pvc/pvcs_crud.yml +0 -362
  77. data/spec/fixtures/kubevirt/service/services_crud.yml +0 -316
  78. data/spec/fixtures/kubevirt/storageclass/storageclasses_crud.yml +0 -400
  79. data/spec/fixtures/kubevirt/vm/vm_create_multi.yml +0 -459
  80. data/spec/fixtures/kubevirt/vm/vm_create_single.yml +0 -362
  81. data/spec/network_attachment_definition_v1alpha2_spec.rb +0 -28
  82. data/spec/persistent_volumes_v1alpha2_spec.rb +0 -45
  83. data/spec/pvcs_v1alpha2_spec.rb +0 -59
  84. data/spec/shared_context.rb +0 -54
  85. data/spec/spec_helper.rb +0 -10
  86. data/spec/storage_classes_v1_spec.rb +0 -46
@@ -1,61 +0,0 @@
1
- require 'fog/core/collection'
2
- require 'fog/compute/kubevirt/models/storageclass'
3
-
4
- module Fog
5
- module Compute
6
- class Kubevirt
7
- class Storageclasses < Fog::Collection
8
- attr_reader :kind, :resource_version
9
-
10
- model Fog::Compute::Kubevirt::Storageclass
11
-
12
- def all(filters = {})
13
- storageclasses = service.list_storageclasses(filters)
14
- @kind = storageclasses.kind
15
- @resource_version = storageclasses.resource_version
16
- load storageclasses
17
- end
18
-
19
- def get(name)
20
- new service.get_storageclass(name)
21
- end
22
-
23
- # Creates a storage class using provided paramters:
24
- # https://kubernetes.io/docs/concepts/storage/storage-classes
25
- # :name [String] - name of a storage class
26
- # :parameters [Object] - parameters for the provisioner that should create volumes of this storage class
27
- # :mount_options [Arr] - mount options for the dynamically provisioned PersistentVolumes of this storage class.
28
- # :provisioner [String] - the type of the provisioner
29
- # :volume_binding_mode [String] - indicates how PersistentVolumeClaims should be provisioned and bound
30
- # :reclaim_policy [String] - the reclaim policy of the created PVs (Defaults to Delete).
31
- def create(args = {})
32
- storageclass = {
33
- :apiVersion => "storage.k8s.io/v1",
34
- :kind => "StorageClass",
35
- :metadata => {
36
- :name => args[:name],
37
- },
38
- :parameters => args[:parameters],
39
- :mount_options => args[:mount_options],
40
- :provisioner => args[:provisioner],
41
- :volume_binding_mode => args[:volume_binding_mode],
42
- :reclaim_policy => args[:reclaim_policy]
43
- }
44
-
45
- service.create_storageclass(storageclass)
46
- end
47
-
48
- def delete(name)
49
- begin
50
- storageclass = get(name)
51
- rescue ::Fog::Kubevirt::Errors::ClientError
52
- # the storageclass doesn't exist
53
- storageclass = nil
54
- end
55
-
56
- service.delete_storageclass(name) unless storageclass.nil?
57
- end
58
- end
59
- end
60
- end
61
- end
@@ -1,17 +0,0 @@
1
- require 'fog/compute/kubevirt/models/vm_base'
2
-
3
- module Fog
4
- module Compute
5
- class Kubevirt
6
- class Vm < Fog::Model
7
- include VmAction
8
- extend VmBase
9
- define_properties
10
-
11
- def self.parse(object)
12
- parse_object(object)
13
- end
14
- end
15
- end
16
- end
17
- end
@@ -1,86 +0,0 @@
1
- require 'fog/compute/kubevirt/models/vm_data'
2
-
3
- module Fog
4
- module Compute
5
- class Kubevirt
6
- module VmBase
7
- include VmData
8
-
9
- def define_properties
10
- identity :name
11
-
12
- attribute :namespace, :aliases => 'metadata_namespace'
13
- attribute :resource_version, :aliases => 'metadata_resource_version'
14
- attribute :uid, :aliases => 'metadata_uid'
15
- attribute :labels, :aliases => 'metadata_labels'
16
- attribute :owner_reference, :aliases => 'metadata_owner_reference'
17
- attribute :annotations, :aliases => 'metadata_annotations'
18
- attribute :cpu_cores, :aliases => 'spec_cpu_cores'
19
- attribute :memory, :aliases => 'spec_memory'
20
- attribute :disks, :aliases => 'spec_disks'
21
- attribute :volumes, :aliases => 'spec_volumes'
22
- attribute :status, :aliases => 'spec_running'
23
- attribute :interfaces, :aliases => 'spec_interfaces'
24
- attribute :networks, :aliases => 'spec_networks'
25
- attribute :machine_type, :aliases => 'spec_machine_type'
26
- end
27
-
28
- def parse_object(object)
29
- metadata = object[:metadata]
30
- spec = object[:spec][:template][:spec]
31
- domain = spec[:domain]
32
- owner = metadata[:ownerReferences]
33
- annotations = metadata[:annotations]
34
- cpu = domain[:cpu]
35
- mem = domain.dig(:resources, :requests, :memory)
36
- disks = parse_disks(domain[:devices][:disks])
37
- vm = {
38
- :namespace => metadata[:namespace],
39
- :name => metadata[:name],
40
- :resource_version => metadata[:resourceVersion],
41
- :uid => metadata[:uid],
42
- :labels => metadata[:labels],
43
- :disks => disks,
44
- :volumes => parse_volumes(spec[:volumes], disks),
45
- :interfaces => parse_interfaces(domain[:devices][:interfaces]),
46
- :networks => parse_networks(spec[:networks]),
47
- :status => object[:spec][:running].to_s == "true" ? "running" : "stopped",
48
- :machine_type => domain.dig(:machine, :type)
49
- }
50
- vm[:owner_reference] = owner unless owner.nil?
51
- vm[:annotations] = annotations unless annotations.nil?
52
- vm[:cpu_cores] = cpu[:cores] unless cpu.nil?
53
- vm[:memory] = mem unless mem.nil?
54
-
55
- vm
56
- end
57
- end
58
-
59
- module VmAction
60
- include Shared
61
-
62
- def start(options = {})
63
- # Change the `running` attribute to `true` so that the virtual machine controller will take it and
64
- # create the virtual machine instance.
65
- vm = service.get_raw_vm(name)
66
- vm = deep_merge!(vm,
67
- :spec => {
68
- :running => true
69
- }
70
- )
71
- service.update_vm(vm)
72
- end
73
-
74
- def stop(options = {})
75
- vm = service.get_raw_vm(name)
76
- vm = deep_merge!(vm,
77
- :spec => {
78
- :running => false
79
- }
80
- )
81
- service.update_vm(vm)
82
- end
83
- end
84
- end
85
- end
86
- end
@@ -1,162 +0,0 @@
1
- require 'fog/compute/kubevirt/models/volume'
2
-
3
- module Fog
4
- module Compute
5
- class Kubevirt
6
- module VmData
7
-
8
- #
9
- # Returns an array of parsed network interfaces
10
- #
11
- # @param object [Hash] A hash with raw interfaces data.
12
- #
13
- def parse_interfaces(object)
14
- return {} if object.nil?
15
- nics = []
16
- object.each do |iface|
17
- nic = VmNic.new
18
- nic.name = iface[:name]
19
- nic.mac_address = iface[:macAddress]
20
- nic.type = 'bridge' if iface.keys.include?(:bridge)
21
- nic.type = 'slirp' if iface.keys.include?(:slirp)
22
- nics << nic
23
- end
24
-
25
- nics
26
- end
27
-
28
- #
29
- # Returns an array of parsed networks
30
- #
31
- # @param object [Hash] A hash with raw networks data.
32
- #
33
- def parse_networks(object)
34
- return {} if object.nil?
35
- networks = []
36
- object.each do |net|
37
- network = VmNetwork.new
38
- network.name = net[:name]
39
- network.type = 'pod' if net.keys.include?(:pod)
40
- network.type = 'multus' if net.keys.include?(:multus)
41
- network.type = 'genie' if net.keys.include?(:genie)
42
- networks << network
43
- end
44
-
45
- networks
46
- end
47
-
48
- #
49
- # Returns an array of parsed disks
50
- #
51
- # @param object [Hash] A hash with raw disks data.
52
- #
53
- def parse_disks(object)
54
- return {} if object.nil?
55
- disks = []
56
- object.each do |d|
57
- disk = VmDisk.new
58
- disk.name = d[:name]
59
- disk.boot_order = d[:bootOrder]
60
-
61
- if d.keys.include?(:cdrom)
62
- disk.type = 'cdrom'
63
- disk.bus = d.dig(:cdrom, :bus)
64
- disk.readonly = d.dig(:cdrom, :readonly)
65
- elsif d.keys.include?(:disk)
66
- disk.type = 'disk'
67
- disk.bus = d.dig(:disk, :bus)
68
- disk.readonly = d.dig(:disk, :readonly)
69
- elsif d.keys.include?(:floppy)
70
- disk.type = 'floppy'
71
- disk.readonly = d.dig(:floppy, :readonly)
72
- elsif d.keys.include?(:lun)
73
- disk.type = 'lun'
74
- disk.readonly = d.dig(:lun, :readonly)
75
- end
76
- disks << disk
77
- end
78
-
79
- disks
80
- end
81
-
82
- #
83
- # Returns an array of parsed volumes
84
- #
85
- # @param object [Hash] A hash with raw volumes data.
86
- # @param disks [Array] the disks of the vm associated to the volumes
87
- #
88
- def parse_volumes(object, disks)
89
- return {} if object.nil?
90
- volumes = []
91
- object.each do |v|
92
- volume = Volume.new
93
- volume.name = v[:name]
94
- if v.keys.include?(:containerDisk)
95
- volume.type = 'containerDisk'
96
- volume.info = v.dig(:containerDisk, :image)
97
- elsif v.keys.include?(:persistentVolumeClaim)
98
- volume.type = 'persistentVolumeClaim'
99
- volume.info = v.dig(:persistentVolumeClaim, :claimName)
100
- elsif v.keys.include?(:emptyDisk)
101
- volume.type = 'emptyDisk'
102
- volume.info = v.dig(:emptyDisk, :capacity)
103
- elsif v.keys.include?(:ephemeral)
104
- volume.type = 'ephemeral'
105
- volume.info = v.dig(:ephemeral, :persistentVolumeClaim, :claimName)
106
- elsif v.keys.include?(:cloudInitNoCloud)
107
- volume.type = 'cloudInitNoCloud'
108
- volume.info = v.dig(:cloudInitNoCloud, :userDataBase64)
109
- elsif v.keys.include?(:hostDisk)
110
- volume.type = 'hostDisk'
111
- volume.info = v.dig(:hostDisk, :path)
112
- elsif v.keys.include?(:secret)
113
- volume.type = 'secret'
114
- volume.info = v.dig(:secret, :secretName)
115
- elsif v.keys.include?(:dataVolume)
116
- volume.type = 'dataVolume'
117
- volume.info = v.dig(:dataVolume, :name)
118
- elsif v.keys.include?(:serviceAccount)
119
- volume.type = 'serviceAccount'
120
- volume.info = v.dig(:serviceAccount, :serviceAccountName)
121
- elsif v.keys.include?(:configMap)
122
- volume.type = 'configMap'
123
- volume.info = v.dig(:configMap, :name)
124
- end
125
-
126
- volume.config = v[volume.type.to_sym]
127
- disk = disks.select { |d| d.name == volume.name }.first
128
- volume.boot_order = disk.boot_order
129
- volume.bus = disk.bus if disk.respond_to?(:bus)
130
-
131
- volumes << volume
132
- end
133
-
134
- volumes
135
- end
136
-
137
- class VmNic
138
- attr_accessor :name,
139
- :mac_address,
140
- :type, # values: bridge, slirp
141
- :model,
142
- :ports,
143
- :boot_order
144
- alias :mac :mac_address
145
- end
146
-
147
- class VmNetwork
148
- attr_accessor :name,
149
- :type # values: multus, pod, genie
150
- end
151
-
152
- class VmDisk
153
- attr_accessor :name,
154
- :boot_order,
155
- :type, # values: cdrom, disk, floppy, lun
156
- :bus,
157
- :readonly
158
- end
159
- end
160
- end
161
- end
162
- end
@@ -1,206 +0,0 @@
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
- include Shared
9
-
10
- attr_reader :kind, :resource_version
11
-
12
- model Fog::Compute::Kubevirt::Vm
13
-
14
- def all(filters = {})
15
- begin
16
- vms = service.list_vms(filters)
17
- rescue ::Fog::Kubevirt::Errors::ClientError
18
- # we assume that we get 404
19
- vms = []
20
- end
21
- @kind = vms.kind
22
- @resource_version = vms.resource_version
23
- load vms
24
- end
25
-
26
- def get(name)
27
- new service.get_vm(name)
28
- end
29
-
30
- def delete(name)
31
- service.delete_vm(name, service.namespace)
32
- end
33
-
34
- # Creates a virtual machine using provided paramters:
35
- # :vm_name [String] - name of a vm
36
- # :cpus [String] - number of cpus
37
- # :memory_size [String] - amount of memory
38
- # :image [String] - name of a container disk
39
- # :pvc [String] - name of a persistent volume claim
40
- # :cloudinit [Hash] - number of items needed to configure cloud-init
41
- # :networks[Array] - networks to which the vm should be connected, i.e:
42
- # [ { :name => 'default', :pod => {} } ,
43
- # { :name => 'ovs-red', :multus => { :networkName => 'red'} }
44
- # ]
45
- #
46
- # :interfaces[Array] - network interfaces for the vm, correlated to
47
- # :networks section by network's name, i.e.:
48
- # [ { :name => 'default', :bridge => {} },
49
- # { :name => 'red', # correlated to networks[networkName]
50
- # :bridge => {},
51
- # :bootOrder => 1, # 1 to boot from network interface
52
- # :macAddress => '12:34:56:AB:CD:EF' }
53
- # ]
54
- #
55
- # @param [String] :image name of container disk.
56
- #
57
- # @param [Array] :volumes the volumes (Fog::Compute::Kubevirt::Volume) to be used by the VM
58
- #
59
- # @param [Hash] attributes containing details about vm about to be
60
- # created.
61
- def create(args = {})
62
- vm_name = args.fetch(:vm_name)
63
- cpus = args.fetch(:cpus, nil)
64
- memory_size = args.fetch(:memory_size)
65
- init = args.fetch(:cloudinit, {})
66
- networks = args.fetch(:networks, nil)
67
- interfaces = args.fetch(:interfaces, nil)
68
- vm_volumes = args.fetch(:volumes, nil)
69
-
70
- if vm_volumes.nil? || vm_volumes.empty?
71
- raise ::Fog::Kubevirt::Errors::ValidationError
72
- end
73
-
74
- volumes, disks = add_vm_storage(vm_name, vm_volumes)
75
-
76
- unless init.empty?
77
- volumes.push(:cloudInitNoCloud => init, :name => "cloudinitvolume")
78
- end
79
-
80
- vm = {
81
- :kind => "VirtualMachine",
82
- :metadata => {
83
- :labels => {
84
- :"kubevirt.io/vm" => vm_name,
85
- },
86
- :name => vm_name,
87
- :namespace => service.namespace,
88
- },
89
- :spec => {
90
- :running => false,
91
- :template => {
92
- :metadata => {
93
- :creationTimestamp => nil,
94
- :labels => {
95
- :"kubevirt.io/vm" => vm_name
96
- }
97
- },
98
- :spec => {
99
- :domain => {
100
- :devices => {
101
- :disks => disks
102
- },
103
- :machine => {
104
- :type => ""
105
- },
106
- :resources => {
107
- :requests => {
108
- :memory => "#{memory_size}M"
109
- }
110
- }
111
- },
112
- :terminationGracePeriodSeconds => 0,
113
- :volumes => volumes
114
- }
115
- }
116
- }
117
- }
118
-
119
- vm = deep_merge!(vm,
120
- :spec => {
121
- :template => {
122
- :spec => {
123
- :domain => {
124
- :cpu => {
125
- :cores => cpus
126
- }
127
- }
128
- }
129
- }
130
- }
131
- ) unless cpus.nil?
132
-
133
- vm[:spec][:template][:spec][:domain][:devices][:disks].push(
134
- :disk => {
135
- :bus => "virtio"
136
- },
137
- :name => "cloudinitvolume",
138
- ) unless init.empty?
139
-
140
- vm = deep_merge!(vm,
141
- :spec => {
142
- :template => {
143
- :spec => {
144
- :networks => networks
145
- }
146
- }
147
- }
148
- ) unless networks.nil?
149
-
150
- vm = deep_merge!(vm,
151
- :spec => {
152
- :template => {
153
- :spec => {
154
- :domain => {
155
- :devices => {
156
- :interfaces => interfaces
157
- }
158
- }
159
- }
160
- }
161
- }
162
- ) unless interfaces.nil?
163
- service.create_vm(vm)
164
- end
165
-
166
- def add_vm_storage(vm_name, vm_volumes)
167
- normalized_vm_name = vm_name.gsub(/[._]+/,'-')
168
- volumes, disks = [], []
169
- vm_volumes.each_with_index do |v, idx|
170
- volume_name = v.name || normalized_vm_name + "-disk-0" + idx.to_s
171
- disk = {
172
- :name => volume_name,
173
- :disk => {}
174
- }
175
- disk[:bootOrder] = v.boot_order if v.boot_order
176
-
177
- if v.type == 'containerDisk'
178
- # set image
179
- if v.config.nil?
180
- volumes.push(:name => volume_name, :containerDisk => {:image => v.info})
181
- else
182
- volumes.push(:name => volume_name, v.type.to_sym => v.config)
183
- end
184
- disk[:disk][:bus] = v.bus || "virtio"
185
- elsif v.type == 'persistentVolumeClaim'
186
- # set claim
187
- if v.config.nil?
188
- volumes.push(:name => volume_name, :persistentVolumeClaim => {:claimName => v.info})
189
- else
190
- volumes.push(:name => volume_name, v.type.to_sym => v.config)
191
- end
192
- disk[:disk][:bus] = v.bus || "virtio"
193
- else
194
- # convert type into symbol and pass :config as volume content
195
- volumes.push(:name => volume_name, v.type.to_sym => v.config)
196
- disk[:disk][:bus] = v.bus if v.bus
197
- end
198
- disks.push(disk)
199
- end
200
-
201
- return volumes, disks
202
- end
203
- end
204
- end
205
- end
206
- end