a55f3a8862
Change-Id: I6c2446ac4183043a92a867834a687696d395829c
101 lines
2.6 KiB
Ruby
Executable File
101 lines
2.6 KiB
Ruby
Executable File
#!/usr/bin/env ruby
|
|
## Copyright 2016 Mellanox Technologies, Ltd
|
|
##
|
|
## Licensed under the Apache License, Version 2.0 (the "License");
|
|
## you may not use this file except in compliance with the License.
|
|
## You may obtain a copy of the License at
|
|
##
|
|
## http://www.apache.org/licenses/LICENSE-2.0
|
|
##
|
|
## Unless required by applicable law or agreed to in writing, software
|
|
## distributed under the License is distributed on an "AS IS" BASIS,
|
|
## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
## implied.
|
|
## See the License for the specific language governing permissions and
|
|
## limitations under the License.
|
|
|
|
require 'hiera'
|
|
ENV['LANG'] = 'C'
|
|
LOG_FILE="/var/log/mellanox-plugin.log"
|
|
|
|
def log(level, msg)
|
|
current_time = Time.now.strftime("%Y-%m-%d %H:%M:%S")
|
|
File.open(LOG_FILE, 'a') { |f|
|
|
f.puts "#{current_time} delete_images.rb #{level}: #{msg}"
|
|
}
|
|
end
|
|
|
|
def image_list
|
|
stdout = `. /root/openrc && glance image-list`
|
|
return_code = $?.exitstatus
|
|
[ stdout, return_code ]
|
|
end
|
|
|
|
def images_ids
|
|
stdout, return_code = image_list
|
|
if return_code != 0
|
|
raise 'Failed retrieving image-list'
|
|
end
|
|
ids = []
|
|
stdout.split("\n").each do |line|
|
|
fields = line.split('|').map { |f| f.chomp.strip }
|
|
next if fields[1] == 'ID'
|
|
next unless fields[1]
|
|
ids << fields[1]
|
|
end
|
|
{:ids => ids, :exit_code => return_code}
|
|
end
|
|
|
|
|
|
def delete_image(id)
|
|
command = ". /root/openrc && /usr/bin/glance image-delete #{id}"
|
|
stdout = `#{command}`
|
|
return_code = $?.exitstatus
|
|
[ stdout, return_code ]
|
|
end
|
|
|
|
def wait_for_glance
|
|
5.times.each do |retries|
|
|
sleep 10 if retries > 0
|
|
_, return_code = image_list
|
|
return if return_code == 0
|
|
end
|
|
raise 'Could not get a list of glance images!'
|
|
end
|
|
|
|
def main
|
|
log("info", "Waiting for glance response")
|
|
wait_for_glance
|
|
|
|
log("info", "Fetching list of current images")
|
|
ids = images_ids
|
|
if ids[:exit_code] != 0
|
|
raise 'Failed retrieving existing images ids'
|
|
end
|
|
|
|
succeed = true
|
|
ids[:ids].each do |id|
|
|
stdout, return_code = delete_image(id)
|
|
if return_code != 0
|
|
log("error", "Failed deleting image with ID = '#{id}'" + stdout)
|
|
succeed = false
|
|
end
|
|
end
|
|
if ! succeed
|
|
log("error", "Some images weren't deleted, this may cause errors when "+
|
|
"uploading images to glance or when creating an instance")
|
|
end
|
|
end
|
|
|
|
########################
|
|
|
|
begin
|
|
main
|
|
rescue
|
|
log("error", "Some images weren't deleted, this may cause errors when "+
|
|
"uploading images to glance or when creating an instance")
|
|
exit 1
|
|
else
|
|
log("info", "Successfully deleted all existing images from glance")
|
|
end
|