Module: Cloudkeeper::Aws::BackendExecutor
- Included in:
- CoreConnector
- Defined in:
- lib/cloudkeeper/aws/backend_executor.rb
Overview
Module handling complex operations on cloud backend
Instance Method Summary collapse
- #change_tags(appliance) ⇒ Object
- #deregister_expired_appliances ⇒ Object
- #deregister_image(appliance) ⇒ Object
- #deregister_image_list(image_list_identifier) ⇒ Object
- #fetch_appliances(image_list_identifier) ⇒ Object
- #list_image_lists ⇒ Object
- #modify_appliance(appliance) ⇒ Object
- #register_appliance(appliance) ⇒ Object
- #upload_appliance(appliance) ⇒ Object
- #upload_local_appliance(appliance) ⇒ Object
- #upload_remote_appliance(appliance) ⇒ Object
Instance Method Details
#change_tags(appliance) ⇒ Object
43 44 45 46 |
# File 'lib/cloudkeeper/aws/backend_executor.rb', line 43 def (appliance) image = cloud.find_appliance(appliance.identifier) cloud.(ProtoHelper.(appliance), image.image_id) end |
#deregister_expired_appliances ⇒ Object
66 67 68 69 70 71 72 73 |
# 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.(image.) } 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) ⇒ Object
32 33 34 35 36 |
# 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) ⇒ Object
48 49 50 51 |
# 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) ⇒ Object
61 62 63 64 |
# 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.(image.) } end |
#list_image_lists ⇒ Object
53 54 55 56 57 58 59 |
# 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..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) ⇒ Object
38 39 40 41 |
# File 'lib/cloudkeeper/aws/backend_executor.rb', line 38 def modify_appliance(appliance) deregister_image(appliance) register_appliance(appliance) end |
#register_appliance(appliance) ⇒ Object
24 25 26 27 28 29 30 |
# 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.(ProtoHelper.(appliance), image_id) ensure cloud.delete_data(appliance.identifier) end |
#upload_appliance(appliance) ⇒ Object
19 20 21 22 |
# 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) ⇒ Object
5 6 7 |
# 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) ⇒ Object
9 10 11 12 13 14 15 16 17 |
# 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 |