pvcglue 0.1.7 → 0.1.8
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 +8 -8
- data/README.md +17 -7
- data/bin/pvc +2 -1
- data/lib/pvcglue/cli.rb +17 -0
- data/lib/pvcglue/cloud.rb +6 -1
- data/lib/pvcglue/packages/role_lb.rb +10 -0
- data/lib/pvcglue/templates/maintenance_mode.erb +17 -6
- data/lib/pvcglue/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MzZlZDE3ZjViMWE0NzUwNTMwNGU3NWZjODE2ZDQyZjA5MTkwM2E1NA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MzFjY2E0YTMyMzU3YzQ1NWZlNWU3ZmUyZjNjOTc2MTg3YzY4Yzc0Yg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MWFkYmU3NDlmNjRjODY3MWQyZDNkM2Y3YzYwNmY4MGZjMzcwOTRkYjNiMDFk
|
10
|
+
MTA4ZjUxZDhkYWViNjcwZTY3OTIzN2I1YjhjMzY4NGEyOWU5NmNlOTc0YmE4
|
11
|
+
MzlkOWEzMGZiNjA5ZTVmZWFlYjYwY2IwNDNlYzc1NGNhNTMwMzY=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MjM3NDQ2MmZmMTM2NGExODQzYWE0MzIwOWJkNTYzZDlhMjQzOTRmZWQ1NjIz
|
14
|
+
MzJlMzEzZmFjY2Q4NDFmZWE0NWY3NjVlYjRmZTZhNTRjMTkyYWMxOTE4YmRl
|
15
|
+
NTMyMWViNDRiOTMxNzZhNzYxYTU0NzBjYWM1NjNjNzY3ODBhYjM=
|
data/README.md
CHANGED
@@ -37,14 +37,9 @@ https://github.com/radar/guides/blob/master/gem-development.md
|
|
37
37
|
|
38
38
|
Add this line to your application's Gemfile:
|
39
39
|
|
40
|
-
group :development
|
41
|
-
|
40
|
+
gem 'pvcglue', "~> 0.1.7", :group => :development
|
41
|
+
gem 'pvcglue_dbutils', "~> 0.5.3"
|
42
42
|
|
43
|
-
# This should be used once gem is 'official' :)
|
44
|
-
#gem 'pvcglue'
|
45
|
-
end
|
46
|
-
|
47
|
-
gem 'pvcglue_dbutils', "~> 0.5.1", :github => 'talyric/pvcglue_dbutils', :branch => 'master' # must be available in all environments
|
48
43
|
|
49
44
|
And then execute:
|
50
45
|
|
@@ -58,6 +53,21 @@ Or install it yourself as:
|
|
58
53
|
|
59
54
|
TODO: Write usage instructions here
|
60
55
|
|
56
|
+
## Developing
|
57
|
+
|
58
|
+
To use locally committed gem, use
|
59
|
+
|
60
|
+
bundle config local.pvcglue ~/projects/pvcglue
|
61
|
+
|
62
|
+
and
|
63
|
+
|
64
|
+
bundle config --delete local.pvcglue
|
65
|
+
|
66
|
+
to restore using remote repo. See http://ryanbigg.com/2013/08/bundler-local-paths/ and http://bundler.io/v1.3/bundle_config.html
|
67
|
+
|
68
|
+
gem 'pvcglue', "~> 0.1.5", :github => 'talyric/pvcglue', :branch => 'master', :group => :development
|
69
|
+
gem 'pvcglue_dbutils', "~> 0.5.2", :github => 'talyric/pvcglue_dbutils', :branch => 'master' # must be available in all environments
|
70
|
+
|
61
71
|
## Contributing
|
62
72
|
|
63
73
|
1. Fork it
|
data/bin/pvc
CHANGED
data/lib/pvcglue/cli.rb
CHANGED
@@ -111,6 +111,23 @@ module Pvcglue
|
|
111
111
|
maintenance(mode)
|
112
112
|
end
|
113
113
|
|
114
|
+
desc "bypass", "enable or disable maintenance mode bypass for developers"
|
115
|
+
method_option :stage, :required => true, :aliases => "-s"
|
116
|
+
|
117
|
+
def bypass(mode)
|
118
|
+
raise(Thor::Error, "invalid maintenance bypass mode :( (Hint: try on or off.)") unless mode.in?(%w(on off))
|
119
|
+
Pvcglue.cloud.bypass_mode = mode
|
120
|
+
Pvcglue::Packages.apply(:bypass_mode, :maintenance, Pvcglue.cloud.nodes_in_stage('lb'))
|
121
|
+
end
|
122
|
+
|
123
|
+
desc "b", "enable or disable maintenance mode bypass for developers"
|
124
|
+
method_option :stage, :required => true, :aliases => "-s"
|
125
|
+
|
126
|
+
def b(mode)
|
127
|
+
bypass(mode)
|
128
|
+
end
|
129
|
+
|
130
|
+
|
114
131
|
desc "sh", "run interactive shell on node"
|
115
132
|
method_option :stage, :required => true, :aliases => "-s"
|
116
133
|
|
data/lib/pvcglue/cloud.rb
CHANGED
@@ -7,6 +7,7 @@ module Pvcglue
|
|
7
7
|
attr_accessor :current_node
|
8
8
|
attr_accessor :current_hostname
|
9
9
|
attr_accessor :maintenance_mode
|
10
|
+
attr_accessor :bypass_mode
|
10
11
|
attr_accessor :stage_env
|
11
12
|
attr_accessor :passenger_ruby
|
12
13
|
attr_accessor :port_in_node_context
|
@@ -134,6 +135,10 @@ module Pvcglue
|
|
134
135
|
File.join(maintenance_files_dir, 'maintenance.on')
|
135
136
|
end
|
136
137
|
|
138
|
+
def maintenance_bypass_mode_file_name
|
139
|
+
File.join(maintenance_files_dir, 'maintenance_bypass.off')
|
140
|
+
end
|
141
|
+
|
137
142
|
def deploy_to_app_current_temp_dir
|
138
143
|
File.join(deploy_to_app_current_dir, 'tmp')
|
139
144
|
end
|
@@ -250,7 +255,7 @@ module Pvcglue
|
|
250
255
|
case context
|
251
256
|
when :bootstrap, :manager
|
252
257
|
port = "22"
|
253
|
-
when :env, :build, :shell, :deploy
|
258
|
+
when :env, :build, :shell, :deploy, :maintenance
|
254
259
|
port = data[app_name][:ssh_allowed_from_all_port] || "22"
|
255
260
|
else
|
256
261
|
raise "Context not specified or invalid"
|
@@ -52,6 +52,16 @@ package 'maintenance_mode' do
|
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
55
|
+
package 'bypass_mode' do
|
56
|
+
apply do
|
57
|
+
if Pvcglue.cloud.bypass_mode == 'off'
|
58
|
+
run "touch #{Pvcglue.cloud.maintenance_bypass_mode_file_name}"
|
59
|
+
else
|
60
|
+
run "rm #{Pvcglue.cloud.maintenance_bypass_mode_file_name}"
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
55
65
|
package 'ssl-cert' do
|
56
66
|
apply do
|
57
67
|
if Pvcglue.cloud.ssl_mode == :load_balancer_force_ssl
|
@@ -4,21 +4,32 @@
|
|
4
4
|
|
5
5
|
set $maintenance off;
|
6
6
|
set $maintenance_bypass off;
|
7
|
+
|
7
8
|
# https://blog.ed.gs/2013/01/25/nginx-multiple-if-statements/
|
8
|
-
set $
|
9
|
+
set $maintenance_test maint_off;
|
10
|
+
set $bypass_test bypass_on;
|
11
|
+
set $ip_test ip_unmatched;
|
12
|
+
set $all_tests no;
|
9
13
|
|
10
14
|
if (-f $document_root/maintenance/maintenance.on) {
|
15
|
+
set $maintenance_test maint_on;
|
11
16
|
set $maintenance on;
|
12
|
-
|
17
|
+
}
|
18
|
+
|
19
|
+
if (-f $document_root/maintenance/maintenance_bypass.off) {
|
20
|
+
set $bypass_test bypass_off;
|
13
21
|
}
|
14
22
|
|
15
23
|
if ($remote_addr ~ <%= Pvcglue.cloud.dev_ip_addresses.join('|').gsub('.', '\.') %>) {
|
16
|
-
set $
|
17
|
-
set $bypass_test "${bypass_test}yes";
|
24
|
+
set $ip_test ip_match;
|
18
25
|
}
|
19
26
|
|
20
|
-
|
21
|
-
|
27
|
+
set $all_tests "${maintenance_test}__${bypass_test}__${ip_test}";
|
28
|
+
|
29
|
+
|
30
|
+
if ($all_tests = maint_on__bypass_on__ip_match) {
|
31
|
+
set $maintenance off;
|
32
|
+
set $maintenance_bypass on; # only add header when maintenance is on and the remote address is a dev ip address and bypass is on
|
22
33
|
}
|
23
34
|
|
24
35
|
if ($uri ~ ^/maintenance/.*) {
|
data/lib/pvcglue/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pvcglue
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Lyric
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-07-
|
11
|
+
date: 2014-07-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|