kitchen-oci 1.20.2 → 1.22.0
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/kitchen/driver/oci/blockstorage.rb +33 -3
- data/lib/kitchen/driver/oci/instance/compute.rb +1 -1
- data/lib/kitchen/driver/oci/models/iscsi.rb +4 -2
- data/lib/kitchen/driver/oci/models/paravirtual.rb +4 -2
- data/lib/kitchen/driver/oci.rb +17 -3
- data/lib/kitchen/driver/oci_version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f91045fdb0ff064f83385b240480320087e7b37d65998bfac58992f029979626
|
|
4
|
+
data.tar.gz: 05c3559342b40ddb201123ef8be3769b12adac2dbbcce79c957f0caa187a5d22
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 344ddb1169b34e6e40dad70d5d60fa5d848af6d20d7cf2175f011a97f2248b9e530664a09103b16bcc4249088fb8464fd4e280e4f1368f91de15aeb66a4e8ae1
|
|
7
|
+
data.tar.gz: 63d6b2ec541e4253e8ac5b46b293196e3ef981898147129b5f8439e4449046af947861e2d4526f6b796a50c4b10a6398658c8babbe1db95b03d9169ed43dc7c4
|
|
@@ -20,7 +20,7 @@ module Kitchen
|
|
|
20
20
|
module Driver
|
|
21
21
|
class Oci
|
|
22
22
|
# generic class for blockstorage
|
|
23
|
-
class Blockstorage < Oci
|
|
23
|
+
class Blockstorage < Oci # rubocop:disable Metrics/ClassLength
|
|
24
24
|
require_relative "api"
|
|
25
25
|
require_relative "config"
|
|
26
26
|
require_relative "models/iscsi"
|
|
@@ -85,9 +85,18 @@ module Kitchen
|
|
|
85
85
|
[response, final_state(response)]
|
|
86
86
|
end
|
|
87
87
|
|
|
88
|
-
def
|
|
88
|
+
def create_clone_volume(volume)
|
|
89
|
+
clone_volume_name = clone_volume_display_name(volume[:volume_id])
|
|
90
|
+
info("Creating <#{clone_volume_name}>...")
|
|
91
|
+
result = api.blockstorage.create_volume(volume_clone_details(volume, clone_volume_name))
|
|
92
|
+
response = volume_response(result.data.id)
|
|
93
|
+
info("Finished creating <#{clone_volume_name}>.")
|
|
94
|
+
[response, final_state(response)]
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def attach_volume(volume_details, server_id, volume_config)
|
|
89
98
|
info("Attaching <#{volume_details.display_name}>...")
|
|
90
|
-
attach_volume = api.compute.attach_volume(attachment_details(volume_details, server_id))
|
|
99
|
+
attach_volume = api.compute.attach_volume(attachment_details(volume_details, server_id, volume_config))
|
|
91
100
|
response = attachment_response(attach_volume.data.id)
|
|
92
101
|
info("Finished attaching <#{volume_details.display_name}>.")
|
|
93
102
|
final_state(response)
|
|
@@ -141,15 +150,36 @@ module Kitchen
|
|
|
141
150
|
)
|
|
142
151
|
end
|
|
143
152
|
|
|
153
|
+
def volume_clone_details(volume, clone_volume_name)
|
|
154
|
+
OCI::Core::Models::CreateVolumeDetails.new(
|
|
155
|
+
compartment_id: oci.compartment,
|
|
156
|
+
availability_domain: config[:availability_domain],
|
|
157
|
+
display_name: clone_volume_name,
|
|
158
|
+
defined_tags: config[:defined_tags],
|
|
159
|
+
size_in_gbs: volume[:size_in_gbs],
|
|
160
|
+
vpus_per_gb: volume[:vpus_per_gb],
|
|
161
|
+
source_details: OCI::Core::Models::VolumeSourceFromVolumeDetails.new(id: volume[:volume_id])
|
|
162
|
+
)
|
|
163
|
+
end
|
|
164
|
+
|
|
144
165
|
def attachment_name(attachment)
|
|
145
166
|
attachment[:display_name].gsub(/(?:paravirtual|iscsi)-/, "")
|
|
146
167
|
end
|
|
147
168
|
|
|
169
|
+
def server_os(server_id)
|
|
170
|
+
image_id = api.compute.get_instance(server_id).data.image_id
|
|
171
|
+
api.compute.get_image(image_id).data.operating_system
|
|
172
|
+
end
|
|
173
|
+
|
|
148
174
|
def final_volume_state(response)
|
|
149
175
|
volume_state.store(:id, response.id)
|
|
150
176
|
volume_state.store(:display_name, response.display_name)
|
|
151
177
|
volume_state
|
|
152
178
|
end
|
|
179
|
+
|
|
180
|
+
def clone_volume_display_name(volume_id)
|
|
181
|
+
"#{api.blockstorage.get_volume(volume_id).data.to_hash[:displayName]} (Clone)"
|
|
182
|
+
end
|
|
153
183
|
end
|
|
154
184
|
end
|
|
155
185
|
end
|
|
@@ -23,7 +23,7 @@ module Kitchen
|
|
|
23
23
|
# setter methods that populate the details of OCI::Core::Models::LaunchInstanceDetails
|
|
24
24
|
module ComputeLaunchDetails
|
|
25
25
|
def hostname_display_name
|
|
26
|
-
display_name = hostname
|
|
26
|
+
display_name = config[:display_name] || hostname
|
|
27
27
|
launch_details.display_name = display_name
|
|
28
28
|
launch_details.create_vnic_details = create_vnic_details(display_name)
|
|
29
29
|
end
|
|
@@ -35,11 +35,13 @@ module Kitchen
|
|
|
35
35
|
#
|
|
36
36
|
attr_reader :attachment_type
|
|
37
37
|
|
|
38
|
-
def attachment_details(volume_details, server_id)
|
|
38
|
+
def attachment_details(volume_details, server_id, volume_config)
|
|
39
|
+
device = volume_config[:device] unless server_os(server_id).downcase =~ /windows/
|
|
39
40
|
OCI::Core::Models::AttachIScsiVolumeDetails.new(
|
|
40
41
|
display_name: "#{attachment_type}-#{volume_details.display_name}",
|
|
41
42
|
volume_id: volume_details.id,
|
|
42
|
-
instance_id: server_id
|
|
43
|
+
instance_id: server_id,
|
|
44
|
+
device: device
|
|
43
45
|
)
|
|
44
46
|
end
|
|
45
47
|
|
|
@@ -35,11 +35,13 @@ module Kitchen
|
|
|
35
35
|
#
|
|
36
36
|
attr_reader :attachment_type
|
|
37
37
|
|
|
38
|
-
def attachment_details(volume_details, server_id)
|
|
38
|
+
def attachment_details(volume_details, server_id, volume_config)
|
|
39
|
+
device = volume_config[:device] unless server_os(server_id).downcase =~ /windows/
|
|
39
40
|
OCI::Core::Models::AttachParavirtualizedVolumeDetails.new(
|
|
40
41
|
display_name: "#{attachment_type}-#{volume_details.display_name}",
|
|
41
42
|
volume_id: volume_details.id,
|
|
42
|
-
instance_id: server_id
|
|
43
|
+
instance_id: server_id,
|
|
44
|
+
device: device
|
|
43
45
|
)
|
|
44
46
|
end
|
|
45
47
|
|
data/lib/kitchen/driver/oci.rb
CHANGED
|
@@ -60,6 +60,7 @@ module Kitchen
|
|
|
60
60
|
default_config :instance_name do |inst|
|
|
61
61
|
inst.instance.name
|
|
62
62
|
end
|
|
63
|
+
default_config :display_name, nil
|
|
63
64
|
default_keypath = File.expand_path(File.join(%w{~ .ssh id_rsa.pub}))
|
|
64
65
|
default_config :ssh_keypath, default_keypath
|
|
65
66
|
default_config :post_create_script, nil
|
|
@@ -152,15 +153,28 @@ module Kitchen
|
|
|
152
153
|
def create_and_attach_volumes(config, state, oci, api)
|
|
153
154
|
return if config[:volumes].empty?
|
|
154
155
|
|
|
156
|
+
volume_state = process_volumes(config, state, oci, api)
|
|
157
|
+
state.merge!(volume_state)
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
def process_volumes(config, state, oci, api)
|
|
155
161
|
volume_state = { volumes: [], volume_attachments: [] }
|
|
156
162
|
config[:volumes].each do |volume|
|
|
157
163
|
vol = volume_class(volume[:type], config, state, oci, api)
|
|
158
|
-
volume_details, vol_state =
|
|
159
|
-
attach_state = vol.attach_volume(volume_details, state[:server_id])
|
|
164
|
+
volume_details, vol_state = create_volume(vol, volume)
|
|
165
|
+
attach_state = vol.attach_volume(volume_details, state[:server_id], volume)
|
|
160
166
|
volume_state[:volumes] << vol_state
|
|
161
167
|
volume_state[:volume_attachments] << attach_state
|
|
162
168
|
end
|
|
163
|
-
|
|
169
|
+
volume_state
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
def create_volume(vol, volume)
|
|
173
|
+
if volume.key?(:volume_id)
|
|
174
|
+
vol.create_clone_volume(volume)
|
|
175
|
+
else
|
|
176
|
+
vol.create_volume(volume)
|
|
177
|
+
end
|
|
164
178
|
end
|
|
165
179
|
|
|
166
180
|
def process_post_script(state)
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: kitchen-oci
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.22.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Stephen Pearson
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2024-
|
|
12
|
+
date: 2024-08-27 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: oci
|
|
@@ -135,7 +135,7 @@ files:
|
|
|
135
135
|
- lib/kitchen/driver/oci/models/paravirtual.rb
|
|
136
136
|
- lib/kitchen/driver/oci_version.rb
|
|
137
137
|
- tpl/setup_winrm.ps1.erb
|
|
138
|
-
homepage:
|
|
138
|
+
homepage: https://github.com/stephenpearson/kitchen-oci
|
|
139
139
|
licenses:
|
|
140
140
|
- Apache-2.0
|
|
141
141
|
metadata: {}
|