vm_shepherd 3.7.0 → 3.7.1
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|