turbot 0.1.2 → 0.1.3
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 +5 -13
- data/lib/turbot/distribution.rb +1 -1
- data/lib/turbot/version.rb +1 -1
- metadata +37 -42
- data/spec/turbot/command/config_spec.rb +0 -143
- data/spec/turbot/command/keys_spec.rb +0 -117
- data/spec/turbot/command/logs_spec.rb +0 -60
- data/spec/turbot/command/status_spec.rb +0 -48
checksums.yaml
CHANGED
|
@@ -1,15 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
|
|
5
|
-
data.tar.gz: !binary |-
|
|
6
|
-
ZDcxZjdlZWI2ZTY1ODM2NmM3YWVkN2QxYjNhNjU0OGQ1MWZiNmI5Yw==
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 3cf3daf49d5e018577ce3e133bd39a12af0fe43b
|
|
4
|
+
data.tar.gz: 4e9f43adf2c1edf02022342b1b7ad0b5c580797e
|
|
7
5
|
SHA512:
|
|
8
|
-
metadata.gz:
|
|
9
|
-
|
|
10
|
-
ZjFiNjIzMjgxZWEwMTRiY2NhNjMwZTc1YWI0MzNkOGRhNWM1ZWUzZDlkMGU1
|
|
11
|
-
YTM4MDc2MmI2NWRlYzIyMzc1NmNmNDNmZDEzOWYzNjEzMmQyNzM=
|
|
12
|
-
data.tar.gz: !binary |-
|
|
13
|
-
NjE2ZTNiZTUzODY3N2VkZWIwOTQxMDhhZGY3NDY0YzcwMWFjNGNjNThmNTg2
|
|
14
|
-
ZDhhNTlkZTk4MDU2N2M3ZTA4ZDBiMWZkMDM4ZDg4YzYzNDliOTVkNmFmZjVh
|
|
15
|
-
Nzc0ZjM4NWMxOTRkOTdmYjJlNjAwYTU2ZjRlZTU0ZTFmMmJlNzA=
|
|
6
|
+
metadata.gz: 98adba47aaa073fa1863f4fb64c57b7a312a8f3c4820ba83a8a7a9124a226cd808d36d3d4794297306f145ddee5708f4b7b1b9406242eaf2cbe6f32426bae298
|
|
7
|
+
data.tar.gz: 3863528ef0a9ebd0ded4e8e1d4a90f201df31e3b4e133412a52b6bacde6b108056acd791604c9ec92a96ace1f85c08041d54de081e1c28b39aa7acc202f9dca5
|
data/lib/turbot/distribution.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
module Turbot
|
|
2
2
|
module Distribution
|
|
3
3
|
def self.files
|
|
4
|
-
|
|
4
|
+
Dir[File.expand_path("../../../{bin,data,lib}/**/*", __FILE__)].select do |file|
|
|
5
5
|
File.file?(file)
|
|
6
6
|
end
|
|
7
7
|
end
|
data/lib/turbot/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: turbot
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Turbot
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2014-11-
|
|
11
|
+
date: 2014-11-28 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: netrc
|
|
@@ -42,42 +42,42 @@ dependencies:
|
|
|
42
42
|
name: launchy
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
|
-
- -
|
|
45
|
+
- - '>='
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
47
|
version: 0.3.2
|
|
48
48
|
type: :runtime
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
|
-
- -
|
|
52
|
+
- - '>='
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
54
|
version: 0.3.2
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: rubyzip
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements:
|
|
59
|
-
- -
|
|
59
|
+
- - '>='
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
61
|
version: 1.0.0
|
|
62
62
|
type: :runtime
|
|
63
63
|
prerelease: false
|
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
65
|
requirements:
|
|
66
|
-
- -
|
|
66
|
+
- - '>='
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
68
|
version: 1.0.0
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
70
|
name: json-schema
|
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
|
72
72
|
requirements:
|
|
73
|
-
- -
|
|
73
|
+
- - '>='
|
|
74
74
|
- !ruby/object:Gem::Version
|
|
75
75
|
version: '0'
|
|
76
76
|
type: :runtime
|
|
77
77
|
prerelease: false
|
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
79
|
requirements:
|
|
80
|
-
- -
|
|
80
|
+
- - '>='
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
82
|
version: '0'
|
|
83
83
|
- !ruby/object:Gem::Dependency
|
|
@@ -114,26 +114,26 @@ dependencies:
|
|
|
114
114
|
requirements:
|
|
115
115
|
- - '='
|
|
116
116
|
- !ruby/object:Gem::Version
|
|
117
|
-
version: 0.1.
|
|
117
|
+
version: 0.1.11
|
|
118
118
|
type: :runtime
|
|
119
119
|
prerelease: false
|
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
121
|
requirements:
|
|
122
122
|
- - '='
|
|
123
123
|
- !ruby/object:Gem::Version
|
|
124
|
-
version: 0.1.
|
|
124
|
+
version: 0.1.11
|
|
125
125
|
- !ruby/object:Gem::Dependency
|
|
126
126
|
name: excon
|
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
|
128
128
|
requirements:
|
|
129
|
-
- -
|
|
129
|
+
- - '>='
|
|
130
130
|
- !ruby/object:Gem::Version
|
|
131
131
|
version: '0'
|
|
132
132
|
type: :runtime
|
|
133
133
|
prerelease: false
|
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
|
135
135
|
requirements:
|
|
136
|
-
- -
|
|
136
|
+
- - '>='
|
|
137
137
|
- !ruby/object:Gem::Version
|
|
138
138
|
version: '0'
|
|
139
139
|
description: Client library and command-line tool to deploy and manage apps on Turbot.
|
|
@@ -175,28 +175,6 @@ files:
|
|
|
175
175
|
- lib/turbot/updater.rb
|
|
176
176
|
- lib/turbot/version.rb
|
|
177
177
|
- lib/vendor/turbot/okjson.rb
|
|
178
|
-
- schema/schemas/company-schema.json
|
|
179
|
-
- schema/schemas/financial-payment-schema.json
|
|
180
|
-
- schema/schemas/includes/address.json
|
|
181
|
-
- schema/schemas/includes/alternative_name.json
|
|
182
|
-
- schema/schemas/includes/company.json
|
|
183
|
-
- schema/schemas/includes/filing.json
|
|
184
|
-
- schema/schemas/includes/financial-payment-data-object.json
|
|
185
|
-
- schema/schemas/includes/industry_code.json
|
|
186
|
-
- schema/schemas/includes/licence-data-object.json
|
|
187
|
-
- schema/schemas/includes/officer.json
|
|
188
|
-
- schema/schemas/includes/previous_name.json
|
|
189
|
-
- schema/schemas/includes/share-parcel-data.json
|
|
190
|
-
- schema/schemas/includes/share-parcel.json
|
|
191
|
-
- schema/schemas/includes/subsidiary-relationship-data.json
|
|
192
|
-
- schema/schemas/includes/total-shares.json
|
|
193
|
-
- schema/schemas/licence-schema.json
|
|
194
|
-
- schema/schemas/primary-data-schema.json
|
|
195
|
-
- schema/schemas/share-parcel-schema.json
|
|
196
|
-
- schema/schemas/simple-financial-payment-schema.json
|
|
197
|
-
- schema/schemas/simple-licence-schema.json
|
|
198
|
-
- schema/schemas/simple-subsidiary-schema.json
|
|
199
|
-
- schema/schemas/subsidiary-relationship-schema.json
|
|
200
178
|
- spec/helper/legacy_help.rb
|
|
201
179
|
- spec/helper/pg_dump_restore_spec.rb
|
|
202
180
|
- spec/schemas/dummy_schema.json
|
|
@@ -215,11 +193,7 @@ files:
|
|
|
215
193
|
- spec/turbot/command/auth_spec.rb
|
|
216
194
|
- spec/turbot/command/base_spec.rb
|
|
217
195
|
- spec/turbot/command/bots_spec.rb
|
|
218
|
-
- spec/turbot/command/config_spec.rb
|
|
219
196
|
- spec/turbot/command/help_spec.rb
|
|
220
|
-
- spec/turbot/command/keys_spec.rb
|
|
221
|
-
- spec/turbot/command/logs_spec.rb
|
|
222
|
-
- spec/turbot/command/status_spec.rb
|
|
223
197
|
- spec/turbot/command/version_spec.rb
|
|
224
198
|
- spec/turbot/command_spec.rb
|
|
225
199
|
- spec/turbot/helpers/turbot_postgresql_spec.rb
|
|
@@ -230,6 +204,28 @@ files:
|
|
|
230
204
|
- templates/manifest.json
|
|
231
205
|
- templates/python/scraper.py
|
|
232
206
|
- templates/ruby/scraper.rb
|
|
207
|
+
- schema/schemas/company-schema.json
|
|
208
|
+
- schema/schemas/financial-payment-schema.json
|
|
209
|
+
- schema/schemas/includes/address.json
|
|
210
|
+
- schema/schemas/includes/alternative_name.json
|
|
211
|
+
- schema/schemas/includes/company.json
|
|
212
|
+
- schema/schemas/includes/filing.json
|
|
213
|
+
- schema/schemas/includes/financial-payment-data-object.json
|
|
214
|
+
- schema/schemas/includes/industry_code.json
|
|
215
|
+
- schema/schemas/includes/licence-data-object.json
|
|
216
|
+
- schema/schemas/includes/officer.json
|
|
217
|
+
- schema/schemas/includes/previous_name.json
|
|
218
|
+
- schema/schemas/includes/share-parcel-data.json
|
|
219
|
+
- schema/schemas/includes/share-parcel.json
|
|
220
|
+
- schema/schemas/includes/subsidiary-relationship-data.json
|
|
221
|
+
- schema/schemas/includes/total-shares.json
|
|
222
|
+
- schema/schemas/licence-schema.json
|
|
223
|
+
- schema/schemas/primary-data-schema.json
|
|
224
|
+
- schema/schemas/share-parcel-schema.json
|
|
225
|
+
- schema/schemas/simple-financial-payment-schema.json
|
|
226
|
+
- schema/schemas/simple-licence-schema.json
|
|
227
|
+
- schema/schemas/simple-subsidiary-schema.json
|
|
228
|
+
- schema/schemas/subsidiary-relationship-schema.json
|
|
233
229
|
homepage: http://turbot.com/
|
|
234
230
|
licenses:
|
|
235
231
|
- MIT
|
|
@@ -240,19 +236,18 @@ require_paths:
|
|
|
240
236
|
- lib
|
|
241
237
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
242
238
|
requirements:
|
|
243
|
-
- -
|
|
239
|
+
- - '>='
|
|
244
240
|
- !ruby/object:Gem::Version
|
|
245
241
|
version: 1.9.2
|
|
246
242
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
247
243
|
requirements:
|
|
248
|
-
- -
|
|
244
|
+
- - '>='
|
|
249
245
|
- !ruby/object:Gem::Version
|
|
250
246
|
version: '0'
|
|
251
247
|
requirements: []
|
|
252
248
|
rubyforge_project:
|
|
253
|
-
rubygems_version: 2.
|
|
249
|
+
rubygems_version: 2.0.14
|
|
254
250
|
signing_key:
|
|
255
251
|
specification_version: 4
|
|
256
252
|
summary: Client library and CLI to deploy apps on Turbot.
|
|
257
253
|
test_files: []
|
|
258
|
-
has_rdoc:
|
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
require "spec_helper"
|
|
2
|
-
require "turbot/command/config"
|
|
3
|
-
|
|
4
|
-
module Turbot::Command
|
|
5
|
-
describe Config do
|
|
6
|
-
before(:each) do
|
|
7
|
-
stub_core
|
|
8
|
-
api.post_bot("name" => "example", "stack" => "cedar")
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
after(:each) do
|
|
12
|
-
api.delete_bot("example")
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
it "shows all configs" do
|
|
16
|
-
api.put_config_vars("example", { 'FOO_BAR' => 'one', 'BAZ_QUX' => 'two' })
|
|
17
|
-
stderr, stdout = execute("config")
|
|
18
|
-
stderr.should == ""
|
|
19
|
-
stdout.should == <<-STDOUT
|
|
20
|
-
=== example Config Vars
|
|
21
|
-
BAZ_QUX: two
|
|
22
|
-
FOO_BAR: one
|
|
23
|
-
STDOUT
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
it "does not trim long values" do
|
|
27
|
-
api.put_config_vars("example", { 'LONG' => 'A' * 60 })
|
|
28
|
-
stderr, stdout = execute("config")
|
|
29
|
-
stderr.should == ""
|
|
30
|
-
stdout.should == <<-STDOUT
|
|
31
|
-
=== example Config Vars
|
|
32
|
-
LONG: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
33
|
-
STDOUT
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
it "handles when value is nil" do
|
|
37
|
-
api.put_config_vars("example", { 'FOO_BAR' => 'one', 'BAZ_QUX' => nil })
|
|
38
|
-
stderr, stdout = execute("config")
|
|
39
|
-
stderr.should == ""
|
|
40
|
-
stdout.should == <<-STDOUT
|
|
41
|
-
=== example Config Vars
|
|
42
|
-
BAZ_QUX: \nFOO_BAR: one
|
|
43
|
-
STDOUT
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
it "handles when value is a boolean" do
|
|
47
|
-
api.put_config_vars("example", { 'FOO_BAR' => 'one', 'BAZ_QUX' => true })
|
|
48
|
-
stderr, stdout = execute("config")
|
|
49
|
-
stderr.should == ""
|
|
50
|
-
stdout.should == <<-STDOUT
|
|
51
|
-
=== example Config Vars
|
|
52
|
-
BAZ_QUX: true
|
|
53
|
-
FOO_BAR: one
|
|
54
|
-
STDOUT
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
it "shows configs in a shell compatible format" do
|
|
58
|
-
api.put_config_vars("example", { 'A' => 'one', 'B' => 'two three' })
|
|
59
|
-
stderr, stdout = execute("config --shell")
|
|
60
|
-
stderr.should == ""
|
|
61
|
-
stdout.should == <<-STDOUT
|
|
62
|
-
A=one
|
|
63
|
-
B=two three
|
|
64
|
-
STDOUT
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
it "shows a single config for get" do
|
|
68
|
-
api.put_config_vars("example", { 'LONG' => 'A' * 60 })
|
|
69
|
-
stderr, stdout = execute("config:get LONG")
|
|
70
|
-
stderr.should == ""
|
|
71
|
-
stdout.should == <<-STDOUT
|
|
72
|
-
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
73
|
-
STDOUT
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
context("set") do
|
|
77
|
-
|
|
78
|
-
it "sets config vars" do
|
|
79
|
-
stderr, stdout = execute("config:set A=1 B=2")
|
|
80
|
-
stderr.should == ""
|
|
81
|
-
stdout.should == <<-STDOUT
|
|
82
|
-
Setting config vars and restarting example... done
|
|
83
|
-
A: 1
|
|
84
|
-
B: 2
|
|
85
|
-
STDOUT
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
it "allows config vars with = in the value" do
|
|
89
|
-
stderr, stdout = execute("config:set A=b=c")
|
|
90
|
-
stderr.should == ""
|
|
91
|
-
stdout.should == <<-STDOUT
|
|
92
|
-
Setting config vars and restarting example... done
|
|
93
|
-
A: b=c
|
|
94
|
-
STDOUT
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
it "sets config vars without changing case" do
|
|
98
|
-
stderr, stdout = execute("config:set a=b")
|
|
99
|
-
stderr.should == ""
|
|
100
|
-
stdout.should == <<-STDOUT
|
|
101
|
-
Setting config vars and restarting example... done
|
|
102
|
-
a: b
|
|
103
|
-
STDOUT
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
describe "config:unset" do
|
|
109
|
-
|
|
110
|
-
it "exits with a help notice when no keys are provides" do
|
|
111
|
-
stderr, stdout = execute("config:unset")
|
|
112
|
-
stderr.should == <<-STDERR
|
|
113
|
-
! Usage: turbot config:unset KEY1 [KEY2 ...]
|
|
114
|
-
! Must specify KEY to unset.
|
|
115
|
-
STDERR
|
|
116
|
-
stdout.should == ""
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
context "when one key is provided" do
|
|
120
|
-
|
|
121
|
-
it "unsets a single key" do
|
|
122
|
-
stderr, stdout = execute("config:unset A")
|
|
123
|
-
stderr.should == ""
|
|
124
|
-
stdout.should == <<-STDOUT
|
|
125
|
-
Unsetting A and restarting example... done
|
|
126
|
-
STDOUT
|
|
127
|
-
end
|
|
128
|
-
end
|
|
129
|
-
|
|
130
|
-
context "when more than one key is provided" do
|
|
131
|
-
|
|
132
|
-
it "unsets all given keys" do
|
|
133
|
-
stderr, stdout = execute("config:unset A B")
|
|
134
|
-
stderr.should == ""
|
|
135
|
-
stdout.should == <<-STDOUT
|
|
136
|
-
Unsetting A and restarting example... done
|
|
137
|
-
Unsetting B and restarting example... done
|
|
138
|
-
STDOUT
|
|
139
|
-
end
|
|
140
|
-
end
|
|
141
|
-
end
|
|
142
|
-
end
|
|
143
|
-
end
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
require "spec_helper"
|
|
2
|
-
require "turbot/command/keys"
|
|
3
|
-
|
|
4
|
-
module Turbot::Command
|
|
5
|
-
describe Keys do
|
|
6
|
-
KEY = "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAp9AJD5QABmOcrkHm6SINuQkDefaR0MUrfgZ1Pxir3a4fM1fwa00dsUwbUaRuR7FEFD8n1E9WwDf8SwQTHtyZsJg09G9myNqUzkYXCmydN7oGr5IdVhRyv5ixcdiE0hj7dRnOJg2poSQ3Qi+Ka8SVJzF7nIw1YhuicHPSbNIFKi5s0D5a+nZb/E6MNGvhxoFCQX2IcNxaJMqhzy1ESwlixz45aT72mXYq0LIxTTpoTqma1HuKdRY8HxoREiivjmMQulYP+CxXFcMyV9kxTKIUZ/FXqlC6G5vSm3J4YScSatPOj9ID5HowpdlIx8F6y4p1/28r2tTl4CY40FFyoke4MQ== pedro@turbot"
|
|
7
|
-
|
|
8
|
-
before(:each) do
|
|
9
|
-
stub_core
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
after(:each) do
|
|
13
|
-
api.delete_keys
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
context("add") do
|
|
17
|
-
it "tries to find a key if no key filename is supplied" do
|
|
18
|
-
Turbot::Auth.should_receive(:ask).and_return("y")
|
|
19
|
-
Turbot::Auth.should_receive(:generate_ssh_key)
|
|
20
|
-
File.should_receive(:exists?).with('/.ssh/id_rsa.pub').and_return(true)
|
|
21
|
-
File.should_receive(:read).with('/.ssh/id_rsa.pub').and_return(KEY)
|
|
22
|
-
stderr, stdout = execute("keys:add")
|
|
23
|
-
stderr.should == ""
|
|
24
|
-
stdout.should == <<-STDOUT
|
|
25
|
-
Could not find an existing public key.
|
|
26
|
-
Would you like to generate one? [Yn] Generating new SSH public key.
|
|
27
|
-
Uploading SSH public key /.ssh/id_rsa.pub... done
|
|
28
|
-
STDOUT
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
it "adds a key from a specified keyfile path" do
|
|
32
|
-
File.should_receive(:exists?).with('/my/key.pub').and_return(true)
|
|
33
|
-
File.should_receive(:read).with('/my/key.pub').and_return(KEY)
|
|
34
|
-
stderr, stdout = execute("keys:add /my/key.pub")
|
|
35
|
-
stderr.should == ""
|
|
36
|
-
stdout.should == <<-STDOUT
|
|
37
|
-
Uploading SSH public key /my/key.pub... done
|
|
38
|
-
STDOUT
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
context("index") do
|
|
44
|
-
|
|
45
|
-
before do
|
|
46
|
-
api.post_key(KEY)
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
after do
|
|
50
|
-
api.delete_keys
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
it "list keys, trimming the hex code for better display" do
|
|
54
|
-
stderr, stdout = execute("keys")
|
|
55
|
-
stderr.should == ""
|
|
56
|
-
stdout.should == <<-STDOUT
|
|
57
|
-
=== email@example.com Keys
|
|
58
|
-
ssh-rsa AAAAB3NzaC...Fyoke4MQ== pedro@turbot
|
|
59
|
-
|
|
60
|
-
STDOUT
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
it "list keys showing the whole key hex with --long" do
|
|
64
|
-
stderr, stdout = execute("keys --long")
|
|
65
|
-
stderr.should == ""
|
|
66
|
-
stdout.should == <<-STDOUT
|
|
67
|
-
=== email@example.com Keys
|
|
68
|
-
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAp9AJD5QABmOcrkHm6SINuQkDefaR0MUrfgZ1Pxir3a4fM1fwa00dsUwbUaRuR7FEFD8n1E9WwDf8SwQTHtyZsJg09G9myNqUzkYXCmydN7oGr5IdVhRyv5ixcdiE0hj7dRnOJg2poSQ3Qi+Ka8SVJzF7nIw1YhuicHPSbNIFKi5s0D5a+nZb/E6MNGvhxoFCQX2IcNxaJMqhzy1ESwlixz45aT72mXYq0LIxTTpoTqma1HuKdRY8HxoREiivjmMQulYP+CxXFcMyV9kxTKIUZ/FXqlC6G5vSm3J4YScSatPOj9ID5HowpdlIx8F6y4p1/28r2tTl4CY40FFyoke4MQ== pedro@turbot
|
|
69
|
-
|
|
70
|
-
STDOUT
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
context("remove") do
|
|
76
|
-
|
|
77
|
-
context("success") do
|
|
78
|
-
|
|
79
|
-
before(:each) do
|
|
80
|
-
api.post_key(KEY)
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
it "succeeds" do
|
|
84
|
-
stderr, stdout = execute("keys:remove pedro@turbot")
|
|
85
|
-
stderr.should == ""
|
|
86
|
-
stdout.should == <<-STDOUT
|
|
87
|
-
Removing pedro@turbot SSH key... done
|
|
88
|
-
STDOUT
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
it "displays an error if no key is specified" do
|
|
94
|
-
stderr, stdout = execute("keys:remove")
|
|
95
|
-
stderr.should == <<-STDERR
|
|
96
|
-
! Usage: turbot keys:remove KEY
|
|
97
|
-
! Must specify KEY to remove.
|
|
98
|
-
STDERR
|
|
99
|
-
stdout.should == ""
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
context("clear") do
|
|
105
|
-
|
|
106
|
-
it "succeeds" do
|
|
107
|
-
stderr, stdout = execute("keys:clear")
|
|
108
|
-
stderr.should == ""
|
|
109
|
-
stdout.should == <<-STDOUT
|
|
110
|
-
Removing all SSH keys... done
|
|
111
|
-
STDOUT
|
|
112
|
-
end
|
|
113
|
-
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
end
|
|
117
|
-
end
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
require "spec_helper"
|
|
2
|
-
require "turbot/command/logs"
|
|
3
|
-
|
|
4
|
-
describe Turbot::Command::Logs do
|
|
5
|
-
describe "logs" do
|
|
6
|
-
it "runs with no options" do
|
|
7
|
-
stub_core.read_logs("example", [])
|
|
8
|
-
execute "logs"
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
it "runs with options" do
|
|
12
|
-
stub_core.read_logs("example", [
|
|
13
|
-
"tail=1",
|
|
14
|
-
"num=2",
|
|
15
|
-
"ps=ps.3",
|
|
16
|
-
"source=source.4"
|
|
17
|
-
])
|
|
18
|
-
execute "logs --tail --num 2 --ps ps.3 --source source.4"
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
describe "with log output" do
|
|
22
|
-
before(:each) do
|
|
23
|
-
stub_core.read_logs("example", []).yields("2011-01-01T00:00:00+00:00 bot[web.1]: test")
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
it "prettifies tty output" do
|
|
27
|
-
old_stdout_isatty = $stdout.isatty
|
|
28
|
-
stub($stdout).isatty.returns(true)
|
|
29
|
-
stderr, stdout = execute("logs")
|
|
30
|
-
stderr.should == ""
|
|
31
|
-
stdout.should == <<-STDOUT
|
|
32
|
-
\e[36m2011-01-01T00:00:00+00:00 bot[web.1]:\e[0m test
|
|
33
|
-
STDOUT
|
|
34
|
-
stub($stdout).isatty.returns(old_stdout_isatty)
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
it "does not use ansi if stdout is not a tty" do
|
|
38
|
-
old_stdout_isatty = $stdout.isatty
|
|
39
|
-
stub($stdout).isatty.returns(false)
|
|
40
|
-
stderr, stdout = execute("logs")
|
|
41
|
-
stderr.should == ""
|
|
42
|
-
stdout.should == <<-STDOUT
|
|
43
|
-
2011-01-01T00:00:00+00:00 bot[web.1]: test
|
|
44
|
-
STDOUT
|
|
45
|
-
stub($stdout).isatty.returns(old_stdout_isatty)
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
it "does not use ansi if TERM is not set" do
|
|
49
|
-
term = ENV.delete("TERM")
|
|
50
|
-
stderr, stdout = execute("logs")
|
|
51
|
-
stderr.should == ""
|
|
52
|
-
stdout.should == <<-STDOUT
|
|
53
|
-
2011-01-01T00:00:00+00:00 bot[web.1]: test
|
|
54
|
-
STDOUT
|
|
55
|
-
ENV["TERM"] = term
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
end
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
require "spec_helper"
|
|
2
|
-
require "turbot/command/status"
|
|
3
|
-
|
|
4
|
-
module Turbot::Command
|
|
5
|
-
describe Status do
|
|
6
|
-
|
|
7
|
-
before(:each) do
|
|
8
|
-
stub_core
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
it "displays status information" do
|
|
12
|
-
Excon.stub(
|
|
13
|
-
{
|
|
14
|
-
:host => 'status.turbot.com',
|
|
15
|
-
:method => :get,
|
|
16
|
-
:path => '/api/v3/current-status.json'
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
:body => Turbot::OkJson.encode({"status"=>{"Production"=>"red", "Development"=>"red"}, "issues"=>[{"created_at"=>"2012-06-07T15:55:51Z", "id"=>372, "resolved"=>false, "title"=>"HTTP Routing Errors", "updated_at"=>"2012-06-07T16:14:37Z", "href"=>"https://status.turbot.com/api/v3/issues/372", "updates"=>[{"contents"=>"The number of applications seeing H99 errors is continuing to decrease as we continue to work toward a full resolution of the HTTP routing issues. The API is back online now as well. ", "created_at"=>"2012-06-07T17:47:26Z", "id"=>1088, "incident_id"=>372, "status_dev"=>"red", "status_prod"=>"red", "update_type"=>"update", "updated_at"=>"2012-06-07T17:47:26Z"}, {"contents"=>"Our engineers are continuing to work toward a full resolution of the HTTP routing issues. The API is currently in maintenance mode intentionally as we restore application operations. ", "created_at"=>"2012-06-07T17:16:40Z", "id"=>1086, "incident_id"=>372, "status_dev"=>"red", "status_prod"=>"red", "update_type"=>"update", "updated_at"=>"2012-06-07T17:26:55Z"}, {"contents"=>"Most applications are back online at this time. Our engineers are working on getting the remaining bots back online. ", "created_at"=>"2012-06-07T16:50:21Z", "id"=>1085, "incident_id"=>372, "status_dev"=>"red", "status_prod"=>"red", "update_type"=>"update", "updated_at"=>"2012-06-07T16:50:21Z"}, {"contents"=>"Our routing engineers have pushed out a patch to our routing tier. The platform is recovering and applications are coming back online. Our engineers are continuing to fully restore service.", "created_at"=>"2012-06-07T16:36:37Z", "id"=>1084, "incident_id"=>372, "status_dev"=>"red", "status_prod"=>"red", "update_type"=>"update", "updated_at"=>"2012-06-07T16:36:37Z"}, {"contents"=>"We have identified an issue with our routers that is causing errors on HTTP requests to applications. Engineers are working to resolve the issue.\r\n", "created_at"=>"2012-06-07T16:15:25Z", "id"=>1083, "incident_id"=>372, "status_dev"=>"red", "status_prod"=>"red", "update_type"=>"update", "updated_at"=>"2012-06-07T16:15:28Z"}, {"contents"=>"We have confirmed widespread errors on the platform. Our engineers are continuing to investigate.\r\n", "created_at"=>"2012-06-07T15:58:56Z", "id"=>1082, "incident_id"=>372, "status_dev"=>"red", "status_prod"=>"red", "update_type"=>"update", "updated_at"=>"2012-06-07T15:58:58Z"}, {"contents"=>"Our automated systems have detected potential platform errors. We are investigating.\r\n", "created_at"=>"2012-06-07T15:55:51Z", "id"=>1081, "incident_id"=>372, "status_dev"=>"yellow", "status_prod"=>"yellow", "update_type"=>"issue", "updated_at"=>"2012-06-07T15:55:55Z"}]}]}),
|
|
20
|
-
:status => 200
|
|
21
|
-
}
|
|
22
|
-
)
|
|
23
|
-
|
|
24
|
-
Turbot::Command::Status.any_instance.should_receive(:time_ago).and_return('2012/09/11 09:34:56 (~ 3h ago)', '2012/09/11 12:33:56 (~ 1m ago)', '2012/09/11 12:29:56 (~ 5m ago)', '2012/09/11 12:24:56 (~ 10m ago)', '2012/09/11 12:04:56 (~ 30m ago)', '2012/09/11 11:34:56 (~ 1h ago)', '2012/09/11 10:34:56 (~ 2h ago)', '2012/09/11 09:34:56 (~ 3h ago)')
|
|
25
|
-
|
|
26
|
-
stderr, stdout = execute("status")
|
|
27
|
-
stderr.should == ''
|
|
28
|
-
stdout.should == <<-STDOUT
|
|
29
|
-
=== Turbot Status
|
|
30
|
-
Development: red
|
|
31
|
-
Production: red
|
|
32
|
-
|
|
33
|
-
=== HTTP Routing Errors 2012/09/11 09:34:56 (~ 3h+)
|
|
34
|
-
2012/09/11 12:33:56 (~ 1m ago) update The number of applications seeing H99 errors is continuing to decrease as we continue to work toward a full resolution of the HTTP routing issues. The API is back online now as well.
|
|
35
|
-
2012/09/11 12:29:56 (~ 5m ago) update Our engineers are continuing to work toward a full resolution of the HTTP routing issues. The API is currently in maintenance mode intentionally as we restore application operations.
|
|
36
|
-
2012/09/11 12:24:56 (~ 10m ago) update Most applications are back online at this time. Our engineers are working on getting the remaining bots back online.
|
|
37
|
-
2012/09/11 12:04:56 (~ 30m ago) update Our routing engineers have pushed out a patch to our routing tier. The platform is recovering and applications are coming back online. Our engineers are continuing to fully restore service.
|
|
38
|
-
2012/09/11 11:34:56 (~ 1h ago) update We have identified an issue with our routers that is causing errors on HTTP requests to applications. Engineers are working to resolve the issue.
|
|
39
|
-
2012/09/11 10:34:56 (~ 2h ago) update We have confirmed widespread errors on the platform. Our engineers are continuing to investigate.
|
|
40
|
-
2012/09/11 09:34:56 (~ 3h ago) issue Our automated systems have detected potential platform errors. We are investigating.
|
|
41
|
-
|
|
42
|
-
STDOUT
|
|
43
|
-
|
|
44
|
-
Excon.stubs.shift
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
end
|
|
48
|
-
end
|