mortar 0.13.1 → 0.13.2
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.
- data/lib/mortar/local/controller.rb +42 -6
- data/lib/mortar/version.rb +1 -1
- data/spec/mortar/local/controller_spec.rb +65 -3
- metadata +41 -17
- checksums.yaml +0 -7
@@ -13,6 +13,7 @@
|
|
13
13
|
#
|
14
14
|
|
15
15
|
require "mortar/helpers"
|
16
|
+
require "mortar/auth"
|
16
17
|
require "mortar/pigversion"
|
17
18
|
require "mortar/local/pig"
|
18
19
|
require "mortar/local/java"
|
@@ -45,12 +46,25 @@ https://pypi.python.org/pypi/virtualenv
|
|
45
46
|
EOF
|
46
47
|
|
47
48
|
NO_AWS_KEYS_ERROR_MESSAGE = <<EOF
|
48
|
-
|
49
|
-
and your AWS secret key via environment variable AWS_SECRET_KEY, e.g.:
|
49
|
+
You have not set AWS access keys, which will often prevent you from accessing input data. You can either:
|
50
50
|
|
51
|
-
|
51
|
+
- Login to your Mortar account to automatically sync your AWS keys from Mortar when running commands ("mortar login")
|
52
|
+
|
53
|
+
- *or*, set your AWS keys via environment variables:
|
54
|
+
|
55
|
+
export AWS_ACCESS_KEY="XXXXXXXXXXXX"
|
52
56
|
export AWS_SECRET_KEY="XXXXXXXXXXXX"
|
53
57
|
|
58
|
+
If your script does not need AWS S3 access, you can leave those values as XXXXXXXXXXXX.
|
59
|
+
EOF
|
60
|
+
|
61
|
+
API_CONFIG_ERROR_MESSAGE = <<EOF
|
62
|
+
We were unable to sync your AWS keys from Mortar.
|
63
|
+
To continue, please specify your amazon AWS access key via environment variable AWS_ACCESS_KEY and your AWS secret key via environment variable AWS_SECRET_KEY, e.g.:
|
64
|
+
|
65
|
+
export AWS_ACCESS_KEY="XXXXXXXXXXXX"
|
66
|
+
export AWS_SECRET_KEY="XXXXXXXXXXXX"
|
67
|
+
|
54
68
|
If your script does not need AWS S3 access, you can set these variables to XXXXXXXXXXXX.
|
55
69
|
EOF
|
56
70
|
|
@@ -68,13 +82,35 @@ EOF
|
|
68
82
|
end
|
69
83
|
end
|
70
84
|
|
71
|
-
#
|
72
|
-
def require_aws_keys()
|
85
|
+
# Asks to sync with AWS if user has not setup their aws keys
|
86
|
+
def require_aws_keys()
|
73
87
|
unless verify_aws_keys()
|
74
|
-
|
88
|
+
auth = Mortar::Auth
|
89
|
+
if !auth.has_credentials
|
90
|
+
error(NO_AWS_KEYS_ERROR_MESSAGE)
|
91
|
+
else
|
92
|
+
vars = fetch_aws_keys(auth, Mortar::Command::Base.new)
|
93
|
+
if vars['aws_access_key_id'] && vars['aws_secret_access_key']
|
94
|
+
set_aws_keys(vars['aws_access_key_id'], vars['aws_secret_access_key'])
|
95
|
+
else
|
96
|
+
error(API_CONFIG_ERROR_MESSAGE)
|
97
|
+
end
|
98
|
+
end
|
75
99
|
end
|
76
100
|
end
|
77
101
|
|
102
|
+
# Fetches AWS Keys based on auth
|
103
|
+
def fetch_aws_keys(auth, base)
|
104
|
+
project = base.project
|
105
|
+
project_name = base.options[:project] || project.name
|
106
|
+
return auth.api.get_config_vars(project_name).body['config']
|
107
|
+
end
|
108
|
+
|
109
|
+
def set_aws_keys(aws_access_key, aws_secret_key)
|
110
|
+
ENV['AWS_ACCESS_KEY'] = aws_access_key
|
111
|
+
ENV['AWS_SECRET_KEY'] = aws_secret_key
|
112
|
+
end
|
113
|
+
|
78
114
|
# Main entry point to perform installation and configuration necessary
|
79
115
|
# to run pig on the users local machine
|
80
116
|
def install_and_configure(pig_version=nil)
|
data/lib/mortar/version.rb
CHANGED
@@ -17,21 +17,26 @@
|
|
17
17
|
require 'spec_helper'
|
18
18
|
require 'fakefs/spec_helpers'
|
19
19
|
require 'mortar/local/controller'
|
20
|
+
require 'mortar/auth'
|
21
|
+
require 'mortar/command/base'
|
20
22
|
require 'launchy'
|
23
|
+
require 'excon'
|
21
24
|
|
22
25
|
module Mortar::Local
|
23
26
|
describe Controller do
|
24
27
|
|
25
28
|
before do
|
29
|
+
stub_core
|
26
30
|
ENV['AWS_ACCESS_KEY'] = "foo"
|
27
31
|
ENV['AWS_SECRET_KEY'] = "BAR"
|
28
32
|
end
|
29
33
|
|
30
|
-
context("aws keys") do
|
31
|
-
it "exits if they are not present" do
|
34
|
+
context("aws keys") do
|
35
|
+
it "exits if they are not present and not logged in" do
|
32
36
|
ENV.delete('AWS_ACCESS_KEY')
|
33
37
|
ctrl = Mortar::Local::Controller.new
|
34
38
|
previous_stderr, $stderr = $stderr, StringIO.new
|
39
|
+
mock(Mortar::Auth).has_credentials{false}
|
35
40
|
begin
|
36
41
|
expect { ctrl.require_aws_keys }.to raise_error(SystemExit)
|
37
42
|
$stderr.string.should eq(Mortar::Local::Controller::NO_AWS_KEYS_ERROR_MESSAGE.gsub(/^/, " ! "))
|
@@ -40,6 +45,21 @@ module Mortar::Local
|
|
40
45
|
end
|
41
46
|
end
|
42
47
|
|
48
|
+
it "exits if keys are not present, not logged in and api fails to return keys" do
|
49
|
+
ENV.delete('AWS_ACCESS_KEY')
|
50
|
+
ctrl = Mortar::Local::Controller.new
|
51
|
+
previous_stderr, $stderr = $stderr, StringIO.new
|
52
|
+
mock(Mortar::Auth).has_credentials{true}
|
53
|
+
stub(Mortar::Command::Base).new {'base'}
|
54
|
+
mock(ctrl).fetch_aws_keys(Mortar::Auth, 'base'){{}}
|
55
|
+
begin
|
56
|
+
expect { ctrl.require_aws_keys }.to raise_error(SystemExit)
|
57
|
+
$stderr.string.should eq(Mortar::Local::Controller::API_CONFIG_ERROR_MESSAGE.gsub(/^/, " ! "))
|
58
|
+
ensure
|
59
|
+
$stderr = previous_stderr
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
43
63
|
it "returns if they are present" do
|
44
64
|
ctrl = Mortar::Local::Controller.new
|
45
65
|
previous_stderr, $stderr = $stderr, StringIO.new
|
@@ -50,6 +70,48 @@ module Mortar::Local
|
|
50
70
|
$stderr = previous_stderr
|
51
71
|
end
|
52
72
|
end
|
73
|
+
|
74
|
+
it "sets fetches and sets aws keys if missing and logged in" do
|
75
|
+
ENV.delete('AWS_ACCESS_KEY')
|
76
|
+
ctrl = Mortar::Local::Controller.new
|
77
|
+
stub(Mortar::Command::Base).new {'base'}
|
78
|
+
stub(Mortar::Auth).has_credentials{true}
|
79
|
+
previous_stderr, $stderr = $stderr, StringIO.new
|
80
|
+
mock(ctrl).fetch_aws_keys(Mortar::Auth, 'base'){
|
81
|
+
{
|
82
|
+
"aws_access_key_id"=>"key_id",
|
83
|
+
"aws_secret_access_key"=>"secret"
|
84
|
+
}
|
85
|
+
}
|
86
|
+
begin
|
87
|
+
ctrl.require_aws_keys()
|
88
|
+
$stderr.string.should eq("")
|
89
|
+
ENV['AWS_ACCESS_KEY'].should eq("key_id")
|
90
|
+
ENV['AWS_SECRET_KEY'].should eq("secret")
|
91
|
+
ensure
|
92
|
+
$stderr = previous_stderr
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
|
97
|
+
|
98
|
+
it "fetches aws keys" do
|
99
|
+
ctrl = Mortar::Local::Controller.new
|
100
|
+
auth = Mortar::Auth
|
101
|
+
|
102
|
+
|
103
|
+
with_blank_project do
|
104
|
+
base = Mortar::Command::Base.new
|
105
|
+
with_git_initialized_project do |p|
|
106
|
+
# stub api request
|
107
|
+
configs = {}
|
108
|
+
mock(Mortar::Auth.api).get_config_vars("myproject").returns(Excon::Response.new(:body => {"config" => configs}))
|
109
|
+
|
110
|
+
ctrl.fetch_aws_keys(auth,base).should eq(configs)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
53
115
|
|
54
116
|
it "returns if they are not present but override is in place" do
|
55
117
|
ENV.delete('AWS_ACCESS_KEY')
|
@@ -62,7 +124,7 @@ module Mortar::Local
|
|
62
124
|
ensure
|
63
125
|
$stderr = previous_stderr
|
64
126
|
end
|
65
|
-
end
|
127
|
+
end
|
66
128
|
|
67
129
|
end
|
68
130
|
|
metadata
CHANGED
@@ -1,32 +1,36 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mortar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.13.
|
4
|
+
version: 0.13.2
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Mortar Data
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2014-01-
|
12
|
+
date: 2014-01-21 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: rdoc
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
|
-
- - '>='
|
19
|
+
- - ! '>='
|
18
20
|
- !ruby/object:Gem::Version
|
19
21
|
version: 4.0.0
|
20
22
|
type: :runtime
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
23
26
|
requirements:
|
24
|
-
- - '>='
|
27
|
+
- - ! '>='
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: 4.0.0
|
27
30
|
- !ruby/object:Gem::Dependency
|
28
31
|
name: mortar-api-ruby
|
29
32
|
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
30
34
|
requirements:
|
31
35
|
- - ~>
|
32
36
|
- !ruby/object:Gem::Version
|
@@ -34,6 +38,7 @@ dependencies:
|
|
34
38
|
type: :runtime
|
35
39
|
prerelease: false
|
36
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
37
42
|
requirements:
|
38
43
|
- - ~>
|
39
44
|
- !ruby/object:Gem::Version
|
@@ -41,6 +46,7 @@ dependencies:
|
|
41
46
|
- !ruby/object:Gem::Dependency
|
42
47
|
name: netrc
|
43
48
|
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
44
50
|
requirements:
|
45
51
|
- - ~>
|
46
52
|
- !ruby/object:Gem::Version
|
@@ -48,6 +54,7 @@ dependencies:
|
|
48
54
|
type: :runtime
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
51
58
|
requirements:
|
52
59
|
- - ~>
|
53
60
|
- !ruby/object:Gem::Version
|
@@ -55,6 +62,7 @@ dependencies:
|
|
55
62
|
- !ruby/object:Gem::Dependency
|
56
63
|
name: launchy
|
57
64
|
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
58
66
|
requirements:
|
59
67
|
- - ~>
|
60
68
|
- !ruby/object:Gem::Version
|
@@ -62,6 +70,7 @@ dependencies:
|
|
62
70
|
type: :runtime
|
63
71
|
prerelease: false
|
64
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
65
74
|
requirements:
|
66
75
|
- - ~>
|
67
76
|
- !ruby/object:Gem::Version
|
@@ -69,6 +78,7 @@ dependencies:
|
|
69
78
|
- !ruby/object:Gem::Dependency
|
70
79
|
name: parseconfig
|
71
80
|
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
72
82
|
requirements:
|
73
83
|
- - ~>
|
74
84
|
- !ruby/object:Gem::Version
|
@@ -76,6 +86,7 @@ dependencies:
|
|
76
86
|
type: :runtime
|
77
87
|
prerelease: false
|
78
88
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
79
90
|
requirements:
|
80
91
|
- - ~>
|
81
92
|
- !ruby/object:Gem::Version
|
@@ -83,6 +94,7 @@ dependencies:
|
|
83
94
|
- !ruby/object:Gem::Dependency
|
84
95
|
name: excon
|
85
96
|
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
86
98
|
requirements:
|
87
99
|
- - ~>
|
88
100
|
- !ruby/object:Gem::Version
|
@@ -90,6 +102,7 @@ dependencies:
|
|
90
102
|
type: :development
|
91
103
|
prerelease: false
|
92
104
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
93
106
|
requirements:
|
94
107
|
- - ~>
|
95
108
|
- !ruby/object:Gem::Version
|
@@ -97,6 +110,7 @@ dependencies:
|
|
97
110
|
- !ruby/object:Gem::Dependency
|
98
111
|
name: fakefs
|
99
112
|
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
100
114
|
requirements:
|
101
115
|
- - ~>
|
102
116
|
- !ruby/object:Gem::Version
|
@@ -104,6 +118,7 @@ dependencies:
|
|
104
118
|
type: :development
|
105
119
|
prerelease: false
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
107
122
|
requirements:
|
108
123
|
- - ~>
|
109
124
|
- !ruby/object:Gem::Version
|
@@ -111,57 +126,65 @@ dependencies:
|
|
111
126
|
- !ruby/object:Gem::Dependency
|
112
127
|
name: gem-release
|
113
128
|
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
114
130
|
requirements:
|
115
|
-
- - '>='
|
131
|
+
- - ! '>='
|
116
132
|
- !ruby/object:Gem::Version
|
117
133
|
version: '0'
|
118
134
|
type: :development
|
119
135
|
prerelease: false
|
120
136
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
121
138
|
requirements:
|
122
|
-
- - '>='
|
139
|
+
- - ! '>='
|
123
140
|
- !ruby/object:Gem::Version
|
124
141
|
version: '0'
|
125
142
|
- !ruby/object:Gem::Dependency
|
126
143
|
name: rake
|
127
144
|
requirement: !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
128
146
|
requirements:
|
129
|
-
- - '>='
|
147
|
+
- - ! '>='
|
130
148
|
- !ruby/object:Gem::Version
|
131
149
|
version: '0'
|
132
150
|
type: :development
|
133
151
|
prerelease: false
|
134
152
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
135
154
|
requirements:
|
136
|
-
- - '>='
|
155
|
+
- - ! '>='
|
137
156
|
- !ruby/object:Gem::Version
|
138
157
|
version: '0'
|
139
158
|
- !ruby/object:Gem::Dependency
|
140
159
|
name: rr
|
141
160
|
requirement: !ruby/object:Gem::Requirement
|
161
|
+
none: false
|
142
162
|
requirements:
|
143
|
-
- - '>='
|
163
|
+
- - ! '>='
|
144
164
|
- !ruby/object:Gem::Version
|
145
165
|
version: '0'
|
146
166
|
type: :development
|
147
167
|
prerelease: false
|
148
168
|
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
none: false
|
149
170
|
requirements:
|
150
|
-
- - '>='
|
171
|
+
- - ! '>='
|
151
172
|
- !ruby/object:Gem::Version
|
152
173
|
version: '0'
|
153
174
|
- !ruby/object:Gem::Dependency
|
154
175
|
name: rspec
|
155
176
|
requirement: !ruby/object:Gem::Requirement
|
177
|
+
none: false
|
156
178
|
requirements:
|
157
|
-
- - '>='
|
179
|
+
- - ! '>='
|
158
180
|
- !ruby/object:Gem::Version
|
159
181
|
version: '0'
|
160
182
|
type: :development
|
161
183
|
prerelease: false
|
162
184
|
version_requirements: !ruby/object:Gem::Requirement
|
185
|
+
none: false
|
163
186
|
requirements:
|
164
|
-
- - '>='
|
187
|
+
- - ! '>='
|
165
188
|
- !ruby/object:Gem::Version
|
166
189
|
version: '0'
|
167
190
|
description: Client library and command-line tool to interact with the Mortar service.
|
@@ -296,25 +319,26 @@ files:
|
|
296
319
|
- spec/support/display_message_matcher.rb
|
297
320
|
homepage: http://mortardata.com/
|
298
321
|
licenses: []
|
299
|
-
metadata: {}
|
300
322
|
post_install_message:
|
301
323
|
rdoc_options: []
|
302
324
|
require_paths:
|
303
325
|
- lib
|
304
326
|
required_ruby_version: !ruby/object:Gem::Requirement
|
327
|
+
none: false
|
305
328
|
requirements:
|
306
|
-
- - '>='
|
329
|
+
- - ! '>='
|
307
330
|
- !ruby/object:Gem::Version
|
308
331
|
version: 1.8.7
|
309
332
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
333
|
+
none: false
|
310
334
|
requirements:
|
311
|
-
- - '>='
|
335
|
+
- - ! '>='
|
312
336
|
- !ruby/object:Gem::Version
|
313
337
|
version: '0'
|
314
338
|
requirements: []
|
315
339
|
rubyforge_project:
|
316
|
-
rubygems_version:
|
340
|
+
rubygems_version: 1.8.24
|
317
341
|
signing_key:
|
318
|
-
specification_version:
|
342
|
+
specification_version: 3
|
319
343
|
summary: Client library and CLI to interact with the Mortar service.
|
320
344
|
test_files: []
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 67d3ed5faec8d91449aa2ff2a655473b299751b2
|
4
|
-
data.tar.gz: f89c8144659270c49215daba688bd29396bc3f8e
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: b24095b9ad94d8393fcd388fecab1be47bc91d63ab8054e5142598a73a3f52447c4b7a8138c890623f937afa160c88f36a365b67690b540ccf955c301ebe16c1
|
7
|
-
data.tar.gz: dd41a82424d176336eb5525a15d1399f940e6fe4b5d6721474d751134f1565781585253456882ed3c3964ad34780217566625717f95ff92a1537ab6d7c577dbf
|