Class: CopyMsWindowsAmi::AmiRegisteredState
- Inherits:
-
CopyMsWindowsAmiState
- Object
- ScriptExecutionState
- CopyMsWindowsAmiState
- CopyMsWindowsAmi::AmiRegisteredState
- Defined in:
- lib/scripts/ec2/copy_mswindows_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 local region. 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 CopyMsWindowsAmiState
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
547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 |
# File 'lib/scripts/ec2/copy_mswindows_ami.rb', line 547 def enter() ("Cleaning Source and Target Regions...") error = [] local_region() begin 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() rescue Exception => e error << e ("Unable to umount temporary volume '/mnt/tmp_#{@context[:source_temp_volume_id]}' in source region: #{e.to_s}") end begin detach_volume(@context[:source_temp_volume_id], @context[:source_instance_id]) rescue Exception => e error << e ("Unable to detach temporary 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 #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 ("Unable to delete Security Group '#{@context[:source_security_group]}' in source region: #{e.to_s}") end end # remote_region() begin 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() rescue Exception => e error << e ("Unable to umount temporary volume '/mnt/tmp_#{@context[:target_temp_volume_id]}' in target region: #{e.to_s}") end begin detach_volume(@context[:target_temp_volume_id], @context[:target_instance_id]) rescue Exception => e error << e ("Unable to detach temporary 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 temporary volume '#{@context[:target_temp_volume_id]}' in target region: #{e.to_s}") end #delete_volume(@context[:target_volume_id]) #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 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 |