flydata 0.8.0 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/flydata.gemspec +4 -2
- data/lib/flydata.rb +1 -0
- data/lib/flydata/command/sync.rb +12 -7
- data/lib/flydata/helper/action/agent_action.rb +16 -3
- data/lib/flydata/helper/action/reset.rb +14 -0
- data/lib/flydata/helper/action/resync.rb +1 -9
- data/lib/flydata/helper/action/send_logs.rb +1 -1
- data/lib/flydata/helper/action_ownership.rb +1 -0
- data/lib/flydata/helper/action_ownership_channel.rb +34 -19
- data/lib/flydata/helper/scheduler.rb +13 -0
- data/lib/flydata/helper/worker.rb +1 -0
- data/spec/flydata/command/sync_spec.rb +4 -4
- data/spec/flydata/helper/action/reset_spec.rb +32 -0
- data/spec/flydata/helper/action_ownership_channel_spec.rb +35 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 68c50586cde303759f5ac328ff7562286e7480e3
|
4
|
+
data.tar.gz: 83c940bbdccc612ee4fb965d98d28e62b53c8e44
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1031061296b5f598ce63109738fc5b75d83bfa1a754ae5ea5afa71ad1680159205ca28e54d441797204edd2a3865901e5087ac2c4e8207b71f2ddc601dba76fa
|
7
|
+
data.tar.gz: c40898079b909de3f880f9afd0ffbd8622fc5058b10ce5780e8440cca9d5d5c047160583e3a2c330e1864a4c7000163b079520c6e07bf5569a969200ed443343
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.8.
|
1
|
+
0.8.1
|
data/flydata.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "flydata"
|
8
|
-
s.version = "0.8.
|
8
|
+
s.version = "0.8.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Koichi Fujikawa", "Masashi Miyazaki", "Matthew Luu", "Mak Inada", "Sriram NS"]
|
12
|
-
s.date = "2017-02-
|
12
|
+
s.date = "2017-02-08"
|
13
13
|
s.description = "FlyData Agent"
|
14
14
|
s.email = "sysadmin@flydata.com"
|
15
15
|
s.executables = ["fdredshift", "flydata", "serverinfo", "split_sync_ddl.rb"]
|
@@ -208,6 +208,7 @@ Gem::Specification.new do |s|
|
|
208
208
|
"lib/flydata/helper/action/check_remote_actions.rb",
|
209
209
|
"lib/flydata/helper/action/clear.rb",
|
210
210
|
"lib/flydata/helper/action/repair.rb",
|
211
|
+
"lib/flydata/helper/action/reset.rb",
|
211
212
|
"lib/flydata/helper/action/restart_agent.rb",
|
212
213
|
"lib/flydata/helper/action/resync.rb",
|
213
214
|
"lib/flydata/helper/action/send_logs.rb",
|
@@ -367,6 +368,7 @@ Gem::Specification.new do |s|
|
|
367
368
|
"spec/flydata/helper/action/check_remote_actions_spec.rb",
|
368
369
|
"spec/flydata/helper/action/clear_spec.rb",
|
369
370
|
"spec/flydata/helper/action/repair_spec.rb",
|
371
|
+
"spec/flydata/helper/action/reset_spec.rb",
|
370
372
|
"spec/flydata/helper/action/restart_agent_spec.rb",
|
371
373
|
"spec/flydata/helper/action/resync_spec.rb",
|
372
374
|
"spec/flydata/helper/action/send_logs_spec.rb",
|
data/lib/flydata.rb
CHANGED
@@ -35,6 +35,7 @@ module Flydata
|
|
35
35
|
FLYDATA_HELPER_CONF = File.join(FLYDATA_HELPER_HOME, "helper.conf")
|
36
36
|
FLYDATA_CMD_PATH = ENV['FLYDATA_CMD_PATH'] || "flydata"
|
37
37
|
FLYDATA_CLIENT_BUFFER_DIR = File.join(FLYDATA_HOME, 'buffer')
|
38
|
+
FLYDATA_DEBUG_FILE = File.join(FLYDATA_HOME, '.debug')
|
38
39
|
|
39
40
|
VERSION_PATH = File.join(FLYDATA_GEM_HOME, 'VERSION')
|
40
41
|
include Flydata::Heroku
|
data/lib/flydata/command/sync.rb
CHANGED
@@ -128,6 +128,7 @@ EOS
|
|
128
128
|
on 'i', 'init', 'Resets unfinished initial sync'
|
129
129
|
on 'force-run', 'Run forcefully, ignoring exclusive run info'
|
130
130
|
on 'f', 'force', "Resets tables including append only tables. Use this option only when you want to stop sync for the append only table permanently."
|
131
|
+
on 'include-unregistered', "Resets tables including unregistered tables. Use this option only when resetting removed tables."
|
131
132
|
end
|
132
133
|
end
|
133
134
|
|
@@ -141,7 +142,7 @@ EOS
|
|
141
142
|
tables = []
|
142
143
|
reset_init = false
|
143
144
|
end
|
144
|
-
sync_resumed, auto_create = set_current_tables(tables, resume: !opts[:all])
|
145
|
+
sync_resumed, auto_create = set_current_tables(tables, resume: !opts[:all], include_unregistered: opts.include_unregistered?)
|
145
146
|
target_tables = opts[:all] ? @full_tables : @input_tables
|
146
147
|
target_append_only_tables = target_tables & @append_only_tables
|
147
148
|
target_full_sync_tables = target_tables - @append_only_tables
|
@@ -1552,7 +1553,7 @@ Thank you for using FlyData!
|
|
1552
1553
|
(@unsynced_tables == @full_tables)
|
1553
1554
|
sync_fm.close
|
1554
1555
|
|
1555
|
-
verify_input_tables(@input_tables, @full_tables)
|
1556
|
+
verify_input_tables(@input_tables, @full_tables, options)
|
1556
1557
|
|
1557
1558
|
[sync_resumed, auto_create]
|
1558
1559
|
end
|
@@ -1607,13 +1608,17 @@ Thank you for using FlyData!
|
|
1607
1608
|
SyncFileManager.new(de, source)
|
1608
1609
|
end
|
1609
1610
|
|
1610
|
-
def verify_input_tables(input_tables, all_tables)
|
1611
|
+
def verify_input_tables(input_tables, all_tables, options = {})
|
1611
1612
|
return unless input_tables
|
1612
|
-
|
1613
|
-
|
1614
|
-
|
1613
|
+
inval_tables = input_tables - all_tables
|
1614
|
+
unless inval_tables.empty?
|
1615
|
+
msg = "These tables are not registered tables: #{inval_tables.join(", ")}"
|
1616
|
+
if options[:include_unregistered]
|
1617
|
+
log_warn_stderr(msg)
|
1618
|
+
else
|
1619
|
+
raise msg
|
1620
|
+
end
|
1615
1621
|
end
|
1616
|
-
raise "These tables are not registered tables: #{inval_table.join(", ")}" unless inval_table.empty?
|
1617
1622
|
end
|
1618
1623
|
|
1619
1624
|
def check_master_position_files
|
@@ -9,15 +9,28 @@ module Flydata
|
|
9
9
|
def execute(opts = {})
|
10
10
|
sub_command = command(opts)
|
11
11
|
cmd = FLYDATA_CMD % { sub_command: sub_command }
|
12
|
-
|
12
|
+
log_info("Executing `#{cmd}`")
|
13
13
|
o, e, s = Util::Shell.run_cmd(cmd)
|
14
|
-
|
15
|
-
log_error("Could not execute #{cmd}. Response status
|
14
|
+
log_warn(e) if not e.to_s.empty?
|
15
|
+
log_error("[error] Could not execute #{cmd}. Response status: #{s}") unless (s.to_i == 0)
|
16
16
|
end
|
17
17
|
|
18
18
|
# Override this. Needs to be implemented by the subclass
|
19
19
|
#def command(opts = {})
|
20
20
|
#end
|
21
|
+
|
22
|
+
def get_tables(opts)
|
23
|
+
tables = config_hash(opts)[:tables]
|
24
|
+
tables_str = case tables
|
25
|
+
when Array
|
26
|
+
tables.join(' ')
|
27
|
+
when String # --all option
|
28
|
+
tables
|
29
|
+
else
|
30
|
+
raise "Wrong tables parameter - tables:\"#{tables}\""
|
31
|
+
end
|
32
|
+
tables_str
|
33
|
+
end
|
21
34
|
end
|
22
35
|
end
|
23
36
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'flydata/helper/action/agent_action'
|
2
|
+
|
3
|
+
module Flydata
|
4
|
+
module Helper
|
5
|
+
module Action
|
6
|
+
class Reset < AgentAction
|
7
|
+
def command(opts = {})
|
8
|
+
arg = get_tables(opts)
|
9
|
+
"sync:reset -y --force --include-unregistered %s" % [arg]
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -5,15 +5,7 @@ module Flydata
|
|
5
5
|
module Action
|
6
6
|
class Resync < AgentAction
|
7
7
|
def command(opts = {})
|
8
|
-
|
9
|
-
arg = case tables
|
10
|
-
when Array
|
11
|
-
tables.join(' ')
|
12
|
-
when String # --all option
|
13
|
-
tables
|
14
|
-
else
|
15
|
-
raise "Wrong tables parameter - tables:\"#{tables}\""
|
16
|
-
end
|
8
|
+
arg = get_tables(opts)
|
17
9
|
"sync:resync -y --force %s" % [arg]
|
18
10
|
end
|
19
11
|
end
|
@@ -16,7 +16,6 @@ module Flydata
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def execute(opts = {})
|
19
|
-
log_debug("Sending logs")
|
20
19
|
num_of_lines = DEFAULT_NUM_OF_LINES
|
21
20
|
action_id = opts[:id]
|
22
21
|
begin
|
@@ -24,6 +23,7 @@ module Flydata
|
|
24
23
|
rescue
|
25
24
|
# Use default number of lines if config is nil, mal-formed etc
|
26
25
|
end
|
26
|
+
log_info("Sending logs - num_of_lines:#{num_of_lines}")
|
27
27
|
tailed_lines = tail(FLYDATA_LOG, num_of_lines)
|
28
28
|
@api_client.agent.send_logs(action_id, tailed_lines)
|
29
29
|
end
|
@@ -52,6 +52,7 @@ module Flydata
|
|
52
52
|
self.new(:resync, true, Action::Resync),
|
53
53
|
self.new(:clear, true, Action::Clear),
|
54
54
|
self.new(:stop_helper, true, Action::StopHelper),
|
55
|
+
self.new(:reset, true, Action::Reset),
|
55
56
|
].inject({}) do |h, action|
|
56
57
|
h[action.action_name] = action
|
57
58
|
h
|
@@ -22,7 +22,7 @@ module Flydata
|
|
22
22
|
action_ownership = @action_ownership_map[action_name]
|
23
23
|
if action_ownership.nil?
|
24
24
|
# unknown action. probably a new action
|
25
|
-
|
25
|
+
log_error "[error] unsupported action `#{action_name}'. Skip."
|
26
26
|
return false
|
27
27
|
end
|
28
28
|
|
@@ -50,21 +50,27 @@ module Flydata
|
|
50
50
|
self.synchronize do
|
51
51
|
return nil if @queue.empty?
|
52
52
|
|
53
|
-
# Wait until action will be processed
|
54
|
-
action = @queue.values.first
|
55
|
-
action_ownership = action[:action_ownership]
|
56
|
-
return nil if action_ownership.processing?
|
57
|
-
|
58
53
|
# Check resource change flag
|
59
|
-
|
60
|
-
@action_ownership_map.any? { |name, act_own|
|
54
|
+
rsc_act_running = @action_ownership_map.any? { |name, act_own|
|
61
55
|
(act_own.resource_change && act_own.processing?) }
|
62
|
-
|
56
|
+
|
57
|
+
target_key, target_action = @queue.find do |key, action|
|
58
|
+
action_ownership = action[:action_ownership]
|
59
|
+
|
60
|
+
# Wait until a same action will be processed
|
61
|
+
next if action_ownership.processing?
|
62
|
+
|
63
|
+
# Skip if another resource change action is running
|
64
|
+
next if action_ownership.resource_change && rsc_act_running
|
65
|
+
|
66
|
+
true
|
63
67
|
end
|
64
68
|
|
65
|
-
|
66
|
-
|
67
|
-
|
69
|
+
return nil if target_key.nil? || target_action.nil?
|
70
|
+
@queue.delete(target_key)
|
71
|
+
|
72
|
+
target_action[:action_ownership].owner = new_owner
|
73
|
+
target_action
|
68
74
|
end
|
69
75
|
end
|
70
76
|
|
@@ -86,15 +92,24 @@ module Flydata
|
|
86
92
|
end
|
87
93
|
|
88
94
|
def dump
|
89
|
-
|
90
|
-
|
91
|
-
|
95
|
+
queue_info = @queue.collect{|k,v|
|
96
|
+
"- #{k} #{v[:action_info]}"
|
97
|
+
}.join("\n")
|
92
98
|
|
93
|
-
|
94
|
-
#{
|
99
|
+
map_info = @action_ownership_map.collect{|k,v|
|
100
|
+
"- #{v.action_name} owner:\"#{v.owner}\" " +
|
101
|
+
"retry:#{v.retry_count} " +
|
102
|
+
"last:\"#{v.last_processed_time > 0 ? Time.at(v.last_processed_time).utc : '-'}\""
|
103
|
+
}.join("\n")
|
95
104
|
|
96
|
-
|
97
|
-
|
105
|
+
<<EOT
|
106
|
+
|
107
|
+
========
|
108
|
+
action_ownership_channel dump
|
109
|
+
# queue:
|
110
|
+
#{queue_info}
|
111
|
+
# action_ownership_map:
|
112
|
+
#{map_info}
|
98
113
|
========
|
99
114
|
EOT
|
100
115
|
end
|
@@ -7,6 +7,7 @@ module Flydata
|
|
7
7
|
|
8
8
|
RUN_INTERVAL = 1.0 #second
|
9
9
|
RUN_GC_INTERVAL = 60.0 * 5 #seconds
|
10
|
+
DEBUG_DUMP_INTERVAL = 60.0 #seconds
|
10
11
|
|
11
12
|
def initialize(helper_conf, server)
|
12
13
|
@stop_flag = ServerEngine::BlockingFlag.new
|
@@ -98,10 +99,22 @@ module Flydata
|
|
98
99
|
end
|
99
100
|
end
|
100
101
|
|
102
|
+
dump_queue_if_needed
|
101
103
|
run_gc_if_needed
|
102
104
|
wait_until_next_turn(start_time)
|
103
105
|
end
|
104
106
|
|
107
|
+
def dump_queue_if_needed
|
108
|
+
now = Time.now
|
109
|
+
@last_dump_time ||= now
|
110
|
+
if (@last_dump_time + DEBUG_DUMP_INTERVAL) < now
|
111
|
+
if File.exists?(FLYDATA_DEBUG_FILE)
|
112
|
+
log_info(@server.action_ownership_channel.dump) rescue nil
|
113
|
+
end
|
114
|
+
@last_dump_time = now
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
105
118
|
def run_gc_if_needed
|
106
119
|
now = Time.now
|
107
120
|
@last_gc_time ||= now
|
@@ -58,6 +58,7 @@ module Flydata
|
|
58
58
|
action_ownership.action_class.new(config).execute(action_info) do |new_action_name, new_action_info = nil|
|
59
59
|
# request action if the action requires
|
60
60
|
server.action_ownership_channel.request_action(new_action_name, new_action_info)
|
61
|
+
log_info("New action was requested - action:#{new_action_name} action_info:#{new_action_info}")
|
61
62
|
#server.action_ownership_channel.dump
|
62
63
|
end
|
63
64
|
action_ownership.reset_retry_count
|
@@ -454,7 +454,7 @@ module Flydata
|
|
454
454
|
let(:command_options) { ["-y", "--all"] }
|
455
455
|
let(:sync_info) { nil }
|
456
456
|
it do
|
457
|
-
expect(subject_object).to receive(:set_current_tables).with([], resume: false).and_call_original
|
457
|
+
expect(subject_object).to receive(:set_current_tables).with([], resume: false, include_unregistered: false).and_call_original
|
458
458
|
expect(subject_object).to receive(:wait_for_server_buffer).with( {:timeout=>timeout_value, :tables=>arg_tables} )
|
459
459
|
expect(subject_object).to receive(:cleanup_sync_server).with( default_data_entry, arg_tables )
|
460
460
|
subject
|
@@ -482,7 +482,7 @@ module Flydata
|
|
482
482
|
let(:sync_info_tables) { ["table1", "table2", "table4"] }
|
483
483
|
let(:target_tables_for_api) { [] }
|
484
484
|
it do
|
485
|
-
expect(subject_object).to receive(:set_current_tables).with([], resume: true).and_call_original
|
485
|
+
expect(subject_object).to receive(:set_current_tables).with([], resume: true, include_unregistered: false).and_call_original
|
486
486
|
expect(subject_object).to receive(:wait_for_server_buffer).with(
|
487
487
|
{:timeout=>timeout_value, :tables=>target_tables_for_api} )
|
488
488
|
expect(subject_object).to receive(:cleanup_sync_server).with(
|
@@ -496,7 +496,7 @@ module Flydata
|
|
496
496
|
let(:sync_info_tables) { ["table2"] }
|
497
497
|
let(:target_tables_for_api) { sync_info_tables }
|
498
498
|
it do
|
499
|
-
expect(subject_object).to receive(:set_current_tables).with([], resume: true).and_call_original
|
499
|
+
expect(subject_object).to receive(:set_current_tables).with([], resume: true, include_unregistered: false).and_call_original
|
500
500
|
expect(subject_object).to receive(:wait_for_server_buffer).with(
|
501
501
|
{:timeout=>timeout_value, :tables=>target_tables_for_api} )
|
502
502
|
expect(subject_object).to receive(:cleanup_sync_server).with(
|
@@ -519,7 +519,7 @@ module Flydata
|
|
519
519
|
allow_any_instance_of(SyncFileManager).to receive(:get_new_table_list).with(full_tables, "generated_ddl").and_return([])
|
520
520
|
end
|
521
521
|
it do
|
522
|
-
expect(subject_object).to receive(:set_current_tables).with(arg_tables, resume: true).and_call_original
|
522
|
+
expect(subject_object).to receive(:set_current_tables).with(arg_tables, resume: true, include_unregistered: false).and_call_original
|
523
523
|
expect(subject_object).to receive(:wait_for_server_buffer).with(
|
524
524
|
{:timeout=>timeout_value, :tables=>arg_tables} )
|
525
525
|
expect(subject_object).to receive(:cleanup_sync_server).with(
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require_relative '../helper_shared_context'
|
3
|
+
require 'flydata/helper/action/reset'
|
4
|
+
|
5
|
+
module Flydata
|
6
|
+
module Helper
|
7
|
+
module Action
|
8
|
+
describe Reset do
|
9
|
+
include_context 'helper context'
|
10
|
+
|
11
|
+
describe "#command" do
|
12
|
+
subject { described_class.new(config).command(opts) }
|
13
|
+
|
14
|
+
context 'without opts' do
|
15
|
+
let(:opts) { {} }
|
16
|
+
it { expect{subject}.to raise_error(/^Wrong tables parameter/) }
|
17
|
+
end
|
18
|
+
|
19
|
+
context 'with tables array' do
|
20
|
+
let(:opts) { {config_hash: {tables: %w(table_a table_b)}} }
|
21
|
+
it { is_expected.to eq("sync:reset -y --force --include-unregistered table_a table_b") }
|
22
|
+
end
|
23
|
+
|
24
|
+
context 'with tables string' do
|
25
|
+
let(:opts) { {config_hash: {tables: "table_a table_b"}} }
|
26
|
+
it { is_expected.to eq("sync:reset -y --force --include-unregistered table_a table_b") }
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -1,5 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'flydata/helper/action_ownership_channel'
|
3
|
+
require 'flydata/helper/action_ownership'
|
4
|
+
require 'flydata/helper/server'
|
3
5
|
require 'timecop'
|
4
6
|
|
5
7
|
module Flydata
|
@@ -25,7 +27,7 @@ module Flydata
|
|
25
27
|
context "when action is not valid" do
|
26
28
|
let(:action_name) { :start_agent }
|
27
29
|
it "should return false and leave a log" do
|
28
|
-
expect(channel).to receive(:
|
30
|
+
expect(channel).to receive(:log_error)
|
29
31
|
is_expected.to be(false)
|
30
32
|
end
|
31
33
|
end
|
@@ -40,6 +42,22 @@ module Flydata
|
|
40
42
|
expect(channel.instance_variable_get(:@queue).size).to be(1)
|
41
43
|
end
|
42
44
|
end
|
45
|
+
|
46
|
+
context "when the queue already contains the action but different id" do
|
47
|
+
let(:prev_action_info) do
|
48
|
+
{ id: 100, config: %Q|{"num_of_lines" : "100"}| }
|
49
|
+
end
|
50
|
+
|
51
|
+
before do
|
52
|
+
channel.request_action(action_name, prev_action_info)
|
53
|
+
end
|
54
|
+
it "should not alter the queue and return false" do
|
55
|
+
expect(channel.instance_variable_get(:@queue).size).to be(1)
|
56
|
+
is_expected.to be(true)
|
57
|
+
expect(channel.instance_variable_get(:@queue).size).to be(2)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
43
61
|
end
|
44
62
|
|
45
63
|
describe '#take_action_ownership' do
|
@@ -75,6 +93,22 @@ module Flydata
|
|
75
93
|
end
|
76
94
|
end
|
77
95
|
|
96
|
+
context "when the action does not need to be taken exclusively \
|
97
|
+
but enqueued behind an exclusive actions in progress" do
|
98
|
+
before do
|
99
|
+
channel.request_action(:stop_agent)
|
100
|
+
channel.take_action_ownership("another-owner")
|
101
|
+
channel.request_action(:restart_agent)
|
102
|
+
channel.request_action(:send_logs, action_info)
|
103
|
+
end
|
104
|
+
it "should return a processable non-exclusive action" do
|
105
|
+
action = subject
|
106
|
+
expect(action[:action_ownership].action_name).to be(:send_logs)
|
107
|
+
expect(action[:action_ownership].owner).to be(new_owner)
|
108
|
+
expect(action[:action_info]).to eq(action_info)
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
78
112
|
context "when the action can be taken" do
|
79
113
|
before do
|
80
114
|
channel.request_action(:send_logs, action_info)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flydata
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Koichi Fujikawa
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2017-02-
|
15
|
+
date: 2017-02-08 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: rest-client
|
@@ -683,6 +683,7 @@ files:
|
|
683
683
|
- lib/flydata/helper/action/check_remote_actions.rb
|
684
684
|
- lib/flydata/helper/action/clear.rb
|
685
685
|
- lib/flydata/helper/action/repair.rb
|
686
|
+
- lib/flydata/helper/action/reset.rb
|
686
687
|
- lib/flydata/helper/action/restart_agent.rb
|
687
688
|
- lib/flydata/helper/action/resync.rb
|
688
689
|
- lib/flydata/helper/action/send_logs.rb
|
@@ -842,6 +843,7 @@ files:
|
|
842
843
|
- spec/flydata/helper/action/check_remote_actions_spec.rb
|
843
844
|
- spec/flydata/helper/action/clear_spec.rb
|
844
845
|
- spec/flydata/helper/action/repair_spec.rb
|
846
|
+
- spec/flydata/helper/action/reset_spec.rb
|
845
847
|
- spec/flydata/helper/action/restart_agent_spec.rb
|
846
848
|
- spec/flydata/helper/action/resync_spec.rb
|
847
849
|
- spec/flydata/helper/action/send_logs_spec.rb
|