luban 0.8.6 → 0.8.7

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 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