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 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: