Class: CheckCloudyScripts::CSTestingState

Inherits:
CheckCloudyScriptsState show all
Defined in:
lib/scripts/ec2/check_cloudyscripts.rb

Overview

Snapshot is created from the AMI. Create a volume from the snapshot, attach and mount the volume as second device.

Instance Attribute Summary

Attributes inherited from ScriptExecutionState

#context, #logger

Instance Method Summary collapse

Methods inherited from CheckCloudyScriptsState

load_state, #local_region, #remote_region

Methods inherited from ScriptExecutionState

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

Methods included from StateTransitionHelper

#attach_volume, #check_string_alnum, #connect, #copy_distribution, #create_fs, #create_image_from_instance, #create_labeled_fs, #create_snapshot, #create_volume, #create_volume_from_snapshot, #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_fs_type, #get_partition_fs_type_and_label, #get_partition_label, #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, #mount_fs, #mount_fs_old, #register_snapshot, #remote_copy, #remote_copy_old, #remote_handler, #remote_handler=, #retrieve_instances, #retrieve_security_groups, #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



100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# File 'lib/scripts/ec2/check_cloudyscripts.rb', line 100

def enter()
  post_message("INFO: Entering CSTestingState...")

  #@context[:source_volume_id] = create_volume_from_snapshot(@context[:snapshot_id],
  #  @context[:source_availability_zone])
  @context[:source_volume_id] = "vol-6eb34b06" 

  device = @context[:temp_device_name]
  mount_point = "/mnt/tmp_#{@context[:source_volume_id]}"
  attach_volume(@context[:source_volume_id], @context[:source_instance_id], device)
  connect(@context[:source_dns_name], @context[:source_ssh_username], nil, @context[:source_ssh_keydata]) 
  # detect if there is a shift for device mapping (between AWS and the operating system of the system)
  root_device_name = get_root_device_name()
  # detect letters
  aws_root_device = @context[:root_device_name]
  aws_letter = aws_root_device.split('/')[2].gsub('sd', '').gsub('xvd', '').gsub(/[0-9]/, '')
  os_letter = root_device_name.split('/')[2].gsub('sd', '').gsub('xvd', '').gsub(/[0-9]/, '')
  aws_device_letter = device.split('/')[2].gsub('sd', '').gsub('xvd', '').gsub(/[0-9]/, '')
  puts "DEBUG: AWS info: #{aws_root_device}, #{aws_letter}"
  puts "DEBUG: OS info: #{root_device_name}, #{os_letter}"
  if !aws_letter.eql?(os_letter)
    post_message("Detected specific kernel with shift between AWS and Kernel OS for device naming")
    puts "Detected specific kernel with shift between AWS and Kernel OS for device naming (#{aws_root_device} vs #{root_device_name})"
  end
  while !aws_letter.eql?(os_letter)
    aws_letter.succ!
    aws_device_letter.succ!
  end
  device = "/dev/sd#{aws_device_letter}" 
  post_message("Using AWS name '#{@context[:temp_device_name]}' and OS name '#{device}'")
  puts "Using AWS name '#{@context[:temp_device_name]}' and OS name '#{device}'"
  mount_fs(mount_point, device)
  # get root partition label and filesystem type
  #@context[:label] = get_root_partition_label()
  #@context[:fs_type] = get_root_partition_fs_type()
  @context[:fs_type], @context[:label] = get_root_partition_fs_type_and_label()
  disconnect()

  Done.new()
end