Class: CopyAmi::AmiRegisteredState

Inherits:
CopyAmiState show all
Defined in:
lib/scripts/ec2/copy_ami.rb

Overview

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

Instance Attribute Summary

Attributes inherited from ScriptExecutionState

#context, #logger

Instance Method Summary collapse

Methods inherited from CopyAmiState

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



384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
# File 'lib/scripts/ec2/copy_ami.rb', line 384

def enter()
  post_message("Cleaning Source and Target Regions...")
  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
  begin
    delete_snapshot(@context[:snapshot_id])
  rescue Exception => e
    error << e
    post_message("Unable to delete snapshot '#{@context[:snapshot_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)
    begin
      delete_security_group(@context[:source_security_group])
    rescue Exception => e
      error << e
      post_message("Unable to delete Security Group '#{@context[:source_security_group]}' in source region: #{e.to_s}")
    end
  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)
    begin
      delete_security_group(@context[:target_security_group])
    rescue
      error << e
      post_message("Unable to delete Security Group '#{@context[:target_security_group]}' in target region: #{e.to_s}")
    end
  end

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

  Done.new(@context)
end