Class: FluentdServer::CLI

Inherits:
Thor
  • Object
show all
Defined in:
lib/fluentd_server/cli.rb

Constant Summary collapse

BASE_DIR =
File.join(Dir.pwd, "fluentd-server")
DATA_DIR =
File.join(BASE_DIR, "data")
LOG_DIR =
File.join(BASE_DIR, "log")
JOB_DIR =
File.join(BASE_DIR, "jobs")
LOG_FILE =
File.join(LOG_DIR, "application.log")
ENV_FILE =
File.join(BASE_DIR, ".env")
PROCFILE =
File.join(BASE_DIR, "Procfile")
CONFIGRU_FILE =
File.join(BASE_DIR, "config.ru")
CONFIG_DIR =
File.join(BASE_DIR, "config")
DEFAULT_DOTENV =
<<-EOS
PORT=5126
HOST=0.0.0.0
DATABASE_URL=sqlite3:#{DATA_DIR}/fluentd_server.db
JOB_DIR=#{JOB_DIR}
LOG_PATH=#{LOG_FILE}
LOG_LEVEL=warn
LOG_SHIFT_AGE=0
LOG_SHIFT_SIZE=1048576
FILE_STORAGE=false
DATA_DIR=#{DATA_DIR}
SYNC_INTERVAL=60
EOS
DEFAULT_PROCFILE =
<<-EOS
web: unicorn -E production -p $PORT -o $HOST -c config/unicorn.conf
job: fluentd-server job-worker
sync: fluentd-server sync-worker
serf: $(gem path serf-td-agent)/bin/serf agent
EOS

Instance Method Summary collapse

Constructor Details

#initialize(args = [], opts = [], config = {}) ⇒ CLI

Returns a new instance of CLI.



40
41
42
# File 'lib/fluentd_server/cli.rb', line 40

def initialize(args = [], opts = [], config = {})
  super(args, opts, config)
end

Instance Method Details

#initObject



56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/fluentd_server/cli.rb', line 56

def init
  Dotenv.load
  require 'fluentd_server/environment'
  require 'rake'
  require 'sinatra/activerecord/rake'
  ActiveRecord::Tasks::DatabaseTasks.db_dir = File.expand_path("../../../db", __FILE__)
  ActiveRecord::Tasks::DatabaseTasks.migrations_paths = [File.expand_path("../../../db/migrate", __FILE__)]
  # ToDo: Fix that db:migrate raises an error in the case of sqlite3 like
  # SQLite3::SQLException: database schema has changed: INSERT INTO "schema_migrations" ("version") VALUES (?)
  # Rake::Task['db:migrate'].invoke
  # Use db:schema:load after generating db/schema.rb by executing db:migrate several times for now
  Rake::Task['db:schema:load'].invoke
  puts 'fluentd-server init finished.'
end

#job_cleanObject



105
106
107
108
109
110
# File 'lib/fluentd_server/cli.rb', line 105

def job_clean
  Dotenv.load
  require 'delayed_job'
  require 'fluentd_server/model'
  Delayed::Job.delete_all
end

#job_workerObject



91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/fluentd_server/cli.rb', line 91

def job_worker
  Dotenv.load
  require 'delayed_job'
  require 'fluentd_server/model'
  worker_options = {
    :min_priority => ENV['MIN_PRIORITY'],
    :max_priority => ENV['MAX_PRIORITY'],
    :queues => (ENV['QUEUES'] || ENV['QUEUE'] || '').split(','),
    :quiet => false
  }
  Delayed::Worker.new(worker_options).start
end

#migrateObject



72
73
74
75
76
77
78
79
80
# File 'lib/fluentd_server/cli.rb', line 72

def migrate
  Dotenv.load
  require 'fluentd_server/environment'
  require 'rake'
  require 'sinatra/activerecord/rake'
  ActiveRecord::Tasks::DatabaseTasks.db_dir = File.expand_path("../../../db", __FILE__)
  ActiveRecord::Tasks::DatabaseTasks.migrations_paths = [File.expand_path("../../../db/migrate", __FILE__)]
  Rake::Task['db:migrate'].invoke
end

#newObject



45
46
47
48
49
50
51
52
53
# File 'lib/fluentd_server/cli.rb', line 45

def new
  FileUtils.mkdir_p(LOG_DIR)
  FileUtils.mkdir_p(JOB_DIR)
  File.write ENV_FILE, DEFAULT_DOTENV
  File.write PROCFILE, DEFAULT_PROCFILE
  FileUtils.cp(File.expand_path("../../../config.ru", __FILE__), CONFIGRU_FILE)
  FileUtils.cp_r(File.expand_path("../../../config", __FILE__), CONFIG_DIR)
  puts 'fluentd-server new finished.'
end

#startObject



83
84
85
86
87
# File 'lib/fluentd_server/cli.rb', line 83

def start
  self.migrate # do migration before start not to forget on updation
  require "foreman/cli"
  Foreman::CLI.new.invoke(:start, [], {})
end

#syncObject



120
121
122
123
124
# File 'lib/fluentd_server/cli.rb', line 120

def sync
  Dotenv.load
  require 'fluentd_server/sync_runner'
  FluentdServer::SyncRunner.run
end

#sync_workerObject



113
114
115
116
117
# File 'lib/fluentd_server/cli.rb', line 113

def sync_worker
  Dotenv.load
  require 'fluentd_server/sync_worker'
  FluentdServer::SyncWorker.start
end

#td_agent_condrestartObject



156
157
158
159
160
# File 'lib/fluentd_server/cli.rb', line 156

def td_agent_condrestart
  Dotenv.load
  require 'fluentd_server/model'
  system("#{::Task.serf_path} event td-agent-condrestart")
end

#td_agent_configtestObject



171
172
173
174
175
176
# File 'lib/fluentd_server/cli.rb', line 171

def td_agent_configtest
  Dotenv.load
  require 'fluentd_server/model'
  # ::Task.create_and_delete(name: 'Configtest').configtest # using delayed_job
  system("#{::Task.serf_path} query td-agent-configtest")
end

#td_agent_reloadObject



141
142
143
144
145
# File 'lib/fluentd_server/cli.rb', line 141

def td_agent_reload
  Dotenv.load
  require 'fluentd_server/model'
  system("#{::Task.serf_path} event td-agent-reload")
end

#td_agent_restartObject



148
149
150
151
152
153
# File 'lib/fluentd_server/cli.rb', line 148

def td_agent_restart
  Dotenv.load
  require 'fluentd_server/model'
  # ::Task.create_and_delete(name: 'Restart').restart # using delayed_job
  system("#{::Task.serf_path} event td-agent-restart")
end

#td_agent_startObject



127
128
129
130
131
# File 'lib/fluentd_server/cli.rb', line 127

def td_agent_start
  Dotenv.load
  require 'fluentd_server/model'
  system("#{::Task.serf_path} event td-agent-start")
end

#td_agent_statusObject



163
164
165
166
167
168
# File 'lib/fluentd_server/cli.rb', line 163

def td_agent_status
  Dotenv.load
  require 'fluentd_server/model'
  # ::Task.create_and_delete(name: 'Status').status # using delayed_job
  system("#{::Task.serf_path} query td-agent-status")
end

#td_agent_stopObject



134
135
136
137
138
# File 'lib/fluentd_server/cli.rb', line 134

def td_agent_stop
  Dotenv.load
  require 'fluentd_server/model'
  system("#{::Task.serf_path} event td-agent-stop")
end