Class: Stax::Cmd::Dms
Constant Summary
collapse
- COLORS =
{
active: :green,
available: :green,
successful: :green,
failed: :red,
stopped: :red,
ready: :green,
}
Instance Method Summary
collapse
Methods inherited from SubCommand
#info, stax_info, stax_info_tasks
Instance Method Details
#connections ⇒ Object
103
104
105
106
107
108
|
# 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
|
#endpoints ⇒ Object
51
52
53
54
55
56
|
# 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 ⇒ Object
59
60
61
62
63
64
65
66
67
68
|
# 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) ⇒ Object
114
115
116
117
118
119
120
121
122
123
124
125
|
# 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 ⇒ Object
71
72
73
74
75
76
77
78
79
80
|
# 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 ⇒ Object
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
# File 'lib/stax/mixin/dms.rb', line 83
def test
instance = dms_instance_arns.first 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
|