vm_shepherd 3.7.0 → 3.7.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.
- checksums.yaml +5 -5
- data/.rubocop.yml +1 -1
- data/.ruby-version +1 -1
- data/lib/vm_shepherd/shepherd.rb +2 -0
- data/lib/vm_shepherd/version.rb +1 -1
- data/lib/vm_shepherd/vsphere_manager.rb +13 -3
- data/spec/vm_shepherd/shepherd_spec.rb +4 -0
- data/vm_shepherd.gemspec +1 -0
- metadata +20 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: f0c4eae538ba72ae93a1bc16e07b93153be92fb3730b0c1ee995c75aaa7bbec6
|
4
|
+
data.tar.gz: c46d2af2473fb238bfb1bec5e85f8ec13d19f9a0e32f5d7c88db23bd0ad3ac25
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c24318537ae944dc68ccd6c214baa05c1906ba78011ae2391a4a1e8b115c5fddc20813f1556a0634a95436dfcf6b73679570bccb35386ac77936e576cc76628e
|
7
|
+
data.tar.gz: 8db0afde7bfa78be5acaf6d0736cd0a4d0fb75cce46054777873125a5ead9f6c4a479834bbeb69ab765cba7ca4bc9189708ec9b4ae6119148e231189bc04dcbc
|
data/.rubocop.yml
CHANGED
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.6.3
|
data/lib/vm_shepherd/shepherd.rb
CHANGED
@@ -164,6 +164,8 @@ module VmShepherd
|
|
164
164
|
datacenter_folders_to_clean: vm_shepherd_config.dig('cleanup', 'datacenter_folders_to_clean'),
|
165
165
|
datastores: vm_shepherd_config.dig('cleanup', 'datastores'),
|
166
166
|
datastore_folders_to_clean: vm_shepherd_config.dig('cleanup', 'datastore_folders_to_clean'),
|
167
|
+
cluster_name: vm_shepherd_config.dig('vsphere', 'cluster'),
|
168
|
+
resource_pool_name: vm_shepherd_config.dig('vsphere', 'resource_pool'),
|
167
169
|
)
|
168
170
|
end
|
169
171
|
when VmShepherd::AWS_IAAS_TYPE then
|
data/lib/vm_shepherd/version.rb
CHANGED
@@ -27,12 +27,12 @@ module VmShepherd
|
|
27
27
|
FileUtils.remove_entry_secure(ovf_file_path, force: true) unless ovf_file_path.nil?
|
28
28
|
end
|
29
29
|
|
30
|
-
def clean_environment(datacenter_folders_to_clean:, datastores:, datastore_folders_to_clean:)
|
30
|
+
def clean_environment(datacenter_folders_to_clean:, datastores:, datastore_folders_to_clean:, cluster_name: nil, resource_pool_name: nil)
|
31
31
|
return if datacenter_folders_to_clean.nil? || datastores.nil? || datacenter_folders_to_clean.nil?
|
32
32
|
|
33
33
|
datacenter_folders_to_clean.each do |folder_name|
|
34
34
|
validate_folder_name!(folder_name)
|
35
|
-
delete_folder_and_vms(folder_name)
|
35
|
+
delete_folder_and_vms(folder_name, cluster_name, resource_pool_name)
|
36
36
|
end
|
37
37
|
|
38
38
|
datastore_folders_to_clean.each do |folder_name|
|
@@ -129,12 +129,13 @@ module VmShepherd
|
|
129
129
|
datacenter.vmFolder.traverse(folder_name, RbVmomi::VIM::Folder, true)
|
130
130
|
end
|
131
131
|
|
132
|
-
def delete_folder_and_vms(folder_name)
|
132
|
+
def delete_folder_and_vms(folder_name, cluster_name = nil, resource_pool_name = nil)
|
133
133
|
3.times do |attempt|
|
134
134
|
break unless (folder = datacenter.vmFolder.traverse(folder_name))
|
135
135
|
|
136
136
|
find_vms(folder).each do |vm|
|
137
137
|
power_off_vm(vm)
|
138
|
+
convert_template_to_vm(vm, cluster_name, resource_pool_name)
|
138
139
|
end
|
139
140
|
|
140
141
|
begin
|
@@ -160,6 +161,7 @@ module VmShepherd
|
|
160
161
|
|
161
162
|
def power_off_vm(vm)
|
162
163
|
2.times do
|
164
|
+
# This will implicitly skip over VM templates, which always are in the "poweredOff" state
|
163
165
|
break if vm.runtime.powerState == 'poweredOff'
|
164
166
|
|
165
167
|
begin
|
@@ -173,6 +175,14 @@ module VmShepherd
|
|
173
175
|
end
|
174
176
|
end
|
175
177
|
|
178
|
+
def convert_template_to_vm(vm, cluster_name, resource_pool_name)
|
179
|
+
return unless vm.config.template
|
180
|
+
|
181
|
+
cluster = datacenter.find_compute_resource(cluster_name)
|
182
|
+
pool = cluster.resourcePool.resourcePool.find { |rp| rp.name == resource_pool_name }
|
183
|
+
vm.MarkAsVirtualMachine(pool: pool)
|
184
|
+
end
|
185
|
+
|
176
186
|
def deploy_ovf_template(ovf_file_path, vsphere_config)
|
177
187
|
template_name = [TEMPLATE_PREFIX, Time.new.strftime('%F-%H-%M'), cluster(vsphere_config).name].join('-')
|
178
188
|
logger.info("BEGIN deploy_ovf ovf_file=#{ovf_file_path} template_name=#{template_name}")
|
@@ -825,6 +825,8 @@ module VmShepherd
|
|
825
825
|
datacenter_folders_to_clean: first_config.dig('cleanup', 'datacenter_folders_to_clean'),
|
826
826
|
datastores: first_config.dig('cleanup', 'datastores'),
|
827
827
|
datastore_folders_to_clean: first_config.dig('cleanup', 'datastore_folders_to_clean'),
|
828
|
+
cluster_name: first_config.dig('vsphere', 'cluster'),
|
829
|
+
resource_pool_name: first_config.dig('vsphere', 'resource_pool'),
|
828
830
|
}
|
829
831
|
end
|
830
832
|
let(:last_ova_manager) { instance_double(VsphereManager) }
|
@@ -833,6 +835,8 @@ module VmShepherd
|
|
833
835
|
datacenter_folders_to_clean: last_config.dig('cleanup', 'datacenter_folders_to_clean'),
|
834
836
|
datastores: last_config.dig('cleanup', 'datastores'),
|
835
837
|
datastore_folders_to_clean: last_config.dig('cleanup', 'datastore_folders_to_clean'),
|
838
|
+
cluster_name: last_config.dig('vsphere', 'cluster'),
|
839
|
+
resource_pool_name: last_config.dig('vsphere', 'resource_pool'),
|
836
840
|
}
|
837
841
|
end
|
838
842
|
|
data/vm_shepherd.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vm_shepherd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.7.
|
4
|
+
version: 3.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ops Manager Team
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-01-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-v1
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - '='
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 1.11.3
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: xmlrpc
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: bundler
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -193,7 +207,7 @@ files:
|
|
193
207
|
homepage: ''
|
194
208
|
licenses: []
|
195
209
|
metadata: {}
|
196
|
-
post_install_message:
|
210
|
+
post_install_message:
|
197
211
|
rdoc_options: []
|
198
212
|
require_paths:
|
199
213
|
- lib
|
@@ -208,9 +222,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
208
222
|
- !ruby/object:Gem::Version
|
209
223
|
version: '0'
|
210
224
|
requirements: []
|
211
|
-
|
212
|
-
|
213
|
-
signing_key:
|
225
|
+
rubygems_version: 3.0.3
|
226
|
+
signing_key:
|
214
227
|
specification_version: 4
|
215
228
|
summary: A tool for booting and tearing down Ops Manager VMs on various Infrastructures.
|
216
229
|
test_files:
|