opsicle 0.15.0 → 0.16.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 42511f327120343456e3bd95d738eb11a7cb0d03
4
- data.tar.gz: af897dd068c8c84f22ed7d771d8e3930efc431ed
3
+ metadata.gz: 93b0ea1f860c25fc05de3ba8bb1b88ea62e3a96f
4
+ data.tar.gz: 2c8d8ad2a5aa2c9433b11e456612c6128505f5dc
5
5
  SHA512:
6
- metadata.gz: 2b54b97bc5ffb9200a600706d2ab46b6cbea725e7f7a0c326eb7964d0fc7ec7ab74b16b3c6a78ee7e357e0ca696e9cf774d4a115226adb90d8944c6b0bfb52cd
7
- data.tar.gz: 87a87e920506af28b4137058a07e5c611de6f221a08c5bdbc8fb9a50f1f2e98ca45061678f601bf45fbfe96bbf977fd75f0bb086a28283a7f55fd1710abba98f
6
+ metadata.gz: 5febed7681d8adb153cf3c09242526a0f070ca5e577d12499d4bb52503eb61ba618511db499bf254502c7c8766bf88031a85c6ab34360b70d780ca86c6dcda64
7
+ data.tar.gz: 13e4c19365c7200c822124ef5958e4ba5973f2d14877614e07e0cab523b23534093c024223945e9c2709365272dd8da475ec69e150028a9885247cdff5fbe445
@@ -208,4 +208,14 @@ command 'update' do |c|
208
208
  end
209
209
  end
210
210
 
211
+ desc "Display IAM user profile information as JSON."
212
+ arg_name '<environment>'
213
+ command 'user-profile-info' do |c|
214
+ c.action do |global_options, options, args|
215
+ $color = false
216
+ raise ArgumentError, "Environment is required" unless (environment = args.first)
217
+ Opsicle::UserProfileInfo.new(environment).execute
218
+ end
219
+ end
220
+
211
221
  exit run(ARGV)
@@ -9,3 +9,4 @@ require "opsicle/commands/update"
9
9
  require "opsicle/commands/ssh"
10
10
  require "opsicle/commands/ssh_key"
11
11
  require "opsicle/commands/ssh_clean_keys"
12
+ require "opsicle/commands/user_profile_info"
@@ -1,3 +1,5 @@
1
+ require "opsicle/user_profile"
2
+
1
3
  module Opsicle
2
4
  class SSH
3
5
  attr_reader :client
@@ -5,6 +7,7 @@ module Opsicle
5
7
  def initialize(environment)
6
8
  @client = Client.new(environment)
7
9
  @stack = Opsicle::Stack.new(@client)
10
+ @user_profile = Opsicle::UserProfile.new(@client)
8
11
  end
9
12
 
10
13
  def execute(options={})
@@ -37,7 +40,7 @@ module Opsicle
37
40
  end
38
41
 
39
42
  def ssh_username
40
- client.api_call(:describe_my_user_profile)[:user_profile][:ssh_username]
43
+ @user_profile.ssh_username
41
44
  end
42
45
 
43
46
  def ssh_command(instance, options={})
@@ -0,0 +1,21 @@
1
+ require "json"
2
+ require "opsicle/user_profile"
3
+
4
+ module Opsicle
5
+ class UserProfileInfo
6
+ attr_reader :client
7
+
8
+ def initialize(environment)
9
+ @client = Client.new(environment)
10
+ @user_profile = UserProfile.new(@client)
11
+ end
12
+
13
+ def execute(options={})
14
+ Output.say output.to_json
15
+ end
16
+
17
+ def output
18
+ @user_profile.attributes
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,30 @@
1
+ module Opsicle
2
+ class UserProfile
3
+ attr_reader :client
4
+
5
+ def initialize(client)
6
+ @client = client
7
+ end
8
+
9
+ def ssh_username
10
+ attributes.fetch(:ssh_username)
11
+ end
12
+
13
+ def iam_username
14
+ attributes.fetch(:name)
15
+ end
16
+
17
+ def public_key
18
+ attributes.fetch(:ssh_public_key)
19
+ end
20
+
21
+ def arn
22
+ attributes.fetch(:iam_user_arn)
23
+ end
24
+
25
+ def attributes
26
+ @attributes ||= client.api_call(:describe_my_user_profile)[:user_profile]
27
+ end
28
+
29
+ end
30
+ end
@@ -1,3 +1,3 @@
1
1
  module Opsicle
2
- VERSION = "0.15.0"
2
+ VERSION = "0.16.0"
3
3
  end
@@ -6,10 +6,12 @@ module Opsicle
6
6
  subject { SSH.new('derp') }
7
7
  let(:client) { double(config: double(opsworks_config: {stack_id: "1234"})) }
8
8
  let(:stack) { double(client: client) }
9
+ let(:user_profile) { double }
9
10
  let(:api_call) { double }
10
11
  before do
11
12
  allow(Client).to receive(:new).with('derp').and_return(client)
12
13
  allow(Stack).to receive(:new).with(client).and_return(stack)
14
+ allow(UserProfile).to receive(:new).with(client).and_return(user_profile)
13
15
  end
14
16
 
15
17
  context "#execute" do
@@ -104,8 +106,7 @@ module Opsicle
104
106
 
105
107
  context "#ssh_username" do
106
108
  it "makes a describe_my_user_profile API call" do
107
- allow(client).to receive(:api_call).with(:describe_my_user_profile)
108
- .and_return({user_profile: {:ssh_username => "captkirk01"}})
109
+ allow(user_profile).to receive(:ssh_username).and_return("captkirk01")
109
110
  expect(subject.ssh_username).to eq("captkirk01")
110
111
  end
111
112
  end
@@ -0,0 +1,33 @@
1
+ require "spec_helper"
2
+ require "opsicle"
3
+
4
+ module Opsicle
5
+ describe UserProfileInfo do
6
+ subject { UserProfileInfo.new(env) }
7
+
8
+ let(:env) { "example" }
9
+ let(:client) { double("Client") }
10
+ let(:user_profile) { double("UserProfile", attributes: {foo: "bar"}) }
11
+
12
+ before do
13
+ allow(Client).to receive(:new).with(env).and_return(client)
14
+ allow(UserProfile).to receive(:new).with(client).and_return(user_profile)
15
+ end
16
+
17
+ context "#execute" do
18
+ it "renders its output as JSON" do
19
+ allow(subject).to receive(:output).and_return(user_profile.attributes)
20
+
21
+ expect(Output).to receive(:say).with(user_profile.attributes.to_json)
22
+
23
+ subject.execute
24
+ end
25
+ end
26
+
27
+ context "#output" do
28
+ it "returns the profile's attributes" do
29
+ expect(subject.output).to eq(user_profile.attributes)
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,50 @@
1
+ require "spec_helper"
2
+ require "opsicle/user_profile"
3
+
4
+ module Opsicle
5
+ describe UserProfile do
6
+ subject { UserProfile.new client }
7
+
8
+ let(:client) { double("Opsicle::Client") }
9
+
10
+ let(:ssh_username) { double }
11
+ let(:iam_username) { double }
12
+ let(:public_key) { double }
13
+ let(:arn) { double }
14
+
15
+ before do
16
+ allow(client).to receive(:api_call).with(:describe_my_user_profile).and_return({
17
+ user_profile: {
18
+ iam_user_arn: arn,
19
+ name: iam_username,
20
+ ssh_username: ssh_username,
21
+ ssh_public_key: public_key,
22
+ }
23
+ })
24
+ end
25
+
26
+ context "#ssh_username" do
27
+ it "returns the IAM profile's SSH username" do
28
+ expect(subject.ssh_username).to eq(ssh_username)
29
+ end
30
+ end
31
+
32
+ context "#iam_username" do
33
+ it "returns the IAM profile's AWS username" do
34
+ expect(subject.iam_username).to eq(iam_username)
35
+ end
36
+ end
37
+
38
+ context "#public_key" do
39
+ it "returns the IAM profile's SSH public key" do
40
+ expect(subject.public_key).to eq(public_key)
41
+ end
42
+ end
43
+
44
+ context "#arn" do
45
+ it "returns the IAM profile's ARN ID" do
46
+ expect(subject.arn).to eq(arn)
47
+ end
48
+ end
49
+ end
50
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opsicle
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.0
4
+ version: 0.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Fleener
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-04-24 00:00:00.000000000 Z
12
+ date: 2015-05-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: aws-sdk
@@ -201,6 +201,7 @@ files:
201
201
  - lib/opsicle/commands/ssh_clean_keys.rb
202
202
  - lib/opsicle/commands/ssh_key.rb
203
203
  - lib/opsicle/commands/update.rb
204
+ - lib/opsicle/commands/user_profile_info.rb
204
205
  - lib/opsicle/config.rb
205
206
  - lib/opsicle/deploy_helper.rb
206
207
  - lib/opsicle/deployment.rb
@@ -224,6 +225,7 @@ files:
224
225
  - lib/opsicle/output.rb
225
226
  - lib/opsicle/s3_bucket.rb
226
227
  - lib/opsicle/stack.rb
228
+ - lib/opsicle/user_profile.rb
227
229
  - lib/opsicle/version.rb
228
230
  - spec/opsicle/client_spec.rb
229
231
  - spec/opsicle/commands/chef_update_spec.rb
@@ -234,6 +236,7 @@ files:
234
236
  - spec/opsicle/commands/ssh_key_spec.rb
235
237
  - spec/opsicle/commands/ssh_spec.rb
236
238
  - spec/opsicle/commands/update_spec.rb
239
+ - spec/opsicle/commands/user_profile_info_spec.rb
237
240
  - spec/opsicle/config_spec.rb
238
241
  - spec/opsicle/errors_spec.rb
239
242
  - spec/opsicle/instances_spec.rb
@@ -245,6 +248,7 @@ files:
245
248
  - spec/opsicle/monitor/subpanel_spec.rb
246
249
  - spec/opsicle/output_spec.rb
247
250
  - spec/opsicle/s3_bucket_spec.rb
251
+ - spec/opsicle/user_profile_spec.rb
248
252
  - spec/spec_helper.rb
249
253
  homepage: https://github.com/sportngin/opsicle
250
254
  licenses:
@@ -266,7 +270,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
266
270
  version: '0'
267
271
  requirements: []
268
272
  rubyforge_project:
269
- rubygems_version: 2.4.5
273
+ rubygems_version: 2.4.2
270
274
  signing_key:
271
275
  specification_version: 4
272
276
  summary: An opsworks specific abstraction on top of the aws sdk
@@ -280,6 +284,7 @@ test_files:
280
284
  - spec/opsicle/commands/ssh_key_spec.rb
281
285
  - spec/opsicle/commands/ssh_spec.rb
282
286
  - spec/opsicle/commands/update_spec.rb
287
+ - spec/opsicle/commands/user_profile_info_spec.rb
283
288
  - spec/opsicle/config_spec.rb
284
289
  - spec/opsicle/errors_spec.rb
285
290
  - spec/opsicle/instances_spec.rb
@@ -291,4 +296,5 @@ test_files:
291
296
  - spec/opsicle/monitor/subpanel_spec.rb
292
297
  - spec/opsicle/output_spec.rb
293
298
  - spec/opsicle/s3_bucket_spec.rb
299
+ - spec/opsicle/user_profile_spec.rb
294
300
  - spec/spec_helper.rb