flydata 0.0.1.2011102602 → 0.0.1.2011102901

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1.2011102602
1
+ 0.0.1.2011102901
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.0.1.2011102602"
8
+ s.version = "0.0.1.2011102901"
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"]
12
- s.date = "2012-10-26"
12
+ s.date = "2012-10-29"
13
13
  s.description = "FlyData Command Line Interface"
14
14
  s.email = "sysadmin@flydata.co"
15
15
  s.executables = ["flydata"]
data/lib/flydata/cli.rb CHANGED
@@ -35,6 +35,15 @@ Usage: flydata COMMAND
35
35
  stop # stop flydata process
36
36
  restart # restart flydata process
37
37
  setlogdel # show and change log deletion settting
38
+
39
+ If you encountered login or any other errors during setup,
40
+ please setup flydata again by following commands.
41
+ source ~/.bashrc
42
+ flydata setup
43
+
44
+ You can check the logs of sender(flydata) process.
45
+ Log path: ~/.flydata/flydata.log
46
+
38
47
  EOM
39
48
  end
40
49
  end
@@ -6,7 +6,6 @@ module Flydata
6
6
  end
7
7
  def flydata; @api_client end
8
8
 
9
- # retrieve models on servers
10
9
  def retrieve_data_entries
11
10
  data_entries = flydata.get('/data_entries')
12
11
  unless flydata.response.code == 200
@@ -14,6 +13,12 @@ module Flydata
14
13
  end
15
14
  data_entries
16
15
  end
16
+ def register_crontab
17
+ data_entries = retrieve_data_entries
18
+ if data_entries.any?{|e| e['log_deletion']}
19
+ Flydata::Command::Crontab.new.run
20
+ end
21
+ end
17
22
 
18
23
  # print console
19
24
  def newline; puts end
@@ -2,6 +2,7 @@ module Flydata
2
2
  module Command
3
3
  class Routine < Base
4
4
  def run
5
+ print "#{Time.now} "
5
6
  unless flydata.credentials.authenticated?
6
7
  raise "Authentication error. Please login."
7
8
  end
@@ -3,43 +3,24 @@ module Flydata
3
3
  class Sender < Base
4
4
  FLYDATA_HOME=Flydata::HOME_DIR
5
5
  def start
6
+ # Check if process exist
6
7
  if process_exist?
7
8
  say("Process exist. Please stop process first.")
8
9
  return
9
10
  end
10
11
 
11
- retry_count = 10
12
- 1.upto(retry_count) do |i|
13
- break if server_ready?
14
- say("Waiting server side active... (#{i}/#{retry_count})")
15
- sleep 30
16
- end
12
+ wait_until_server_ready
17
13
 
14
+ # Start sender(fluentd) process
18
15
  say('Starting sender process.')
19
16
  Dir.chdir(FLYDATA_HOME){
20
17
  system("fluentd -d #{FLYDATA_HOME}/flydata.pid -l #{FLYDATA_HOME}/flydata.log -c #{FLYDATA_HOME}/flydata.conf")
21
18
  }
22
-
23
19
  sleep 5
24
20
 
25
- data_port = flydata.data_port.get
26
- data_port_id = data_port['id']
27
-
28
- retry_count = 10
29
- ready = false
30
- 1.upto(retry_count) do |i|
31
- ready ||= client_ready?
32
- if ready and uploaded_successfully?(data_port_id)
33
- say('Done.')
34
- say("Go to your Dashboard! http://#{Flydata::FLYDATA_API_HOST}")
35
- return true
36
- end
37
- say("Waiting client side active... (#{i}/#{retry_count})")
38
- sleep 30
39
- end
40
-
41
- say('Something wrong..')
42
- false
21
+ wait_until_client_ready
22
+ wait_until_logs_uploaded
23
+ say("Go to your Dashboard! http://#{Flydata::FLYDATA_API_HOST}")
43
24
  end
44
25
  def stop
45
26
  unless process_exist?
@@ -51,10 +32,8 @@ module Flydata
51
32
  if system("kill `cat #{FLYDATA_HOME}/flydata.pid`")
52
33
  say('Done.')
53
34
  return true
54
- else
55
- say('Something wrong..')
56
35
  end
57
- false
36
+ raise 'Something wrong..'
58
37
  end
59
38
  def restart
60
39
  if process_exist?
@@ -63,7 +42,7 @@ module Flydata
63
42
  say('Done.')
64
43
  return true
65
44
  else
66
- say('Something wrong..')
45
+ raise 'Something wrong..'
67
46
  end
68
47
  else
69
48
  say("Process doesn't exist.")
@@ -72,6 +51,44 @@ module Flydata
72
51
  end
73
52
 
74
53
  private
54
+ def wait_until_server_ready
55
+ retry_count = 10
56
+ 1.upto(retry_count) do |i|
57
+ return true if server_ready?
58
+ say("Waiting server side active... (#{i}/#{retry_count})")
59
+ sleep 30
60
+ end
61
+ false
62
+ end
63
+ def wait_until_client_ready
64
+ retry_count = 10
65
+ 1.upto(retry_count) do |i|
66
+ if client_ready?
67
+ say("Done! Client is ready now.")
68
+ return true
69
+ end
70
+ say("Waiting client side active... (#{i}/#{retry_count})")
71
+ sleep 30
72
+ end
73
+ raise "Somthing wrong... Please try setup command again."
74
+ end
75
+ def wait_until_logs_uploaded
76
+ say('Starting to check uploading from your server.')
77
+ data_port = flydata.data_port.get
78
+ data_port_id = data_port['id']
79
+
80
+ retry_count = 10
81
+ 1.upto(retry_count) do |i|
82
+ if uploaded_successfully?(data_port_id)
83
+ say("Uploading your logs correctly.")
84
+ return true
85
+ end
86
+ say("Waiting logs uploading... (#{i}/#{retry_count})")
87
+ sleep 30
88
+ end
89
+ raise 'Cannot confirm your logs on flydata server. Something wrong..'
90
+ end
91
+
75
92
  def server_ready?
76
93
  data_port = flydata.data_port.get
77
94
  data_port['server_status'] == 'active'
@@ -7,9 +7,8 @@ module Flydata
7
7
  data_entry = choose_data_entry
8
8
  return unless data_entry
9
9
  # Confirm and update
10
- if confirm_setting data_entry
11
- set_log_deletion data_entry
12
- end
10
+ set_log_deletion data_entry if confirm_setting data_entry
11
+ register_crontab
13
12
  end
14
13
 
15
14
  private
@@ -21,7 +20,8 @@ module Flydata
21
20
  return nil
22
21
  end
23
22
  choices = data_entries.map {|e|
24
- "#{e['name']}\t#{e['log_path']}\t -- Log deletion:#{boolToOnOff e['log_deletion']}"
23
+ file_attr = File.writable?(e['log_path']) ? "" : "(read only)"
24
+ "#{e['display_name']}\t#{e['log_path']}\t -- Log deletion:#{boolToOnOff e['log_deletion']} #{file_attr}"
25
25
  }
26
26
  choices << "Cancel"
27
27
 
@@ -35,7 +35,17 @@ module Flydata
35
35
  menu.choices(*choices) {|item| choice = item.split(' ')[0]}
36
36
  end
37
37
  newline
38
- data_entries.select{|e| e['log_path'] == choice}.first
38
+
39
+ data_entry = data_entries.select{|e| e['display_name'] == choice}.first
40
+ return nil unless data_entry
41
+
42
+ if not data_entry['log_deletion'] and not File.writable?(data_entry['log_path'])
43
+ say("Failed to change setting...")
44
+ say(" This path is readonly for current user.")
45
+ say(" Change user or permission, if you want to set log deletion option.")
46
+ return nil
47
+ end
48
+ data_entry
39
49
  end
40
50
  def confirm_setting(data_entry)
41
51
  cur_flag = data_entry['log_deletion']
@@ -65,7 +75,6 @@ module Flydata
65
75
  url = "/data_entries/#{data_entry['id']}"
66
76
  ret = flydata.put(url, param)
67
77
  raise 'Failed to update the log deletion setting.' unless ret['success']
68
- Flydata::Command::Crontab.new.run if !data_entry['log_deletion']
69
78
  puts "Update succeeded!"
70
79
  end
71
80
  end
@@ -26,12 +26,15 @@ module Flydata
26
26
  path = choose_log_path_from_examples
27
27
  case path
28
28
  when OTHER; ask_log_path
29
- else; create_log_entry(path, ask_log_deletion)
29
+ else; create_log_entry(path, ask_log_deletion(path))
30
30
  end
31
31
  newline
32
32
  end while more_entry?
33
33
  end
34
34
 
35
+ # register cron if registered log deletion
36
+ register_crontab
37
+
35
38
  # start client process
36
39
  Flydata::Command::Sender.new.restart
37
40
  end
@@ -43,7 +46,7 @@ module Flydata
43
46
  if data_entries and data_entries.size > 0
44
47
  puts('Registered entries. ')
45
48
  data_entries.each { |data_entry|
46
- say(" - #{data_entry['name']}\t#{data_entry['log_path']}")
49
+ say(" - #{data_entry['display_name']}\t#{data_entry['log_path']}")
47
50
  }
48
51
  true
49
52
  else
@@ -75,13 +78,25 @@ module Flydata
75
78
  loop do
76
79
  path = Readline.readline("Enter the absolute path of your log (return to cancel): ")
77
80
  return if path.empty?
78
- break if FileTest.file?(path) and FileTest.readable?(path)
79
- say(" ! #{path} is not a readable file!")
81
+ if not (FileTest.file?(path) and FileTest.readable?(path))
82
+ say(" ! #{path} is not a readable file!")
83
+ elsif @last_fetched_entries and @last_fetched_entries.any?{|e| e['log_path'] == path}
84
+ say(" ! #{path} has been registered already.")
85
+ else
86
+ break
87
+ end
80
88
  newline
81
89
  end
82
- create_log_entry(path, ask_log_deletion)
90
+ create_log_entry(path, ask_log_deletion(path))
83
91
  end
84
- def ask_log_deletion
92
+ def ask_log_deletion(path)
93
+ unless File.writable?(path)
94
+ say("Skip log deletion setting...")
95
+ say(" This path is readonly for current user.")
96
+ say(" Change user or permission, if you want to set log deletion option.")
97
+ newline
98
+ return
99
+ end
85
100
  say("** Log deletion setting **")
86
101
  say("Flydata has a log deletion feature that flydata will delete old log archives uploaded by flydata automatically.")
87
102
  say("Flydata will delete logs whose last modified timestamp is 7 days ago.")
@@ -90,7 +105,6 @@ module Flydata
90
105
  def create_log_entry(path, log_deletion)
91
106
  data_port = flydata.data_port.get
92
107
  flydata.data_entry.create(data_port_id: data_port['id'], log_path: path, log_deletion: log_deletion)
93
- Flydata::Command::Crontab.new.run if log_deletion
94
108
  say("Process successfuly!") if flydata.response.code == 200
95
109
  end
96
110
  def more_entry?
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.0.1.2011102602
4
+ version: 0.0.1.2011102901
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-26 00:00:00.000000000 Z
12
+ date: 2012-10-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rest-client
@@ -275,7 +275,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
275
275
  version: '0'
276
276
  segments:
277
277
  - 0
278
- hash: 3242420887991988647
278
+ hash: -2910616954756998492
279
279
  required_rubygems_version: !ruby/object:Gem::Requirement
280
280
  none: false
281
281
  requirements: