luban 0.8.6 → 0.8.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b563d81bdac67bae927aae3873d245713af281db
4
- data.tar.gz: 342b20e4251bc4edbfea4ef0bbfc928ad85dd0f1
3
+ metadata.gz: 8efefadae50e7e28a9576ead9092d2d5d951349d
4
+ data.tar.gz: e0a8a86b1f33019e2953ca640cb1c5d4121aeb18
5
5
  SHA512:
6
- metadata.gz: 542d60b312f8b980320b2db1cf3613d57ff5943b9af92397038b75ea36669866002eb490b75f442c359ecc7e1dfbcf5dd1f6c0ab7758016c8830f7094c9fb697
7
- data.tar.gz: 59ef6d0cfcf330b5d194a266ff65bd64715c6571e99854abaf060fb85e8b242574a5a125e4a1f63daa71a289e4674841892fe18112d1aa0d628f965db05f7072
6
+ metadata.gz: 0b79a40a13f3301ff09c114d6ecc8e9e3624f43d2206bc3f1afe96efef323631d66e2972c8686d80479866f847a3d067ad01429b5db382e3d64e2719d3d5f4c0
7
+ data.tar.gz: bde512704035dfdc76240f7cf05dede43a969c87d7be891db9162d2a2cc79fffa61a4aef7de00009f511f2ee419021314a08a0397b4cf1071668e58fb5fce36c
data/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Change log
2
2
 
3
+ ## Version 0.8.7 (Sept 27, 2016)
4
+
5
+ Minor enhancements:
6
+ * Added option #format to specify archive file format explicitly
7
+ * Added subcommands to manage process monitor: #monitor_on, #monitor_off and #monitor_reload
8
+ * Refactored convenient methods to handle process monitor
9
+
10
+ Bug fixes:
11
+ * Fixed local variables in global context in .envrc/.unset_envrc files to void bash warnings
12
+ * Skipped md5 checksum calculation for gem packages if md5 has been generated previously
13
+ * Handled result update more appropriately
14
+
3
15
  ## Version 0.8.6 (Sept 23, 2016)
4
16
 
5
17
  Bug fixes:
@@ -7,6 +7,7 @@ module Luban
7
7
  include Luban::Deployment::Command::Tasks::Install
8
8
  include Luban::Deployment::Command::Tasks::Deploy
9
9
  include Luban::Deployment::Command::Tasks::Control
10
+ include Luban::Deployment::Command::Tasks::Monitor
10
11
  include Luban::Deployment::Command::Tasks::Crontab
11
12
 
12
13
  attr_reader :packages
@@ -201,7 +202,8 @@ module Luban
201
202
  deploy_cronjobs(args: args, opts: opts)
202
203
  end
203
204
 
204
- Luban::Deployment::Command::Tasks::Control::Actions.each do |action|
205
+ (Luban::Deployment::Command::Tasks::Control::Actions |
206
+ Luban::Deployment::Command::Tasks::Monitor::Actions).each do |action|
205
207
  define_method(action) do |args:, opts:|
206
208
  show_app_environment
207
209
  send("service_#{action}!", args: args, opts: opts)
@@ -196,7 +196,7 @@ module Luban
196
196
  gem_name = File.basename(gem_file)
197
197
  md5_file = "#{gem_file}.md5"
198
198
  gems[gem_name] =
199
- if file?(md5_file)
199
+ if file?(workspace_path.join(md5_file))
200
200
  gems[gem_name] = capture(:cat, md5_file)
201
201
  else
202
202
  md5_for_file(gem_file).tap { |md5|
@@ -32,7 +32,7 @@ module Luban
32
32
  end
33
33
 
34
34
  def release
35
- within(clone_path) { test(git_cmd, :archive, version, "--prefix=#{release_tag}/ -o #{release_package_path}") }
35
+ within(clone_path) { test(git_cmd, :archive, version, "--format=#{release_package_extname} --prefix=#{release_tag}/ -o #{release_package_path}") }
36
36
  end
37
37
 
38
38
  def branch?
@@ -101,12 +101,6 @@ module Luban
101
101
 
102
102
  def controllable?; true; end
103
103
 
104
- def process_monitor_via(monitor, env: "uber/lubmon")
105
- monitor = monitor.to_s.downcase
106
- env = "#{stage}.#{env.to_s.downcase}"
107
- process_monitor name: monitor, env: env
108
- end
109
-
110
104
  protected
111
105
 
112
106
  def setup_control_tasks
@@ -142,6 +136,38 @@ module Luban
142
136
  end
143
137
  end
144
138
 
139
+ module Monitor
140
+ Actions = %i(monitor_on monitor_off monitor_reload)
141
+ Actions.each do |action|
142
+ define_method(action) do |args:, opts:|
143
+ raise NotImplementedError, "#{self.class.name}##{__method__} is an abstract method."
144
+ end
145
+ end
146
+
147
+ def monitorable?
148
+ controllable? and monitor_defined? and !monitor_itself?
149
+ end
150
+
151
+ protected
152
+
153
+ def setup_monitor_tasks
154
+ task :monitor_on do
155
+ desc "Turn on process monitor"
156
+ action! :monitor_on
157
+ end
158
+
159
+ task :monitor_off do
160
+ desc "Turn off process monitor"
161
+ action! :monitor_off
162
+ end
163
+
164
+ task :monitor_reload do
165
+ desc "Reload monitor configuration"
166
+ action! :monitor_reload
167
+ end
168
+ end
169
+ end
170
+
145
171
  module Crontab
146
172
  Actions = %i(update_cronjobs list_cronjobs)
147
173
  Actions.each do |action|
@@ -201,6 +227,7 @@ module Luban
201
227
  def installable?; false; end
202
228
  def deployable?; false; end
203
229
  def controllable?; false; end
230
+ def monitorable?; false; end
204
231
 
205
232
  def task(cmd, **opts, &blk)
206
233
  command(cmd, **opts, &blk).tap do |c|
@@ -344,6 +371,7 @@ module Luban
344
371
  setup_install_tasks if installable?
345
372
  setup_deploy_tasks if deployable?
346
373
  setup_control_tasks if controllable?
374
+ setup_monitor_tasks if monitorable?
347
375
  end
348
376
 
349
377
  %i(install deploy control).each do |action|
@@ -71,6 +71,8 @@ module Luban
71
71
  include Luban::Deployment::Parameters::Application
72
72
  include Luban::Deployment::Command::Tasks::Install
73
73
 
74
+ def monitorable?; false; end
75
+
74
76
  def find_project; parent.parent; end
75
77
  def find_application(name = nil)
76
78
  name.nil? ? parent : find_project.apps[name.to_sym]
@@ -3,6 +3,7 @@ module Luban
3
3
  module Service
4
4
  class Base < Luban::Deployment::Package::Base
5
5
  include Luban::Deployment::Command::Tasks::Control
6
+ include Luban::Deployment::Command::Tasks::Monitor
6
7
 
7
8
  def self.service_action(action, dispatch_to: nil, as: action, locally: false, &blk)
8
9
  define_method(action) do |args:, opts:|
@@ -18,7 +19,8 @@ module Luban
18
19
  end
19
20
  end
20
21
 
21
- Luban::Deployment::Command::Tasks::Control::Actions.each do |action|
22
+ (Luban::Deployment::Command::Tasks::Control::Actions |
23
+ Luban::Deployment::Command::Tasks::Monitor::Actions).each do |action|
22
24
  service_action action, dispatch_to: :controller
23
25
  end
24
26
  %i(init_profile update_profile).each do |action|
@@ -33,18 +33,6 @@ module Luban
33
33
  end
34
34
  end
35
35
 
36
- def process_monitorable?
37
- process_monitor_defined? and !process_monitor?
38
- end
39
-
40
- def process_monitor_defined?
41
- !process_monitor[:name].nil?
42
- end
43
-
44
- def process_monitor?
45
- env_name == process_monitor[:env]
46
- end
47
-
48
36
  def monitor_executable
49
37
  @monitor_executable ||= env_path.join(process_monitor[:env], 'bin',
50
38
  process_monitor[:name])
@@ -64,10 +52,7 @@ module Luban
64
52
  output = start_process!
65
53
  if check_until { process_started? }
66
54
  update_result "Start #{service_full_name}: [OK] #{output}"
67
- if process_monitorable?
68
- reload_monitor_process
69
- monitor_process
70
- end
55
+ monitor_process if monitorable?
71
56
  else
72
57
  remove_orphaned_pid_file
73
58
  update_result "Start #{service_full_name}: [FAILED] #{output}",
@@ -81,7 +66,7 @@ module Luban
81
66
  return
82
67
  end
83
68
 
84
- unmonitor_process if process_monitorable?
69
+ unmonitor_process if monitorable?
85
70
  output = stop_process! || 'OK'
86
71
  if check_until { process_stopped? }
87
72
  update_result "Stop #{service_full_name}: [OK] #{output}"
@@ -94,7 +79,7 @@ module Luban
94
79
 
95
80
  def restart_process
96
81
  if process_started?
97
- unmonitor_process if process_monitorable?
82
+ unmonitor_process if monitorable?
98
83
  output = stop_process!
99
84
  if check_until { process_stopped? }
100
85
  remove_orphaned_pid_file
@@ -110,7 +95,7 @@ module Luban
110
95
  output = start_process!
111
96
  if check_until { process_started? }
112
97
  update_result "Restart #{service_full_name}: [OK] #{output}"
113
- monitor_process if process_monitorable?
98
+ monitor_process if monitorable?
114
99
  else
115
100
  remove_orphaned_pid_file
116
101
  update_result "Restart #{service_full_name}: [FAILED] #{output}",
@@ -132,7 +117,7 @@ module Luban
132
117
  return
133
118
  end
134
119
 
135
- unmonitor_process if process_monitorable?
120
+ unmonitor_process if monitorable?
136
121
  output = kill_process!
137
122
  if check_until { process_stopped? }
138
123
  update_result "Kill #{service_full_name}: [OK] #{output}"
@@ -142,27 +127,39 @@ module Luban
142
127
  remove_orphaned_pid_file
143
128
  end
144
129
 
145
- def monitor_process
130
+ def monitor_on
131
+ monitor_process(output: :update_result)
132
+ end
133
+
134
+ def monitor_off
135
+ unmonitor_process(output: :update_result)
136
+ end
137
+
138
+ def monitor_reload
139
+ reload_monitor_process(output: :update_result)
140
+ end
141
+
142
+ def monitor_process(output: :info)
146
143
  if monitor_process!
147
- info "Turned on process monitor for #{service_entry}"
144
+ send(output, "Turned on process monitor for #{service_entry}")
148
145
  else
149
- info "Failed to turn on process monitor for #{service_entry}"
146
+ send(output, "Failed to turn on process monitor for #{service_entry}")
150
147
  end
151
148
  end
152
149
 
153
- def unmonitor_process
150
+ def unmonitor_process(output: :info)
154
151
  if unmonitor_process!
155
- info "Turned off process monitor for #{service_entry}"
152
+ send(output, "Turned off process monitor for #{service_entry}")
156
153
  else
157
- info "Failed to turn off process monitor for #{service_entry}"
154
+ send(output, "Failed to turn off process monitor for #{service_entry}")
158
155
  end
159
156
  end
160
157
 
161
- def reload_monitor_process
158
+ def reload_monitor_process(output: :info)
162
159
  if reload_monitor_process!
163
- info "Reloaded process monitor for #{service_entry}"
160
+ send(output, "Reloaded process monitor for #{service_entry}")
164
161
  else
165
- info "Failed to reload process monitor for #{service_entry}"
162
+ send(output, "Failed to reload process monitor for #{service_entry}")
166
163
  end
167
164
  end
168
165
 
@@ -172,7 +169,7 @@ module Luban
172
169
  protected
173
170
 
174
171
  def init
175
- load_process_monitor_commands if process_monitorable?
172
+ load_process_monitor_commands if monitorable?
176
173
  end
177
174
 
178
175
  def load_process_monitor_commands
@@ -74,6 +74,14 @@ module Luban
74
74
  parameter :ssh_options
75
75
  parameter :use_sudo
76
76
 
77
+ def process_monitor_via(monitor, env: "uber/lubmon")
78
+ monitor = monitor.to_s.downcase
79
+ env = "#{stage}.#{env.to_s.downcase}"
80
+ process_monitor name: monitor, env: env
81
+ end
82
+
83
+ def monitor_defined?; !process_monitor.empty?; end
84
+
77
85
  protected
78
86
 
79
87
  def set_default_project_parameters
@@ -95,7 +103,7 @@ module Luban
95
103
  end
96
104
 
97
105
  def validate_project_parameters
98
- unless process_monitor.empty?
106
+ if monitor_defined?
99
107
  if process_monitor[:name].nil?
100
108
  abort "Aborted! Please specify the process monitor."
101
109
  end
@@ -113,6 +121,18 @@ module Luban
113
121
  parameter :scm_role
114
122
  parameter :logrotate_files
115
123
 
124
+ def env_name
125
+ @env_name ||= "#{stage}.#{project}/#{application}"
126
+ end
127
+
128
+ def monitor_itself?
129
+ env_name == process_monitor[:env]
130
+ end
131
+
132
+ def monitorable?
133
+ monitor_defined? and !monitor_itself?
134
+ end
135
+
116
136
  protected
117
137
 
118
138
  def set_default_application_parameters
@@ -10,7 +10,7 @@ if [ -n "${LUBAN_ROOT:+x}" ]; then
10
10
  if [[ "$LUBAN_ROOT" == "<%= app_path %>" ]]; then
11
11
  echo_line "Environment <%= env_name %> has ALREADY been activated!"
12
12
  else
13
- local current_env=${LUBAN_ROOT##*env/}
13
+ current_env=${LUBAN_ROOT##*env/}
14
14
  echo_line "Environment $current_env is STILL active!"
15
15
  echo_line "Please de-activate it first:"
16
16
  echo_line "\tunset_lubenv $current_env"
@@ -16,7 +16,7 @@ if [ -n "${LUBAN_ROOT:+x}" ]; then
16
16
  <%- end -%>
17
17
  echo_line "Environment <%= env_name %> is de-activated!"
18
18
  else
19
- local current_env=${LUBAN_ROOT##*env/}
19
+ current_env=${LUBAN_ROOT##*env/}
20
20
  echo_line "ACTUALLY, environment $curent_env is active!"
21
21
  echo_line "Please run the following command instead to de-activate it:"
22
22
  echo_line "\tunset_lubenv $current_env"
@@ -1,5 +1,5 @@
1
1
  module Luban
2
2
  module Deployment
3
- VERSION = "0.8.6"
3
+ VERSION = "0.8.7"
4
4
  end
5
5
  end
@@ -25,10 +25,6 @@ module Luban
25
25
  def osx?; os_name == 'Darwin'; end
26
26
  def linux?; os_name == 'Linux'; end
27
27
 
28
- def env_name
29
- @env_name ||= "#{stage}.#{project}/#{application}"
30
- end
31
-
32
28
  def target_name; task.opts.name; end
33
29
  def target_full_name; "#{target_name}-#{target_version}"; end
34
30
 
@@ -71,8 +67,8 @@ module Luban
71
67
 
72
68
  def update_result(message = nil, status: :succeeded, level: :info, **attrs)
73
69
  task.result.tap do |r|
74
- r.status = status
75
- r.level = level
70
+ r.status = status unless status.nil? or !r.status.nil?
71
+ r.level = level unless level.nil? or !r.level.nil?
76
72
  r.message = message unless message.nil? or !r.message.nil?
77
73
  attrs.each_pair { |k, v| r.send("#{k}=", v) }
78
74
  unless message.nil? or message.empty?
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: luban
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.6
4
+ version: 0.8.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rubyist Lei
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-09-23 00:00:00.000000000 Z
11
+ date: 2016-09-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: luban-cli