fog-kubevirt 1.0.1 → 1.0.2
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/lib/fog/kubevirt/compute/compute.rb +125 -37
- data/lib/fog/kubevirt/compute/models/networkattachmentdef.rb +25 -0
- data/lib/fog/kubevirt/compute/models/networkattachmentdefs.rb +59 -0
- data/lib/fog/kubevirt/compute/models/pvc.rb +59 -0
- data/lib/fog/kubevirt/compute/models/pvcs.rb +76 -0
- data/lib/fog/kubevirt/compute/models/server.rb +42 -0
- data/lib/fog/kubevirt/compute/models/servers.rb +32 -0
- data/lib/fog/kubevirt/compute/models/service.rb +36 -0
- data/lib/fog/kubevirt/compute/models/services.rb +83 -0
- data/lib/fog/kubevirt/compute/models/vm.rb +6 -60
- data/lib/fog/kubevirt/compute/models/vm_base.rb +75 -0
- data/lib/fog/kubevirt/compute/models/vm_data.rb +164 -0
- data/lib/fog/kubevirt/compute/models/vms.rb +59 -19
- data/lib/fog/kubevirt/compute/models/volume.rb +73 -0
- data/lib/fog/kubevirt/compute/models/volumes.rb +61 -0
- data/lib/fog/kubevirt/compute/requests/create_networkattachmentdef.rb +37 -0
- data/lib/fog/kubevirt/compute/requests/create_service.rb +18 -0
- data/lib/fog/kubevirt/compute/requests/create_vm.rb +2 -0
- data/lib/fog/kubevirt/compute/requests/create_volume.rb +19 -0
- data/lib/fog/kubevirt/compute/requests/delete_networkattachmentdef.rb +16 -0
- data/lib/fog/kubevirt/compute/requests/delete_pvc.rb +16 -0
- data/lib/fog/kubevirt/compute/requests/delete_service.rb +16 -0
- data/lib/fog/kubevirt/compute/requests/delete_volume.rb +16 -0
- data/lib/fog/kubevirt/compute/requests/get_networkattachmentdef.rb +19 -0
- data/lib/fog/kubevirt/compute/requests/get_pvc.rb +16 -0
- data/lib/fog/kubevirt/compute/requests/get_server.rb +32 -0
- data/lib/fog/kubevirt/compute/requests/get_service.rb +16 -0
- data/lib/fog/kubevirt/compute/requests/get_vm.rb +1 -1
- data/lib/fog/kubevirt/compute/requests/get_vminstance.rb +4 -4
- data/lib/fog/kubevirt/compute/requests/get_volume.rb +16 -0
- data/lib/fog/kubevirt/compute/requests/list_networkattachmentdefs.rb +21 -0
- data/lib/fog/kubevirt/compute/requests/list_pvcs.rb +22 -0
- data/lib/fog/kubevirt/compute/requests/list_servers.rb +25 -0
- data/lib/fog/kubevirt/compute/requests/list_services.rb +22 -0
- data/lib/fog/kubevirt/compute/requests/list_vms.rb +4 -4
- data/lib/fog/kubevirt/compute/requests/list_volumes.rb +22 -0
- data/lib/fog/kubevirt/version.rb +1 -1
- data/spec/compute_v1alpha2_spec.rb +30 -0
- data/spec/fixtures/kubevirt/networkattachmentdefinition/networkattachmentdefinitions_crud.yml +320 -0
- data/spec/fixtures/kubevirt/pvc/pvcs_crud.yml +316 -0
- data/spec/fixtures/kubevirt/service/services_crud.yml +316 -0
- data/spec/fixtures/kubevirt/volume/volumes_crud.yml +316 -0
- data/spec/network_attachment_definition_v1alpha2_spec.rb +28 -0
- data/spec/pvcs_v1alpha2_spec.rb +52 -0
- data/spec/shared_context.rb +53 -0
- data/spec/spec_helper.rb +10 -0
- data/spec/volumes_v1alpha2_spec.rb +45 -0
- metadata +87 -10
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'fog/compute/models/server'
|
2
|
+
require 'fog/kubevirt/compute/models/vm_base'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module Kubevirt
|
6
|
+
class Compute
|
7
|
+
class Server < Fog::Compute::Server
|
8
|
+
include Shared
|
9
|
+
include VmAction
|
10
|
+
extend VmBase
|
11
|
+
define_properties
|
12
|
+
|
13
|
+
attribute :state, :aliases => 'phase'
|
14
|
+
attribute :ip_address
|
15
|
+
attribute :node_name
|
16
|
+
|
17
|
+
def destroy(options = {})
|
18
|
+
stop(options)
|
19
|
+
service.delete_vm(name, namespace)
|
20
|
+
end
|
21
|
+
|
22
|
+
def ready?
|
23
|
+
running?(status) && running?(state) && !ip_address.empty?
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.parse(object)
|
27
|
+
server = parse_object(object)
|
28
|
+
server[:state] = object[:phase]
|
29
|
+
server[:node_name] = object[:node_name]
|
30
|
+
server[:ip_address] = object[:ip_address]
|
31
|
+
server
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def running?(status)
|
37
|
+
!status.nil? && 'running'.casecmp(status).zero?
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'fog/core/collection'
|
2
|
+
require 'fog/kubevirt/compute/models/server'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module Kubevirt
|
6
|
+
class Compute
|
7
|
+
class Servers < Fog::Collection
|
8
|
+
attr_reader :kind, :resource_version
|
9
|
+
|
10
|
+
model Fog::Kubevirt::Compute::Server
|
11
|
+
|
12
|
+
def all(filters = {})
|
13
|
+
servers = service.list_servers(filters)
|
14
|
+
@kind = servers.kind
|
15
|
+
@resource_version = servers.resource_version
|
16
|
+
load servers
|
17
|
+
end
|
18
|
+
|
19
|
+
def get(id)
|
20
|
+
new service.get_server(id)
|
21
|
+
end
|
22
|
+
|
23
|
+
def bootstrap(new_attributes = {})
|
24
|
+
server = create(new_attributes)
|
25
|
+
server.wait_for { stopped? }
|
26
|
+
server.start
|
27
|
+
server
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Fog
|
2
|
+
module Kubevirt
|
3
|
+
class Compute
|
4
|
+
class Service < Fog::Model
|
5
|
+
identity :name
|
6
|
+
|
7
|
+
attribute :namespace, :aliases => 'metadata_namespace'
|
8
|
+
attribute :resource_version, :aliases => 'metadata_resource_version'
|
9
|
+
attribute :cluster_ip, :aliases => 'spec_cluster_ip'
|
10
|
+
attribute :node_port, :aliases => 'spec_ports_node_port'
|
11
|
+
attribute :port, :aliases => 'spec_ports_port'
|
12
|
+
attribute :target_port, :aliases => 'spec_ports_target_port'
|
13
|
+
attribute :selector, :aliases => 'spec_selector'
|
14
|
+
|
15
|
+
def self.parse(object)
|
16
|
+
metadata = object[:metadata]
|
17
|
+
spec = object[:spec]
|
18
|
+
ports = spec[:ports][0]
|
19
|
+
selector = spec[:selector]
|
20
|
+
srv = {
|
21
|
+
:namespace => metadata[:namespace],
|
22
|
+
:name => metadata[:name],
|
23
|
+
:resource_version => metadata[:resourceVersion],
|
24
|
+
:cluster_ip => spec[:clusterIP],
|
25
|
+
:node_port => ports[:nodePort],
|
26
|
+
:port => ports[:port],
|
27
|
+
:target_port => ports[:target_port],
|
28
|
+
}
|
29
|
+
srv[:selector] = selector[:special] unless selector.nil?
|
30
|
+
|
31
|
+
srv
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
require 'fog/core/collection'
|
2
|
+
require 'fog/kubevirt/compute/models/service'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module Kubevirt
|
6
|
+
class Compute
|
7
|
+
class Services < Fog::Collection
|
8
|
+
attr_reader :kind, :resource_version
|
9
|
+
|
10
|
+
model Fog::Kubevirt::Compute::Service
|
11
|
+
|
12
|
+
def all(filters = {})
|
13
|
+
begin
|
14
|
+
srvs = service.list_services(filters)
|
15
|
+
rescue ::Fog::Kubevirt::Errors::ClientError
|
16
|
+
# we assume that we get 404
|
17
|
+
srvs = []
|
18
|
+
end
|
19
|
+
@kind = srvs.kind
|
20
|
+
@resource_version = srvs.resource_version
|
21
|
+
load srvs
|
22
|
+
end
|
23
|
+
|
24
|
+
def get(name)
|
25
|
+
new service.get_service(name)
|
26
|
+
end
|
27
|
+
|
28
|
+
# Creates a service using provided paramters:
|
29
|
+
# :name [String] - name of a service
|
30
|
+
# :port [int] - a port which will be exposed on node and cluster
|
31
|
+
# :target_port [int] - a vmi port which will be forwarded
|
32
|
+
# :vmi_name [String] - name of a vmi to be selected
|
33
|
+
# :service_type [String] - service type used to create service
|
34
|
+
#
|
35
|
+
# @param [Hash] attributes containing details about service to be
|
36
|
+
# created.
|
37
|
+
def create(args = {})
|
38
|
+
port = args[:port]
|
39
|
+
name = args[:name]
|
40
|
+
target_port = args[:target_port]
|
41
|
+
vmi_name = args[:vmi_name]
|
42
|
+
service_type = args[:service_type]
|
43
|
+
|
44
|
+
srv = {
|
45
|
+
:apiVersion => "v1",
|
46
|
+
:kind => "Service",
|
47
|
+
:metadata => {
|
48
|
+
:name => name,
|
49
|
+
:namespace => service.namespace
|
50
|
+
},
|
51
|
+
:spec => {
|
52
|
+
:externalTrafficPolicy => "Cluster",
|
53
|
+
:ports => [
|
54
|
+
{:nodePort => port,
|
55
|
+
:port => port,
|
56
|
+
:protocol => "TCP",
|
57
|
+
:targetPort => target_port
|
58
|
+
}
|
59
|
+
],
|
60
|
+
:selector => {
|
61
|
+
:"kubevirt.io/vm" => vmi_name
|
62
|
+
},
|
63
|
+
:type => service_type
|
64
|
+
}
|
65
|
+
}
|
66
|
+
|
67
|
+
service.create_service(srv)
|
68
|
+
end
|
69
|
+
|
70
|
+
def delete(name)
|
71
|
+
begin
|
72
|
+
srv = get(name)
|
73
|
+
rescue ::Fog::Kubevirt::Errors::ClientError
|
74
|
+
# the service doesn't exist
|
75
|
+
srv = nil
|
76
|
+
end
|
77
|
+
|
78
|
+
service.delete_service(name, service.namespace) unless srv.nil?
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
@@ -1,69 +1,15 @@
|
|
1
|
+
require 'fog/kubevirt/compute/models/vm_base'
|
2
|
+
|
1
3
|
module Fog
|
2
4
|
module Kubevirt
|
3
5
|
class Compute
|
4
6
|
class Vm < Fog::Model
|
5
|
-
include
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
attribute :namespace, :aliases => 'metadata_namespace'
|
10
|
-
attribute :resource_version, :aliases => 'metadata_resource_version'
|
11
|
-
attribute :uid, :aliases => 'metadata_uid'
|
12
|
-
attribute :labels, :aliases => 'metadata_labels'
|
13
|
-
attribute :owner_reference, :aliases => 'metadata_owner_reference'
|
14
|
-
attribute :annotations, :aliases => 'metadata_annotations'
|
15
|
-
attribute :cpu_cores, :aliases => 'spec_cpu_cores'
|
16
|
-
attribute :memory, :aliases => 'spec_memory'
|
17
|
-
attribute :disks, :aliases => 'spec_disks'
|
18
|
-
attribute :volumes, :aliases => 'spec_volumes'
|
19
|
-
attribute :status, :aliases => 'spec_running'
|
20
|
-
|
21
|
-
|
22
|
-
def start(options = {})
|
23
|
-
# Change the `running` attribute to `true` so that the virtual machine controller will take it and
|
24
|
-
# create the virtual machine instance.
|
25
|
-
vm = service.get_raw_vm(name)
|
26
|
-
vm = deep_merge!(vm,
|
27
|
-
:spec => {
|
28
|
-
:running => true
|
29
|
-
}
|
30
|
-
)
|
31
|
-
service.update_vm(vm)
|
32
|
-
end
|
33
|
-
|
34
|
-
def stop(options = {})
|
35
|
-
vm = service.get_raw_vm(name)
|
36
|
-
vm = deep_merge!(vm,
|
37
|
-
:spec => {
|
38
|
-
:running => false
|
39
|
-
}
|
40
|
-
)
|
41
|
-
service.update_vm(vm)
|
42
|
-
end
|
7
|
+
include VmAction
|
8
|
+
extend VmBase
|
9
|
+
define_properties
|
43
10
|
|
44
11
|
def self.parse(object)
|
45
|
-
|
46
|
-
spec = object[:spec][:template][:spec]
|
47
|
-
domain = spec[:domain]
|
48
|
-
owner = metadata[:ownerReferences]
|
49
|
-
annotations = metadata[:annotations]
|
50
|
-
cpu = domain[:cpu]
|
51
|
-
vm = {
|
52
|
-
:namespace => metadata[:namespace],
|
53
|
-
:name => metadata[:name],
|
54
|
-
:resource_version => metadata[:resourceVersion],
|
55
|
-
:uid => metadata[:uid],
|
56
|
-
:labels => metadata[:labels],
|
57
|
-
:memory => domain[:resources][:requests][:memory],
|
58
|
-
:disks => domain[:devices][:disks],
|
59
|
-
:volumes => spec[:volumes],
|
60
|
-
:status => object[:spec][:running].to_s == "true" ? "running" : "stopped"
|
61
|
-
}
|
62
|
-
vm[:owner_reference] = owner unless owner.nil?
|
63
|
-
vm[:annotations] = annotations unless annotations.nil?
|
64
|
-
vm[:cpu_cores] = cpu[:cores] unless cpu.nil?
|
65
|
-
|
66
|
-
vm
|
12
|
+
parse_object(object)
|
67
13
|
end
|
68
14
|
end
|
69
15
|
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
module Fog
|
2
|
+
module Kubevirt
|
3
|
+
class Compute
|
4
|
+
module VmBase
|
5
|
+
def define_properties
|
6
|
+
identity :name
|
7
|
+
|
8
|
+
attribute :namespace, :aliases => 'metadata_namespace'
|
9
|
+
attribute :resource_version, :aliases => 'metadata_resource_version'
|
10
|
+
attribute :uid, :aliases => 'metadata_uid'
|
11
|
+
attribute :labels, :aliases => 'metadata_labels'
|
12
|
+
attribute :owner_reference, :aliases => 'metadata_owner_reference'
|
13
|
+
attribute :annotations, :aliases => 'metadata_annotations'
|
14
|
+
attribute :cpu_cores, :aliases => 'spec_cpu_cores'
|
15
|
+
attribute :memory, :aliases => 'spec_memory'
|
16
|
+
attribute :disks, :aliases => 'spec_disks'
|
17
|
+
attribute :volumes, :aliases => 'spec_volumes'
|
18
|
+
attribute :status, :aliases => 'spec_running'
|
19
|
+
end
|
20
|
+
|
21
|
+
def parse_object(object)
|
22
|
+
metadata = object[:metadata]
|
23
|
+
spec = object[:spec][:template][:spec]
|
24
|
+
domain = spec[:domain]
|
25
|
+
owner = metadata[:ownerReferences]
|
26
|
+
annotations = metadata[:annotations]
|
27
|
+
cpu = domain[:cpu]
|
28
|
+
mem = domain.dig(:resources, :requests, :memory)
|
29
|
+
vm = {
|
30
|
+
:namespace => metadata[:namespace],
|
31
|
+
:name => metadata[:name],
|
32
|
+
:resource_version => metadata[:resourceVersion],
|
33
|
+
:uid => metadata[:uid],
|
34
|
+
:labels => metadata[:labels],
|
35
|
+
:disks => domain[:devices][:disks],
|
36
|
+
:volumes => spec[:volumes],
|
37
|
+
:status => object[:spec][:running].to_s == "true" ? "running" : "stopped",
|
38
|
+
}
|
39
|
+
vm[:owner_reference] = owner unless owner.nil?
|
40
|
+
vm[:annotations] = annotations unless annotations.nil?
|
41
|
+
vm[:cpu_cores] = cpu[:cores] unless cpu.nil?
|
42
|
+
vm[:memory] = mem unless mem.nil?
|
43
|
+
|
44
|
+
vm
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
module VmAction
|
49
|
+
include Shared
|
50
|
+
|
51
|
+
def start(options = {})
|
52
|
+
# Change the `running` attribute to `true` so that the virtual machine controller will take it and
|
53
|
+
# create the virtual machine instance.
|
54
|
+
vm = service.get_raw_vm(name)
|
55
|
+
vm = deep_merge!(vm,
|
56
|
+
:spec => {
|
57
|
+
:running => true
|
58
|
+
}
|
59
|
+
)
|
60
|
+
service.update_vm(vm)
|
61
|
+
end
|
62
|
+
|
63
|
+
def stop(options = {})
|
64
|
+
vm = service.get_raw_vm(name)
|
65
|
+
vm = deep_merge!(vm,
|
66
|
+
:spec => {
|
67
|
+
:running => false
|
68
|
+
}
|
69
|
+
)
|
70
|
+
service.update_vm(vm)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,164 @@
|
|
1
|
+
module Fog
|
2
|
+
module Kubevirt
|
3
|
+
class Compute
|
4
|
+
module VmData
|
5
|
+
|
6
|
+
#
|
7
|
+
# Returns an array of parsed network interfaces
|
8
|
+
#
|
9
|
+
# @param object [Hash] A hash with raw interfaces data.
|
10
|
+
#
|
11
|
+
def parse_interfaces(object)
|
12
|
+
return {} if object.nil?
|
13
|
+
nics = []
|
14
|
+
object.each do |iface|
|
15
|
+
nic = VmNic.new
|
16
|
+
nic.name = iface[:name]
|
17
|
+
nic.mac_address = iface[:macAddress]
|
18
|
+
nic.type = 'bridge' if iface.keys.include?(:bridge)
|
19
|
+
nic.type = 'slirp' if iface.keys.include?(:slirp)
|
20
|
+
nics << nic
|
21
|
+
end
|
22
|
+
|
23
|
+
nics
|
24
|
+
end
|
25
|
+
|
26
|
+
#
|
27
|
+
# Returns an array of parsed networks
|
28
|
+
#
|
29
|
+
# @param object [Hash] A hash with raw networks data.
|
30
|
+
#
|
31
|
+
def parse_networks(object)
|
32
|
+
return {} if object.nil?
|
33
|
+
networks = []
|
34
|
+
object.each do |net|
|
35
|
+
network = VmNetwork.new
|
36
|
+
network.name = net[:name]
|
37
|
+
network.type = 'pod' if net.keys.include?(:pod)
|
38
|
+
network.type = 'multus' if net.keys.include?(:multus)
|
39
|
+
network.type = 'genie' if net.keys.include?(:genie)
|
40
|
+
networks << network
|
41
|
+
end
|
42
|
+
|
43
|
+
networks
|
44
|
+
end
|
45
|
+
|
46
|
+
#
|
47
|
+
# Returns an array of parsed disks
|
48
|
+
#
|
49
|
+
# @param object [Hash] A hash with raw disks data.
|
50
|
+
#
|
51
|
+
def parse_disks(object)
|
52
|
+
return {} if object.nil?
|
53
|
+
disks = []
|
54
|
+
object.each do |d|
|
55
|
+
disk = VmDisk.new
|
56
|
+
disk.name = d[:name]
|
57
|
+
disk.boot_order = d[:bootOrder]
|
58
|
+
disk.volume_name = d[:volumeName]
|
59
|
+
|
60
|
+
if d.keys.include?(:cdrom)
|
61
|
+
disk.type = 'cdrom'
|
62
|
+
disk.bus = d.dig(:cdrom, :bus)
|
63
|
+
disk.readonly = d.dig(:cdrom, :readonly)
|
64
|
+
elsif d.keys.include?(:disk)
|
65
|
+
disk.type = 'disk'
|
66
|
+
disk.bus = d.dig(:disk, :bus)
|
67
|
+
disk.readonly = d.dig(:disk, :readonly)
|
68
|
+
elsif d.keys.include?(:floppy)
|
69
|
+
disk.type = 'floppy'
|
70
|
+
disk.readonly = d.dig(:floppy, :readonly)
|
71
|
+
elsif d.keys.include?(:lun)
|
72
|
+
disk.type = 'lun'
|
73
|
+
disk.readonly = d.dig(:lun, :readonly)
|
74
|
+
end
|
75
|
+
disks << disk
|
76
|
+
end
|
77
|
+
|
78
|
+
disks
|
79
|
+
end
|
80
|
+
|
81
|
+
#
|
82
|
+
# Returns an array of parsed volumes
|
83
|
+
#
|
84
|
+
# @param object [Hash] A hash with raw volumes data.
|
85
|
+
#
|
86
|
+
def parse_volumes(object)
|
87
|
+
return {} if object.nil?
|
88
|
+
volumes = []
|
89
|
+
object.each do |v|
|
90
|
+
volume = VmVolume.new
|
91
|
+
volume.name = v[:name]
|
92
|
+
if v.keys.include?(:containerDisk)
|
93
|
+
volume.type = 'containerDisk'
|
94
|
+
volume.info = v.dig(:containerDisk, :image)
|
95
|
+
elsif v.keys.include?(:persistentVolumeClaim)
|
96
|
+
volume.type = 'persistentVolumeClaim'
|
97
|
+
volume.info = v.dig(:persistentVolumeClaim, :claimName)
|
98
|
+
elsif v.keys.include?(:emptyDisk)
|
99
|
+
volume.type = 'emptyDisk'
|
100
|
+
volume.info = v.dig(:emptyDisk, :capacity)
|
101
|
+
elsif v.keys.include?(:ephemeral)
|
102
|
+
volume.type = 'ephemeral'
|
103
|
+
volume.info = v.dig(:ephemeral, :persistentVolumeClaim, :claimName)
|
104
|
+
elsif v.keys.include?(:cloudInitNoCloud)
|
105
|
+
volume.type = 'cloudInitNoCloud'
|
106
|
+
volume.info = v.dig(:cloudInitNoCloud, :userDataBase64)
|
107
|
+
elsif v.keys.include?(:hostDisk)
|
108
|
+
volume.type = 'hostDisk'
|
109
|
+
volume.info = v.dig(:hostDisk, :path)
|
110
|
+
elsif v.keys.include?(:secret)
|
111
|
+
volume.type = 'secret'
|
112
|
+
volume.info = v.dig(:secret, :secretName)
|
113
|
+
elsif v.keys.include?(:dataVolume)
|
114
|
+
volume.type = 'dataVolume'
|
115
|
+
volume.info = v.dig(:dataVolume, :name)
|
116
|
+
elsif v.keys.include?(:serviceAccount)
|
117
|
+
volume.type = 'serviceAccount'
|
118
|
+
volume.info = v.dig(:serviceAccount, :serviceAccountName)
|
119
|
+
elsif v.keys.include?(:configMap)
|
120
|
+
volume.type = 'configMap'
|
121
|
+
volume.info = v.dig(:configMap, :name)
|
122
|
+
end
|
123
|
+
volumes << volume
|
124
|
+
end
|
125
|
+
|
126
|
+
volumes
|
127
|
+
end
|
128
|
+
|
129
|
+
class VmNic
|
130
|
+
attr_accessor :name,
|
131
|
+
:mac_address,
|
132
|
+
:type, # values: bridge, slirp
|
133
|
+
:model,
|
134
|
+
:ports,
|
135
|
+
:boot_order
|
136
|
+
alias :mac :mac_address
|
137
|
+
end
|
138
|
+
|
139
|
+
class VmNetwork
|
140
|
+
attr_accessor :name,
|
141
|
+
:type # values: multus, pod, genie
|
142
|
+
end
|
143
|
+
|
144
|
+
class VmDisk
|
145
|
+
attr_accessor :name,
|
146
|
+
:volume_name,
|
147
|
+
:boot_order,
|
148
|
+
:type, # values: cdrom, disk, floppy, lun
|
149
|
+
:bus,
|
150
|
+
:readonly
|
151
|
+
end
|
152
|
+
|
153
|
+
class VmVolume
|
154
|
+
attr_accessor :name,
|
155
|
+
# values: containerDisk, persistentVolumeClaim, emptyDisk,
|
156
|
+
# ephemeral, cloudInitNoCloud, hostDisk, secret,
|
157
|
+
# dataVolume, serviceAccount, configMap
|
158
|
+
:type,
|
159
|
+
:info # specific piece of information per volume type
|
160
|
+
end
|
161
|
+
end
|
162
|
+
end
|
163
|
+
end
|
164
|
+
end
|