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