pvcglue 0.1.7 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MjBjYjE4YzY4NTA4NDc2YTNlODBhNjVlZDc3Yjc3NWIzMjU3YjA1MA==
4
+ MzZlZDE3ZjViMWE0NzUwNTMwNGU3NWZjODE2ZDQyZjA5MTkwM2E1NA==
5
5
  data.tar.gz: !binary |-
6
- MjE5YWFlZTdhZmJjZDg0NTM0YmUyZDQyYjA4Nzg3YTFjYzAwZDg0Yw==
6
+ MzFjY2E0YTMyMzU3YzQ1NWZlNWU3ZmUyZjNjOTc2MTg3YzY4Yzc0Yg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- Y2Y5Mjc2NmM0ZTk1YWNkYTY4ZGRiZTZlYTg2N2UzYmE0NjdjMGVmMGViMDJl
10
- YmRmZGJhZjkyMGNmN2VjNTg2NjBiZGIzYTg1OGIxNzBiN2EyN2UxMTg2YmEw
11
- MjVjNmQ1ZmM0N2MxNzAyOTBhZGRkMTlkNDNiNGFmMDBkOTAxYjQ=
9
+ MWFkYmU3NDlmNjRjODY3MWQyZDNkM2Y3YzYwNmY4MGZjMzcwOTRkYjNiMDFk
10
+ MTA4ZjUxZDhkYWViNjcwZTY3OTIzN2I1YjhjMzY4NGEyOWU5NmNlOTc0YmE4
11
+ MzlkOWEzMGZiNjA5ZTVmZWFlYjYwY2IwNDNlYzc1NGNhNTMwMzY=
12
12
  data.tar.gz: !binary |-
13
- ZWNiNTA4NjE2NjczNDEwNTM2MjMwZWI4YTI3ZGE0MTBhMTVjOTFhM2NlMzE4
14
- YzExNmZkZWM1ZjAyZGM3MDdhNjE0YWEwY2JjMDhmNDU0YzlmZTUwN2ZhN2Iz
15
- ZWJjMzQ3NDA0ZDhkOTcyMmJlZWViZTRkMTUwN2VkOWEzNzI4M2U=
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 do
41
- gem 'pvcglue', "~> 0.1.0", :github => 'talyric/pvcglue', :branch => 'master', :require => false
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
@@ -10,4 +10,5 @@ end
10
10
 
11
11
  # puts ARGV.inspect
12
12
 
13
- Pvcglue::CLI.start
13
+ Pvcglue::CLI.start
14
+ puts "Done."
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 $bypass_test no;
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
- set $bypass_test yes;
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 $maintenance off;
17
- set $bypass_test "${bypass_test}yes";
24
+ set $ip_test ip_match;
18
25
  }
19
26
 
20
- if ($bypass_test = yesyes) {
21
- set $maintenance_bypass on; # only add header when maintenance is on and the remote address is a dev ip address
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/.*) {
@@ -1,3 +1,3 @@
1
1
  module Pvcglue
2
- VERSION = "0.1.7"
2
+ VERSION = "0.1.8"
3
3
  end
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.7
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-22 00:00:00.000000000 Z
11
+ date: 2014-07-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler