module Cloudkeeper::Aws::BackendExecutor

Module handling complex operations on cloud backend

Public Instance Methods

change_tags(appliance) click to toggle source
# File lib/cloudkeeper/aws/backend_executor.rb, line 43
def change_tags(appliance)
  image = cloud.find_appliance(appliance.identifier)
  cloud.set_tags(ProtoHelper.appliance_to_tags(appliance), image.image_id)
end
deregister_expired_appliances() click to toggle source
# File lib/cloudkeeper/aws/backend_executor.rb, line 66
def deregister_expired_appliances
  images = cloud.search_images(FilterHelper.cloudkeeper_instance)
  appliances = images.map { |image| ProtoHelper.appliance_from_tags(image.tags) }
  appliances.keep_if { |appliance| appliance.expiration_date <= Time.now.to_i }

  logger.debug { "Expired appliances #{appliances.map(&:identifier).inspect}" }
  appliances.each { |expired| deregister_image(expired) }
end
deregister_image(appliance) click to toggle source
# File lib/cloudkeeper/aws/backend_executor.rb, line 32
def deregister_image(appliance)
  logger.debug { "Deregistering appliance #{appliance.identifier}" }
  image = cloud.find_appliance(appliance.identifier)
  cloud.deregister_image(image.image_id)
end
deregister_image_list(image_list_identifier) click to toggle source
# File lib/cloudkeeper/aws/backend_executor.rb, line 48
def deregister_image_list(image_list_identifier)
  images = cloud.search_images(FilterHelper.image_list(image_list_identifier.image_list_identifier))
  images.each { |image| cloud.deregister_image(image.image_id) }
end
fetch_appliances(image_list_identifier) click to toggle source
# File lib/cloudkeeper/aws/backend_executor.rb, line 61
def fetch_appliances(image_list_identifier)
  images = cloud.search_images(FilterHelper.image_list(image_list_identifier.image_list_identifier))
  images.map { |image| ProtoHelper.appliance_from_tags(image.tags) }
end
list_image_lists() click to toggle source
# File lib/cloudkeeper/aws/backend_executor.rb, line 53
def list_image_lists
  images = cloud.search_images(FilterHelper.all_image_lists)
  image_list_identifiers = images.map do |image|
    image.tags.find { |tag| tag['key'] == FilterHelper::TAG_APPLIANCE_IMAGE_LIST_IDENTIFIER }['value']
  end
  image_list_identifiers.uniq.map { |ili| CloudkeeperGrpc::ImageListIdentifier.new(image_list_identifier: ili) }
end
modify_appliance(appliance) click to toggle source
# File lib/cloudkeeper/aws/backend_executor.rb, line 38
def modify_appliance(appliance)
  deregister_image(appliance)
  register_appliance(appliance)
end
register_appliance(appliance) click to toggle source
# File lib/cloudkeeper/aws/backend_executor.rb, line 24
def register_appliance(appliance)
  upload_appliance(appliance)
  image_id = cloud.poll_import_task(cloud.start_import_image(appliance))
  cloud.set_tags(ProtoHelper.appliance_to_tags(appliance), image_id)
ensure
  cloud.delete_data(appliance.identifier)
end
upload_appliance(appliance) click to toggle source
# File lib/cloudkeeper/aws/backend_executor.rb, line 19
def upload_appliance(appliance)
  upload_remote_appliance(appliance) if appliance.image.mode == :REMOTE
  upload_local_appliance(appliance) if appliance.image.mode == :LOCAL
end
upload_local_appliance(appliance) click to toggle source
# File lib/cloudkeeper/aws/backend_executor.rb, line 5
def upload_local_appliance(appliance)
  cloud.upload_file(appliance.identifier, appliance.image.location)
end
upload_remote_appliance(appliance) click to toggle source
# File lib/cloudkeeper/aws/backend_executor.rb, line 9
def upload_remote_appliance(appliance)
  cloud.upload_data(appliance.identifier) do |write_stream|
    ImageDownloader.download(appliance.image.location,
                             appliance.image.username,
                             appliance.image.password) do |image_segment|
                               write_stream << image_segment
                             end
  end
end