chef_backup 0.0.1.dev.2 → 0.0.1.dev.3

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: 77676069a215d7829c14023e70d43e71d27581a1
4
- data.tar.gz: e218d8428ec0edb82a440f9003db3035435e539d
3
+ metadata.gz: 09b1eb6deacbd6c56ebe568a9f35f901dc84fd44
4
+ data.tar.gz: 9d46e9ecc8b151b30f84b10ec1b87967d59ed1cf
5
5
  SHA512:
6
- metadata.gz: e3850ccefb42090d4c73decaa3c9c661d50529aee9eb00a667bb97f648337871e2dafa9fbe1ad6c8cbb082f6ccb908a3d8799721da778c133402530fdb7c5d7c
7
- data.tar.gz: d89dc2fb4ef4bc7d95f907e1dec161cb26a0ff2749cee9e8cb1069e823c345d255a42227edd0cf48f638cbc2277d497fedc90689f95102b8f5f4a77599331708
6
+ metadata.gz: fc18b6429543be51b9181a7f41824884729827d4d3b2ff1b9590b0798ee63c4a354af3c55fc87750b643fc4da114884feb7572554e754450b256bffe794482cc
7
+ data.tar.gz: e91dc44182e140a32685ac618ebc5a129b648fa1c2a953529da9c476d579b19df5a6ec7cfc305df224a53d823cf18f75caf0d6fb3c2a8de3d2a5ca31df6aa324
data/.rubocop.yml CHANGED
@@ -11,7 +11,7 @@ Metrics/PerceivedComplexity:
11
11
  Metrics/MethodLength:
12
12
  Max: 40
13
13
  Metrics/AbcSize:
14
- Max: 25
14
+ Max: 30
15
15
  AllCops:
16
16
  Exclude:
17
17
  - 'Guardfile'
data/chef_backup.gemspec CHANGED
@@ -28,6 +28,6 @@ Gem::Specification.new do |spec|
28
28
  spec.add_development_dependency 'rspec', '~> 3.0'
29
29
  spec.add_development_dependency 'guard-rspec'
30
30
  spec.add_development_dependency 'pry-rescue'
31
- spec.add_development_dependency 'rubocop', '0.28'
31
+ spec.add_development_dependency 'rubocop', '>= 0.28'
32
32
  spec.add_development_dependency 'simplecov'
33
33
  end
@@ -1,6 +1,7 @@
1
1
  require 'fileutils'
2
2
  require 'json'
3
3
  require 'time'
4
+ require 'highline/import'
4
5
 
5
6
  # rubocop:disable IndentationWidth
6
7
  module ChefBackup
@@ -122,9 +123,14 @@ class TarBackup
122
123
  log 'Starting Chef Server backup'
123
124
  populate_data_map
124
125
  if backend?
125
- stop_chef_server(except: [:keepalived, :postgresql]) unless online?
126
- dump_db
127
- stop_service(:postgresql) unless online?
126
+ if !online?
127
+ ask_to_go_offline unless offline_permission_granted?
128
+ stop_chef_server(except: [:keepalived, :postgresql])
129
+ dump_db
130
+ stop_service(:postgresql)
131
+ else
132
+ dump_db
133
+ end
128
134
  end
129
135
  write_manifest
130
136
  create_tarball
@@ -165,6 +171,18 @@ class TarBackup
165
171
  # defaults to true
166
172
  private_chef['backup']['always_dump_db']
167
173
  end
174
+
175
+ def offline_permission_granted?
176
+ private_chef['backup']['agree_to_go_offline']
177
+ end
178
+
179
+ def ask_to_go_offline
180
+ msg = 'WARNING: Offline backup mode must stop your Chef server before '
181
+ msg << 'continuing. You can skip this message by passing a "--yes" '
182
+ msg << 'argument. Do you wish to proceed? (y/N):'
183
+
184
+ exit(1) unless ask(msg) =~ /^y/i
185
+ end
168
186
  end
169
187
  end
170
188
  end
@@ -1,4 +1,4 @@
1
1
  # ChefBackup module
2
2
  module ChefBackup
3
- VERSION = '0.0.1.dev.2'
3
+ VERSION = '0.0.1.dev.3'
4
4
  end
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "private_chef": {
3
3
  "backup": {
4
- "strategy": "tar"
4
+ "strategy": "tar",
5
+ "agree_to_go_offline": "true"
5
6
  },
6
7
  "api_version": "11.1.0",
7
8
  "flavor": "ec",
@@ -71,4 +71,22 @@ shared_examples 'a tar based offline backend' do
71
71
  expect(subject).to receive(:dump_db).once
72
72
  subject.backup
73
73
  end
74
+
75
+ context 'when the user has not agreed to go offline' do
76
+ before { private_chef('backup' => { 'agree_to_go_offline' => false }) }
77
+
78
+ it 'prompts the user' do
79
+ expect(subject).to receive(:ask_to_go_offline).once
80
+ subject.backup
81
+ end
82
+ end
83
+
84
+ context 'when the user has agreed to go offline' do
85
+ before { private_chef('backup' => { 'agree_to_go_offline' => true }) }
86
+
87
+ it 'prompts the user' do
88
+ expect(subject).to_not receive(:ask_to_go_offline)
89
+ subject.backup
90
+ end
91
+ end
74
92
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chef_backup
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1.dev.2
4
+ version: 0.0.1.dev.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Cragun
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-26 00:00:00.000000000 Z
11
+ date: 2015-05-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: di-ruby-lvm
@@ -140,14 +140,14 @@ dependencies:
140
140
  name: rubocop
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - '='
143
+ - - ">="
144
144
  - !ruby/object:Gem::Version
145
145
  version: '0.28'
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - '='
150
+ - - ">="
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0.28'
153
153
  - !ruby/object:Gem::Dependency
@@ -233,7 +233,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
233
233
  version: 1.3.1
234
234
  requirements: []
235
235
  rubyforge_project:
236
- rubygems_version: 2.2.2
236
+ rubygems_version: 2.2.3
237
237
  signing_key:
238
238
  specification_version: 4
239
239
  summary: A library to backup a Chef Server