producer-core 0.1.3 → 0.1.4
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 +7 -0
- data/features/ssh/config.feature +22 -0
- data/features/steps/etc_steps.rb +5 -0
- data/features/steps/ssh_steps.rb +6 -0
- data/lib/producer/core/remote.rb +9 -1
- data/lib/producer/core/version.rb +1 -1
- data/spec/producer/core/remote/fs_spec.rb +1 -1
- data/spec/producer/core/remote_spec.rb +40 -2
- metadata +29 -38
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: c9dca497744fe5fa26c09753548310eb42414a25
|
4
|
+
data.tar.gz: 212301a43272758c9624d5e0d2556ced790c17b3
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 7f456c2225b377db0d58df63d3207fce98a103d18501a0d30969fc75c243c094888ba667dfa109cfb1aef878243fa161a5e800dfe0941bfda7c98dd760bce8ee
|
7
|
+
data.tar.gz: e4eb9ce9cc707064a9318b0971971231ef9a42279b5f17d9038bb99d2e1d6ae9ec84eccd1b1e4d67486163eb86e817a24bddeeb756bf51376d30b9badf662585
|
@@ -0,0 +1,22 @@
|
|
1
|
+
Feature: SSH settings
|
2
|
+
|
3
|
+
Background:
|
4
|
+
Given a recipe with:
|
5
|
+
"""
|
6
|
+
target 'some_host.example'
|
7
|
+
|
8
|
+
puts env.remote.user_name
|
9
|
+
"""
|
10
|
+
|
11
|
+
Scenario: uses current user login name as SSH user name by default
|
12
|
+
When I successfully execute the recipe
|
13
|
+
Then the output must contain my current login name
|
14
|
+
|
15
|
+
Scenario: uses configured SSH user name for a given host
|
16
|
+
Given an SSH config with:
|
17
|
+
"""
|
18
|
+
Host some_host.example
|
19
|
+
User some_user
|
20
|
+
"""
|
21
|
+
When I successfully execute the recipe
|
22
|
+
Then the output must contain "some_user"
|
data/lib/producer/core/remote.rb
CHANGED
@@ -11,7 +11,15 @@ module Producer
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def session
|
14
|
-
@session ||= Net::SSH.start(@hostname,
|
14
|
+
@session ||= Net::SSH.start(@hostname, user_name)
|
15
|
+
end
|
16
|
+
|
17
|
+
def config
|
18
|
+
@config ||= Net::SSH::Config.for(@hostname)
|
19
|
+
end
|
20
|
+
|
21
|
+
def user_name
|
22
|
+
config[:user] || Etc.getlogin
|
15
23
|
end
|
16
24
|
|
17
25
|
def fs
|
@@ -66,7 +66,7 @@ module Producer::Core
|
|
66
66
|
|
67
67
|
context 'when querying the path raises a Net::SFTP::StatusException' do
|
68
68
|
before do
|
69
|
-
response = double('response', code: '42', message: '
|
69
|
+
response = double('response', code: '42', message: 'some message')
|
70
70
|
ex = Net::SFTP::StatusException.new(response)
|
71
71
|
allow(stat).to receive(:file?).and_raise(ex)
|
72
72
|
end
|
@@ -12,8 +12,8 @@ module Producer::Core
|
|
12
12
|
end
|
13
13
|
|
14
14
|
describe '#session' do
|
15
|
-
it 'builds a new SSH session to the remote host' do
|
16
|
-
expect(Net::SSH).to receive(:start).with(hostname,
|
15
|
+
it 'builds a new SSH session to the remote host with #user_name' do
|
16
|
+
expect(Net::SSH).to receive(:start).with(hostname, remote.user_name)
|
17
17
|
remote.session
|
18
18
|
end
|
19
19
|
|
@@ -29,6 +29,44 @@ module Producer::Core
|
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
|
+
describe '#config' do
|
33
|
+
it 'builds a config for current host name' do
|
34
|
+
expect(Net::SSH::Config).to receive(:for).with(hostname)
|
35
|
+
remote.config
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'returns the config' do
|
39
|
+
ssh_config = double('ssh config')
|
40
|
+
allow(Net::SSH::Config).to receive(:for) { ssh_config }
|
41
|
+
expect(remote.config).to be ssh_config
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'memoizes the config' do
|
45
|
+
allow(Net::SSH::Config).to receive(:for) { Object.new }
|
46
|
+
expect(remote.config).to be remote.config
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe '#user_name' do
|
51
|
+
context 'ssh config has an entry for user' do
|
52
|
+
let(:config_user_name) { 'my_user_name' }
|
53
|
+
|
54
|
+
before do
|
55
|
+
allow(Net::SSH::Config).to receive(:for) { { user: config_user_name } }
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'returns the configured value' do
|
59
|
+
expect(remote.user_name).to eq config_user_name
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
context 'ssh config has no entry for user' do
|
64
|
+
it 'returns the name of the user currently logged in' do
|
65
|
+
expect(remote.user_name).to eq Etc.getlogin
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
32
70
|
describe '#fs' do
|
33
71
|
it 'builds a new FS' do
|
34
72
|
expect(Remote::FS).to receive(:new)
|
metadata
CHANGED
@@ -1,122 +1,108 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: producer-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.4
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Thibault Jouan
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2015-04-03 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: net-ssh
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: net-sftp
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ">="
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - ">="
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rspec
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - ">="
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - ">="
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: cucumber
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - ">="
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - ">="
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: aruba
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - ">="
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '0'
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - ">="
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '0'
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: rake
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
|
-
- -
|
87
|
+
- - ">="
|
100
88
|
- !ruby/object:Gem::Version
|
101
89
|
version: '0'
|
102
90
|
type: :development
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
|
-
- -
|
94
|
+
- - ">="
|
108
95
|
- !ruby/object:Gem::Version
|
109
96
|
version: '0'
|
110
|
-
description:
|
111
|
-
|
112
|
-
'
|
97
|
+
description: |
|
98
|
+
Software provisioning tool, including a DSL to write "recipes".
|
113
99
|
email: tj@a13.fr
|
114
100
|
executables:
|
115
101
|
- producer
|
116
102
|
extensions: []
|
117
103
|
extra_rdoc_files: []
|
118
104
|
files:
|
119
|
-
- .gitignore
|
105
|
+
- ".gitignore"
|
120
106
|
- Gemfile
|
121
107
|
- Guardfile
|
122
108
|
- LICENSE
|
@@ -129,8 +115,11 @@ files:
|
|
129
115
|
- features/recipes/evaluation.feature
|
130
116
|
- features/recipes/source.feature
|
131
117
|
- features/recipes/target.feature
|
118
|
+
- features/ssh/config.feature
|
119
|
+
- features/steps/etc_steps.rb
|
132
120
|
- features/steps/recipe_steps.rb
|
133
121
|
- features/steps/remote_steps.rb
|
122
|
+
- features/steps/ssh_steps.rb
|
134
123
|
- features/support/env_aruba.rb
|
135
124
|
- features/support/env_cucumber-doc_string.rb
|
136
125
|
- features/support/ssh.rb
|
@@ -187,28 +176,27 @@ files:
|
|
187
176
|
- spec/support/tests_helpers.rb
|
188
177
|
homepage: https://rubygems.org/gems/producer-core
|
189
178
|
licenses: []
|
179
|
+
metadata: {}
|
190
180
|
post_install_message:
|
191
181
|
rdoc_options: []
|
192
182
|
require_paths:
|
193
183
|
- lib
|
194
184
|
required_ruby_version: !ruby/object:Gem::Requirement
|
195
|
-
none: false
|
196
185
|
requirements:
|
197
|
-
- -
|
186
|
+
- - ">="
|
198
187
|
- !ruby/object:Gem::Version
|
199
188
|
version: '0'
|
200
189
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
201
|
-
none: false
|
202
190
|
requirements:
|
203
|
-
- -
|
191
|
+
- - ">="
|
204
192
|
- !ruby/object:Gem::Version
|
205
193
|
version: '0'
|
206
194
|
requirements: []
|
207
195
|
rubyforge_project:
|
208
|
-
rubygems_version:
|
196
|
+
rubygems_version: 2.4.5
|
209
197
|
signing_key:
|
210
|
-
specification_version:
|
211
|
-
summary: producer-core-0.1.
|
198
|
+
specification_version: 4
|
199
|
+
summary: producer-core-0.1.4
|
212
200
|
test_files:
|
213
201
|
- features/actions/echo.feature
|
214
202
|
- features/actions/sh.feature
|
@@ -217,8 +205,11 @@ test_files:
|
|
217
205
|
- features/recipes/evaluation.feature
|
218
206
|
- features/recipes/source.feature
|
219
207
|
- features/recipes/target.feature
|
208
|
+
- features/ssh/config.feature
|
209
|
+
- features/steps/etc_steps.rb
|
220
210
|
- features/steps/recipe_steps.rb
|
221
211
|
- features/steps/remote_steps.rb
|
212
|
+
- features/steps/ssh_steps.rb
|
222
213
|
- features/support/env_aruba.rb
|
223
214
|
- features/support/env_cucumber-doc_string.rb
|
224
215
|
- features/support/ssh.rb
|