kumo_dockercloud 2.2.0 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +8 -0
- data/lib/kumo_dockercloud.rb +1 -0
- data/lib/kumo_dockercloud/console_jockey.rb +36 -0
- data/lib/kumo_dockercloud/environment.rb +5 -1
- data/lib/kumo_dockercloud/version.rb +1 -1
- data/spec/kumo_dockercloud/console_jockey_spec.rb +29 -0
- data/spec/kumo_dockercloud/environment_spec.rb +28 -6
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d871a5f98e09f8794d61c9b79c7742afe3b48f3b
|
4
|
+
data.tar.gz: 5d88756a089dc80cba87a897e0d82f2018710c9b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5ba411d51395fc01b3c240c40dbe4058d977408abcfb6a263323922fd8950459b5509839d69f255745667cb97e64fc1ac51ca33a916c309928007ee50941b363
|
7
|
+
data.tar.gz: bcd443b5004db702ecf96eca9f18ff1c746f7c79b79e019fdffec6bb4641f21c9e30feaa4f3e85180bf67aab47d76d73079caa088d4cb5fb4d944f9553a36349
|
data/README.md
CHANGED
@@ -47,3 +47,11 @@ Changes to the gem can be manually tested end to end in a project that uses the
|
|
47
47
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
48
48
|
4. Push to the branch (`git push origin my-new-feature`)
|
49
49
|
5. Create a new Pull Request
|
50
|
+
|
51
|
+
## Changelog
|
52
|
+
|
53
|
+
This section records potentially breaking changes to the API or User Experience.
|
54
|
+
|
55
|
+
### Version 3.0.0
|
56
|
+
|
57
|
+
Destroying a stack now requires user confirmation at the console before the action will be carried out.
|
data/lib/kumo_dockercloud.rb
CHANGED
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'timeout'
|
2
|
+
|
3
|
+
module KumoDockerCloud
|
4
|
+
class ConsoleJockey
|
5
|
+
|
6
|
+
def self.flash_message(message)
|
7
|
+
puts "\n"
|
8
|
+
puts "###################=============================------------"
|
9
|
+
puts message
|
10
|
+
puts "------------=============================###################"
|
11
|
+
puts "\n"
|
12
|
+
|
13
|
+
$stdout.flush
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.write_line(message)
|
17
|
+
puts message
|
18
|
+
|
19
|
+
$stdout.flush
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.get_confirmation(timeout=30)
|
23
|
+
begin
|
24
|
+
status = Timeout::timeout(timeout) {
|
25
|
+
STDIN.gets.chomp
|
26
|
+
}
|
27
|
+
rescue
|
28
|
+
status = false
|
29
|
+
end
|
30
|
+
|
31
|
+
proceed = status == "yes"
|
32
|
+
proceed ? puts('Proceeding.') : puts('Aborted!')
|
33
|
+
proceed
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -3,10 +3,11 @@ require 'erb'
|
|
3
3
|
require 'tempfile'
|
4
4
|
require 'forwardable'
|
5
5
|
|
6
|
+
require_relative 'console_jockey'
|
6
7
|
require_relative 'docker_cloud_api'
|
7
|
-
require_relative 'state_validator'
|
8
8
|
require_relative 'environment_config'
|
9
9
|
require_relative 'stack_file'
|
10
|
+
require_relative 'state_validator'
|
10
11
|
|
11
12
|
#TODO refactor this to use the new checker inside Service
|
12
13
|
module KumoDockerCloud
|
@@ -19,6 +20,7 @@ module KumoDockerCloud
|
|
19
20
|
@env_vars = params.fetch(:env_vars, {})
|
20
21
|
@stack_template_path = params.fetch(:stack_template_path)
|
21
22
|
@timeout = params.fetch(:timeout, 120)
|
23
|
+
@confirmation_timeout = params.fetch(:confirmation_timeout, 30)
|
22
24
|
|
23
25
|
app_name = params.fetch(:app_name)
|
24
26
|
@config = EnvironmentConfig.new(app_name: app_name, env_name: @env_name, config_path: params.fetch(:config_path))
|
@@ -39,6 +41,8 @@ module KumoDockerCloud
|
|
39
41
|
end
|
40
42
|
|
41
43
|
def destroy
|
44
|
+
ConsoleJockey.flash_message "Warning! You are about to delete the Docker Cloud Stack #{stack_name}, enter 'yes' to continue."
|
45
|
+
return unless ConsoleJockey.get_confirmation(@confirmation_timeout)
|
42
46
|
run_command("docker-cloud stack terminate --sync #{stack_name}")
|
43
47
|
end
|
44
48
|
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'ostruct'
|
3
|
+
|
4
|
+
describe KumoDockerCloud::ConsoleJockey do
|
5
|
+
describe "#get_confirmation" do
|
6
|
+
let(:timeout) { 0.5 }
|
7
|
+
subject { described_class }
|
8
|
+
|
9
|
+
context 'no timeout' do
|
10
|
+
|
11
|
+
it 'returns true if user enters yes' do
|
12
|
+
allow(STDIN).to receive(:gets) { 'yes'}
|
13
|
+
expect(subject.get_confirmation(timeout)).to be true
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'returns false if user enters anything other than yes' do
|
17
|
+
allow(STDIN).to receive(:gets) { 'aoisdjofa'}
|
18
|
+
expect(subject.get_confirmation).to be false
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'timeout' do
|
23
|
+
it 'returns false if there is a timeout' do
|
24
|
+
expect(subject.get_confirmation(timeout)).to be false
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
@@ -15,10 +15,11 @@ describe KumoDockerCloud::Environment do
|
|
15
15
|
}
|
16
16
|
}
|
17
17
|
}
|
18
|
-
|
18
|
+
let(:full_stack_name) { "#{app_name}-test" }
|
19
|
+
let(:confirmation_timeout) { 0.5 }
|
19
20
|
let(:stack_template_path) { File.join(__dir__, '../fixtures/stack.yml.erb') }
|
20
21
|
|
21
|
-
let(:params) { {name: 'test', env_vars: env_vars, app_name: app_name, config_path: 'a path', stack_template_path: stack_template_path} }
|
22
|
+
let(:params) { {name: 'test', env_vars: env_vars, app_name: app_name, config_path: 'a path', stack_template_path: stack_template_path, confirmation_timeout: confirmation_timeout} }
|
22
23
|
|
23
24
|
subject(:env) { described_class.new(params) }
|
24
25
|
|
@@ -29,9 +30,6 @@ describe KumoDockerCloud::Environment do
|
|
29
30
|
|
30
31
|
describe "#apply" do
|
31
32
|
subject { env.apply }
|
32
|
-
|
33
|
-
let(:full_stack_name) { "#{app_name}-test" }
|
34
|
-
|
35
33
|
before do
|
36
34
|
allow(config).to receive(:image_tag).and_return('latest')
|
37
35
|
allow(env).to receive(:evaluate_command).and_return app_name
|
@@ -60,7 +58,6 @@ describe KumoDockerCloud::Environment do
|
|
60
58
|
end
|
61
59
|
|
62
60
|
describe "waiting for running" do
|
63
|
-
|
64
61
|
let(:state_validator) { double(KumoDockerCloud::StateValidator, wait_for_state: nil) }
|
65
62
|
|
66
63
|
before do
|
@@ -89,4 +86,29 @@ describe KumoDockerCloud::Environment do
|
|
89
86
|
subject
|
90
87
|
end
|
91
88
|
end
|
89
|
+
|
90
|
+
|
91
|
+
describe "#destroy" do
|
92
|
+
subject { env.destroy }
|
93
|
+
before do
|
94
|
+
allow(KumoDockerCloud::ConsoleJockey).to receive(:flash_message).with("Warning! You are about to delete the Docker Cloud Stack #{full_stack_name}, enter 'yes' to continue.")
|
95
|
+
end
|
96
|
+
|
97
|
+
it "notifies the user of what it is about to delete" do
|
98
|
+
expect(KumoDockerCloud::ConsoleJockey).to receive(:flash_message).with("Warning! You are about to delete the Docker Cloud Stack #{full_stack_name}, enter 'yes' to continue.")
|
99
|
+
subject
|
100
|
+
end
|
101
|
+
|
102
|
+
it "does delete the stack if the user confirms" do
|
103
|
+
expect(KumoDockerCloud::ConsoleJockey).to receive(:get_confirmation).with(confirmation_timeout).and_return(true)
|
104
|
+
expect(env).to receive(:run_command).with("docker-cloud stack terminate --sync #{full_stack_name}")
|
105
|
+
subject
|
106
|
+
end
|
107
|
+
|
108
|
+
it "does not delete the stack if the the user refuses confirmation" do
|
109
|
+
expect(KumoDockerCloud::ConsoleJockey).to receive(:get_confirmation).with(confirmation_timeout).and_return(false)
|
110
|
+
subject
|
111
|
+
end
|
112
|
+
|
113
|
+
end
|
92
114
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kumo_dockercloud
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Redbubble
|
@@ -128,6 +128,7 @@ files:
|
|
128
128
|
- Rakefile
|
129
129
|
- kumo_dockercloud.gemspec
|
130
130
|
- lib/kumo_dockercloud.rb
|
131
|
+
- lib/kumo_dockercloud/console_jockey.rb
|
131
132
|
- lib/kumo_dockercloud/deployment.rb
|
132
133
|
- lib/kumo_dockercloud/docker_cloud_api.rb
|
133
134
|
- lib/kumo_dockercloud/environment.rb
|
@@ -147,6 +148,7 @@ files:
|
|
147
148
|
- spec/fixtures/config/test_secrets.yml
|
148
149
|
- spec/fixtures/stack.yml.erb
|
149
150
|
- spec/kumo_docker_cloud_spec.rb
|
151
|
+
- spec/kumo_dockercloud/console_jockey_spec.rb
|
150
152
|
- spec/kumo_dockercloud/docker_cloud_api_spec.rb
|
151
153
|
- spec/kumo_dockercloud/environment_config_spec.rb
|
152
154
|
- spec/kumo_dockercloud/environment_spec.rb
|
@@ -186,6 +188,7 @@ test_files:
|
|
186
188
|
- spec/fixtures/config/test_secrets.yml
|
187
189
|
- spec/fixtures/stack.yml.erb
|
188
190
|
- spec/kumo_docker_cloud_spec.rb
|
191
|
+
- spec/kumo_dockercloud/console_jockey_spec.rb
|
189
192
|
- spec/kumo_dockercloud/docker_cloud_api_spec.rb
|
190
193
|
- spec/kumo_dockercloud/environment_config_spec.rb
|
191
194
|
- spec/kumo_dockercloud/environment_spec.rb
|