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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: b09a65c54281ecc35d7692d7523b18b10256887c
4
- data.tar.gz: b1f694776d98a19c90cc2b566c83f4b213e06607
2
+ SHA256:
3
+ metadata.gz: f0c4eae538ba72ae93a1bc16e07b93153be92fb3730b0c1ee995c75aaa7bbec6
4
+ data.tar.gz: c46d2af2473fb238bfb1bec5e85f8ec13d19f9a0e32f5d7c88db23bd0ad3ac25
5
5
  SHA512:
6
- metadata.gz: e09d8e6e66dfc6f2f4dd877684302f62b26f61eb00a8e4ea05b83c8c4c71b9e0e5f83ad2d08f3edf6db3d75fdccebefa4da00f3da2c8f126df25a1dbc9f8ce8e
7
- data.tar.gz: 95523f5119b7a298512d471caf0a8d367e2a17bb5837b23f35bdf2f1d894e49b933b817d0f9c15525c3ac7a52aa9daad0257cb079bc2e150ded11803f076fd3e
6
+ metadata.gz: c24318537ae944dc68ccd6c214baa05c1906ba78011ae2391a4a1e8b115c5fddc20813f1556a0634a95436dfcf6b73679570bccb35386ac77936e576cc76628e
7
+ data.tar.gz: 8db0afde7bfa78be5acaf6d0736cd0a4d0fb75cce46054777873125a5ead9f6c4a479834bbeb69ab765cba7ca4bc9189708ec9b4ae6119148e231189bc04dcbc
@@ -3,4 +3,4 @@ AllCops:
3
3
  - Gemfile
4
4
  - Rakefile
5
5
  - vm_shepherd.gemspec
6
- TargetRubyVersion: 2.2
6
+ TargetRubyVersion: 2.6
@@ -1 +1 @@
1
- 2.2.4
1
+ 2.6.3
@@ -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
@@ -1,3 +1,3 @@
1
1
  module VmShepherd
2
- VERSION = '3.7.0'.freeze
2
+ VERSION = '3.7.1'.freeze
3
3
  end
@@ -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
 
@@ -24,6 +24,7 @@ Gem::Specification.new do |spec|
24
24
  spec.add_dependency 'ruby_vcloud_sdk', '0.7.4'
25
25
 
26
26
  spec.add_dependency 'rbvmomi', '1.11.3'
27
+ spec.add_dependency 'xmlrpc'
27
28
 
28
29
  spec.add_development_dependency 'bundler'
29
30
  spec.add_development_dependency 'rake'
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.0
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: 2019-04-09 00:00:00.000000000 Z
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
- rubyforge_project:
212
- rubygems_version: 2.4.5.1
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: