Class: CopyMsWindowsAmi::InitialStateLaunch

Inherits:
CopyMsWindowsAmiState show all
Defined in:
lib/scripts/ec2/copy_mswindows_ami.rb

Overview

Consitionnal State (launching an instance and creating a snapshot)

Instance Attribute Summary

Attributes inherited from ScriptExecutionState

#context, #logger

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

#retrieve_ip_services

Constructor Details

This class inherits a constructor from ScriptExecutionState

Instance Method Details

#enterObject



218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
# File 'lib/scripts/ec2/copy_mswindows_ami.rb', line 218

def enter()
  post_message("Launching and stopping an instance of the AMI to create a snapshot")
  local_region()
  #XXX: create a CloudyScripts Security Group with TCP port 22 publicly opened
  if @context[:source_security_group] == nil
    @context[:source_security_group] = Ec2Script::CS_SEC_GRP_NAME
    create_security_group_with_rules(@context[:source_security_group], Ec2Script::CS_SEC_GRP_DESC,
      [{:ip_protocol => "tcp", :from_port => 22, :to_port => 22, :cidr_ip => "0.0.0.0/0"}])
    post_message("'#{@context[:source_security_group]}' Security Group created with TCP port 22 publicly opened.")
  end

  result = launch_instance(@context[:ami_id], @context[:source_key_name], @context[:source_security_group])
  instance_id = result.first
  post_message("Instance launched with ID: #{instance_id}")
  post_message("Waiting 3 minutes before stopping instance '#{instance_id}' for creating a Snapshot of the rootDevice")
  sleep(180)
  stop_instance(instance_id) 
  post_message("Instance '#{instance_id}' stopped, creating snapshot")
  ebs_volume_id = ec2_helper.get_attached_volumes(instance_id)[0]['volumeId']
  @context[:snapshot_id] = create_snapshot(ebs_volume_id, 
    "Created by CloudyScripts - #{self.class.name} from #{ebs_volume_id}")

  InitialStateDone.new(@context)
end