class Stax::Cmd::Dms
Constants
- COLORS
Public Instance Methods
connections()
click to toggle source
# File lib/stax/mixin/dms.rb, line 103 def connections debug("Test connection results for #{my.stack_name}") print_table Aws::Dms.connections(filters: [{name: 'endpoint-arn', values: dms_endpoint_arns}]).map { |c| [c.endpoint_identifier, c.replication_instance_identifier, color(c.status, COLORS), c.last_failure_message] } end
dms_endpoint_arns()
click to toggle source
# File lib/stax/mixin/dms.rb, line 37 def dms_endpoint_arns my.stack_dms_endpoints.map(&:physical_resource_id) end
dms_instance_arns()
click to toggle source
# File lib/stax/mixin/dms.rb, line 41 def dms_instance_arns my.stack_dms_replication_instances.map(&:physical_resource_id) end
dms_task_arns()
click to toggle source
# File lib/stax/mixin/dms.rb, line 45 def dms_task_arns my.stack_dms_replication_tasks.map(&:physical_resource_id) end
endpoints()
click to toggle source
# File lib/stax/mixin/dms.rb, line 51 def endpoints debug("DMS endpoints for #{my.stack_name}") print_table Aws::Dms.endpoints(filters: [{name: 'endpoint-arn', values: dms_endpoint_arns}]).map { |e| [e.endpoint_identifier, e.endpoint_type, color(e.status, COLORS), e.engine_name, e.server_name] } end
instances()
click to toggle source
# File lib/stax/mixin/dms.rb, line 59 def instances debug("DMS replication instances for #{my.stack_name}") print_table Aws::Dms.instances(filters: [{name: 'replication-instance-arn', values: dms_instance_arns}]).map { |i| [ i.replication_instance_identifier, color(i.replication_instance_status, COLORS), i.replication_subnet_group&.vpc_id, i.replication_instance_class, i.engine_version, i.availability_zone, i.replication_instance_private_ip_address, ] } end
start(*tasks)
click to toggle source
# File lib/stax/mixin/dms.rb, line 114 def start(*tasks) type = (options[:resume] && 'resume-processing') || (options[:reload] && 'reload-target') || 'start-replication' options.fetch(:tasks, dms_task_arns).each do |task| Aws::Dms.start(replication_task_arn: task, start_replication_task_type: type).tap do |r| puts [r.replication_task_identifier, r.status, r.replication_task_start_date].join(' ') end end rescue ::Aws::DatabaseMigrationService::Errors::InvalidParameterCombinationException => e fail_task(e.message) rescue ::Aws::DatabaseMigrationService::Errors::InvalidResourceStateFault => e fail_task(e.message) end
tasks()
click to toggle source
# File lib/stax/mixin/dms.rb, line 71 def tasks debug("DMS replication tasks for #{my.stack_name}") print_table Aws::Dms.tasks(filters: [{name: 'replication-task-arn', values: dms_task_arns}]).map { |t| [ t.replication_task_identifier, color(t.status, COLORS), t.migration_type, "#{t.replication_task_stats&.full_load_progress_percent}%", "#{(t.replication_task_stats&.elapsed_time_millis/1000).to_i}s", "#{t.replication_task_stats&.tables_loaded} loaded", "#{t.replication_task_stats&.tables_errored} errors", ] } end
test()
click to toggle source
# File lib/stax/mixin/dms.rb, line 83 def test instance = dms_instance_arns.first # FIXME: handle multiple instances dms_endpoint_arns.each do |endpoint| debug("Testing connection for #{endpoint}") conn = Aws::Dms.test(replication_instance_arn: instance, endpoint_arn: endpoint) loop do sleep 3 c = Aws::Dms.connections( filters: [ { name: 'endpoint-arn', values: [conn.endpoint_arn] }, { name: 'replication-instance-arn', values: [conn.replication_instance_arn] }, ] ).first puts [c.endpoint_identifier, c.replication_instance_identifier, color(c.status, COLORS), c.last_failure_message].join(' ') break unless c.status == 'testing' end end end