Class: CopyMsWindowsSnapshot::TargetSnapshotCreatedState
- Inherits:
-
CopyMsWindowsSnapshotState
- Object
- ScriptExecutionState
- CopyMsWindowsSnapshotState
- CopyMsWindowsSnapshot::TargetSnapshotCreatedState
- Defined in:
- lib/scripts/ec2/copy_mswindows_snapshot.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. Steps:
- cleanup source region
- unmount temp volume
- detach source and temp volume
- terminate instance
- delete source and temp volume
- cleanup target region
- unmount temp volume
- detach temp volume
- terminate instance
- delete source and temp volume
Instance Attribute Summary
Attributes inherited from ScriptExecutionState
Instance Method Summary collapse
Methods inherited from CopyMsWindowsSnapshotState
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
Constructor Details
This class inherits a constructor from ScriptExecutionState
Instance Method Details
#enter ⇒ Object
455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 |
# File 'lib/scripts/ec2/copy_mswindows_snapshot.rb', line 455 def enter() error = [] local_region() connect(@context[:source_dns_name], @context[:source_ssh_username], nil, @context[:source_ssh_keydata]) mount_point = "/mnt/tmp_#{@context[:source_temp_volume_id]}" unmount_fs(mount_point) disconnect() begin detach_volume(@context[:source_temp_volume_id], @context[:source_instance_id]) rescue Exception => e error << e ("Unable to detach volume '#{@context[:source_temp_volume_id]}' in source region: #{e.to_s}") end begin detach_volume(@context[:source_volume_id], @context[:source_instance_id]) rescue Exception => e error << e ("Unable to detach volume '#{@context[:source_volume_id]}' in source region: #{e.to_s}") end begin shut_down_instance(@context[:source_instance_id]) rescue Exception => e error << e ("Unable to shutdown instance '#{@context[:source_instance_id]}' in source region: #{e.to_s}") end begin delete_volume(@context[:source_temp_volume_id]) rescue Exception => e error << e ("Unable to delete volume '#{@context[:source_temp_volume_id]}' in source region: #{e.to_s}") end begin delete_volume(@context[:source_volume_id]) rescue Exception => e error << e ("Unable to delete volume '#{@context[:source_volume_id]}' in source region: #{e.to_s}") end if @context[:source_security_group].eql?(Ec2Script::CS_SEC_GRP_NAME) begin delete_security_group(@context[:source_security_group]) rescue Exception => e error << e ("Unable to delete Security Group '#{@context[:source_security_group]}' in source region: #{e.to_s}") end end # remote_region() connect(@context[:target_dns_name], @context[:target_ssh_username], nil, @context[:target_ssh_keydata]) mount_point = "/mnt/tmp_#{@context[:target_temp_volume_id]}" unmount_fs(mount_point) disconnect() begin detach_volume(@context[:target_temp_volume_id], @context[:target_instance_id]) rescue Exception => e error << e ("Unable to detach volume '#{@context[:target_temp_volume_id]}' in target region: #{e.to_s}") end begin shut_down_instance(@context[:target_instance_id]) rescue Exception => e error << e ("Unable to shutdown instance '#{@context[:target_instance_id]}' in target region: #{e.to_s}") end begin delete_volume(@context[:target_temp_volume_id]) rescue Exception => e error << e ("Unable to delete volume '#{@context[:target_temp_volume_id]}' in target region: #{e.to_s}") end begin delete_volume(@context[:target_volume_id]) rescue Exception => e error << e ("Unable to delete volume '#{@context[:target_volume_id]}' in target region: #{e.to_s}") end if @context[:target_security_group].eql?(Ec2Script::CS_SEC_GRP_NAME) begin delete_security_group(@context[:target_security_group]) rescue Exception => e error << e ("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 |