Class: CopySnapshot::SnapshotCreatedState

Inherits:
CopySnapshotState show all
Defined in:
lib/scripts/ec2/copy_snapshot.rb

Overview

Operation done. Now only cleanup is missing, i.e. shut down instances and remote the volumes that were created. Start with cleaning the ressources in both regions.

Instance Attribute Summary

Attributes inherited from ScriptExecutionState

#context, #logger

Instance Method Summary collapse

Methods inherited from CopySnapshotState

load_state, #local_region, #remote_region

Methods inherited from ScriptExecutionState

#done?, #end_state, #failed?, #get_superclass_name, #initialize, #register_state_change_listener, #start_state_machine, #to_s

Methods included from StateTransitionHelper

#attach_volume, #connect, #copy_distribution, #create_fs, #create_image_from_instance, #create_labeled_fs, #create_security_group_with_rules, #create_snapshot, #create_volume, #create_volume_from_snapshot, #delete_security_group, #delete_snapshot, #delete_volume, #describe_instance, #detach_volume, #determine_file, #disable_ssh_tty, #disconnect, #ec2_handler, #ec2_handler=, #enable_ssh_tty, #get_aws_kernel_image_aki, #get_aws_region_from_endpoint, #get_partition_count, #get_partition_fs_type, #get_partition_fs_type_and_label, #get_partition_label, #get_partition_table, #get_root_device_name, #get_root_partition_fs_type, #get_root_partition_fs_type_and_label, #get_root_partition_label, #get_root_volume_id, #launch_instance, #local_decompress_and_dump_file_to_device, #local_dump_and_compress_device_to_file, #local_dump_device_to_file, #local_dump_file_to_device, #mount_fs, #mount_fs_old, #register_snapshot, #remote_copy, #remote_copy_old, #remote_handler, #remote_handler=, #retrieve_instances, #retrieve_security_groups, #set_partition_table, #shut_down_instance, #snapshot_accessible, #start_instance, #stop_instance, #unmount_fs, #upload_file, #zip_volume

Methods included from VCloudTransitionHelper

#retrieve_ip_services

Constructor Details

This class inherits a constructor from ScriptExecutionState

Instance Method Details

#enterObject



268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
# File 'lib/scripts/ec2/copy_snapshot.rb', line 268

def enter()
  error = []
  local_region()
  begin
    shut_down_instance(@context[:source_instance_id])
  rescue Exception => e
    error << e
    post_message("Unable to shutdown instance '#{@context[:source_instance_id]}' in source region: #{e.to_s}")
  end
  begin
    delete_volume(@context[:source_volume_id])
  rescue Exception => e
    error << e
    post_message("Unable to delete volume '#{@context[:source_volume_id]}' in source region: #{e.to_s}")
  end
  #XXX: delete Security Group according to its name
  if @context[:source_security_group].eql?(Ec2Script::CS_SEC_GRP_NAME)
    delete_security_group(@context[:source_security_group])
  end
  #
  remote_region()
  begin
    shut_down_instance(@context[:target_instance_id])
  rescue Exception => e
    error << e
    post_message("Unable to shutdown instance '#{@context[:target_instance_id]}' in target region: #{e.to_s}")
  end
  begin
    delete_volume(@context[:target_volume_id])
  rescue Exception => e
    error << e
    post_message("Unable to delete volume '#{@context[:target_volume_id]}' in target region: #{e.to_s}")
  end
  #XXX: delete Security Group according to its name
  if @context[:target_security_group].eql?(Ec2Script::CS_SEC_GRP_NAME)
    delete_security_group(@context[:target_security_group])
  end

  if error.size() > 0
    raise Exception.new("Cleanup error(s)")
  end

  Done.new(@context)
end