opsicle 0.18.1 → 1.0.1

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,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- NjEzMDE0NTIyZmFjZjMwZWIxNTcxOTViNWNkODY3Y2JjMWVjNmE3ZQ==
5
- data.tar.gz: !binary |-
6
- M2Q2NDIwZTg5MzhmZTE2OWFjMmU4ZDIwNWZmZWU0ZWUzZjU3NzBkNQ==
2
+ SHA1:
3
+ metadata.gz: dd852564a1ede7fb04dcaed4294ee7f7b5b019ce
4
+ data.tar.gz: cf272c9d62ee80a1769266762b518e7e009e954c
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- NTY3YjI2YjYxZTRhOGMxYTI2MmFiMWNhZDQ5YjBjNDcwOWU3ZjE4NDg1MzA0
10
- YzZiN2JkNWE2NDY1ODdiNmFmODI4OTJmMWY4ZmZlZWY3ZmM0MzQzZGMwY2Y4
11
- ODlmMDU4OGZkOTgyY2NmZmRhMDhmNDQyZjA2NDU2YTAxZGI3OTU=
12
- data.tar.gz: !binary |-
13
- YzIyMTI0OTg3YjE0MDk5Y2UxNjE1NjMyNWYxNDA1ZjlhNDdhMjQwNjA2Yjkx
14
- OWQ3NDU0NzQ2YWExNTM0NTc5N2JjNzU4ZTUzNzU0NzZmNDVmM2I1YjczYTM0
15
- ZmFlM2I5ZDUxYTE2NjhhMjNhMzY5YWNlNjg5ODEwMjU3MjJhZGU=
6
+ metadata.gz: 9317e1d2e8c009041833869af3264bfe7cea202bd9a96c0a69684a153a0fb71697a0bdf086da3657008b0fecf1075afc5166adb1a071f14ab41ec301ac51809d
7
+ data.tar.gz: 3e450fca539213c34991b150c3f7d9440ea6ce3dd6c14ac81ecc017a2e1fb1fb4fa27da7b5864658a47654c0e823338ec6e8e30cbb7f1f0f866f7aee675cccf7
data/bin/opsicle CHANGED
@@ -43,6 +43,14 @@ on_error do |exception|
43
43
  end
44
44
  end
45
45
 
46
+ desc "Convert the ~/.fog file to a ~/.aws/credentials file"
47
+ command 'legacy-credential-converter' do |c|
48
+ c.action do |args|
49
+ converter = Opsicle::LegacyCredentialConverter.new
50
+ converter.execute
51
+ end
52
+ end
53
+
46
54
  desc "Deploy your current app to the given environment stack"
47
55
  arg_name '<environment>'
48
56
  command :deploy do |c|
@@ -7,10 +7,10 @@ module Opsicle
7
7
  attr_reader :config
8
8
 
9
9
  def initialize(environment)
10
- @config = Config.new(environment)
11
- @config.configure_aws!
12
- @opsworks = AWS::OpsWorks.new.client
13
- @s3 = AWS::S3.new
10
+ @config = Config.instance
11
+ @config.configure_aws_environment!(environment)
12
+ @opsworks = Aws::OpsWorks::Client.new(region: 'us-east-1', credentials: @config.aws_credentials)
13
+ @s3 = Aws::S3::Client.new(region: 'us-east-1', credentials: @config.aws_credentials)
14
14
  end
15
15
 
16
16
  def run_command(command, command_args={}, options={})
@@ -20,7 +20,7 @@ module Opsicle
20
20
  end
21
21
 
22
22
  def api_call(command, options={})
23
- opsworks.public_send(command, options)
23
+ opsworks.public_send(command, options).to_h
24
24
  end
25
25
 
26
26
  def opsworks_url
@@ -10,3 +10,4 @@ require "opsicle/commands/ssh"
10
10
  require "opsicle/commands/ssh_key"
11
11
  require "opsicle/commands/ssh_clean_keys"
12
12
  require "opsicle/commands/user_profile_info"
13
+ require "opsicle/commands/legacy_credential_converter"
@@ -0,0 +1,16 @@
1
+ require "opsicle/credential_converter_helper"
2
+
3
+ module Opsicle
4
+ class LegacyCredentialConverter
5
+ include CredentialConverterHelper
6
+
7
+ def initialize
8
+ end
9
+
10
+ def execute
11
+ Output.say "Converting your ~/.fog file to a ~/.aws/credentials file..."
12
+
13
+ convert_fog_to_aws
14
+ end
15
+ end
16
+ end
@@ -29,8 +29,7 @@ module Opsicle
29
29
  end
30
30
 
31
31
  def instances
32
- @instances ||= client.api_call(:describe_instances, { stack_id: client.config.opsworks_config[:stack_id] })
33
- .data[:instances]
32
+ @instances ||= client.api_call(:describe_instances, { stack_id: client.config.opsworks_config[:stack_id] })[:instances]
34
33
  .select { |instance| instance[:status].to_s == 'online'}
35
34
  .sort { |a,b| a[:hostname] <=> b[:hostname] }
36
35
  end
@@ -22,8 +22,7 @@ module Opsicle
22
22
  end
23
23
 
24
24
  def instances
25
- client.api_call(:describe_instances, { stack_id: client.config.opsworks_config[:stack_id] })
26
- .data[:instances]
25
+ client.api_call(:describe_instances, { stack_id: client.config.opsworks_config[:stack_id] })[:instances]
27
26
  end
28
27
  end
29
28
  end
@@ -9,14 +9,19 @@ module Opsicle
9
9
 
10
10
  attr_reader :environment
11
11
 
12
- def initialize(environment)
13
- @environment = environment.to_sym
12
+ def self.instance
13
+ @instance ||= new
14
+ end
15
+
16
+ def aws_credentials
17
+ Aws::Credentials.new(aws_config[:access_key_id], aws_config[:secret_access_key], aws_config[:session_token])
14
18
  end
15
19
 
16
20
  def aws_config
17
21
  return @aws_config if @aws_config
18
22
  if fog_config[:mfa_serial_number]
19
- @aws_config = get_session.credentials
23
+ creds = get_session.credentials
24
+ @aws_config = { access_key_id: creds.access_key_id, secret_access_key: creds.secret_access_key, session_token: creds.session_token }
20
25
  else
21
26
  @aws_config = { access_key_id: fog_config[:aws_access_key_id], secret_access_key: fog_config[:aws_secret_access_key] }
22
27
  end
@@ -31,9 +36,9 @@ module Opsicle
31
36
  @opsworks_config ||= load_config(OPSICLE_CONFIG_PATH)
32
37
  end
33
38
 
34
- def configure_aws!
35
- AWS.config(aws_config)
36
- end
39
+ def configure_aws_environment!(environment)
40
+ @environment = environment.to_sym
41
+ end
37
42
 
38
43
  def load_config(file)
39
44
  raise MissingConfig, "Missing configuration file: #{file} Run 'opsicle help'" unless File.exist?(file)
@@ -44,15 +49,18 @@ module Opsicle
44
49
  end
45
50
 
46
51
  def get_mfa_token
47
- Output.ask("Enter MFA token: "){ |q| q.validate = /^\d{6}$/ }
52
+ return @token if @token
53
+ @token = Output.ask("Enter MFA token: "){ |q| q.validate = /^\d{6}$/ }
48
54
  end
49
55
 
50
56
  def get_session
51
57
  return @session if @session
52
- sts = AWS::STS.new(access_key_id: fog_config[:aws_access_key_id],
53
- secret_access_key: fog_config[:aws_secret_access_key])
54
- @session = sts.new_session(duration: session_duration, serial_number: fog_config[:mfa_serial_number],
55
- token_code: get_mfa_token)
58
+ sts = Aws::STS::Client.new(access_key_id: fog_config[:aws_access_key_id],
59
+ secret_access_key: fog_config[:aws_secret_access_key],
60
+ region: 'us-east-1')
61
+ @session = sts.get_session_token(duration_seconds: session_duration,
62
+ serial_number: fog_config[:mfa_serial_number],
63
+ token_code: get_mfa_token)
56
64
  end
57
65
 
58
66
  def session_duration
@@ -0,0 +1,35 @@
1
+ require 'yaml'
2
+
3
+ module Opsicle
4
+ module CredentialConverterHelper
5
+ def convert_fog_to_aws
6
+ # open/make new credentials file, read, and gather the groups of aws credentials already in file
7
+ cred_path = File.expand_path("~/.aws/credentials")
8
+ cred_file = File.open(cred_path, "a+")
9
+ cred_text = cred_file.read
10
+ cred_groups = cred_text.scan(/\[([\S]*)\]/).flatten
11
+
12
+ # open existing fog file, and load as yaml hash
13
+ fog_path = File.expand_path("~/.fog")
14
+ fog_hash = YAML::load_file(fog_path)
15
+
16
+ # for each environment in the fog file, go through and if it isn't in credentials file, then put it and data in
17
+ fog_hash.each do | environment, credentials |
18
+ if !cred_groups.include?(environment)
19
+ copy_data(cred_file, environment, credentials)
20
+ end
21
+ end
22
+
23
+ # close to save
24
+ cred_file.close
25
+ end
26
+
27
+ def copy_data(cred_file, environment, credentials)
28
+ cred_file.puts
29
+ cred_file.puts "[#{environment}]"
30
+ credentials.each do | key, value |
31
+ cred_file.puts "#{key} = #{value}"
32
+ end
33
+ end
34
+ end
35
+ end
@@ -2,7 +2,7 @@ module Opsicle
2
2
  class Instances
3
3
 
4
4
  attr_accessor :client
5
- class <<self
5
+ class << self
6
6
  attr_accessor :client
7
7
  end
8
8
 
@@ -2,17 +2,17 @@ require 'pathname'
2
2
 
3
3
  module Opsicle
4
4
  class S3Bucket
5
- attr_reader :bucket
5
+ attr_reader :bucket
6
6
 
7
- def initialize(client, bucket_name)
8
- @bucket = client.s3.buckets[bucket_name]
9
- raise UnknownBucket unless @bucket.exists?
10
- end
7
+ def initialize(client, bucket_name)
8
+ @bucket = Aws::S3::Bucket.new(name: bucket_name, client: client.s3)
9
+ raise UnknownBucket unless @bucket.exists?
10
+ end
11
11
 
12
- def update(object)
13
- obj = bucket.objects[object]
14
- obj.write(Pathname.new(object))
15
- end
12
+ def update(object)
13
+ obj = bucket.object(object)
14
+ obj.upload_file(Pathname.new(object))
15
+ end
16
16
  end
17
17
 
18
18
  UnknownBucket = Class.new(StandardError)
@@ -1,3 +1,3 @@
1
1
  module Opsicle
2
- VERSION = "0.18.1"
2
+ VERSION = "1.0.1"
3
3
  end
@@ -7,16 +7,21 @@ module Opsicle
7
7
  let(:aws_client) { double }
8
8
  let(:config) { double }
9
9
  before do
10
- ow_stub = double
10
+ mock_keys = {access_key_id: 'key', secret_access_key: 'secret'}
11
+ allow(config).to receive(:aws_credentials).and_return(mock_keys)
11
12
  allow(config).to receive(:opsworks_config).and_return({ stack_id: 'stack', app_id: 'app', something_else: 'true' })
12
- allow(ow_stub).to receive(:client).and_return(aws_client)
13
13
  allow(Config).to receive(:new).and_return(config)
14
- allow(AWS::OpsWorks).to receive(:new).and_return(ow_stub)
14
+ allow(Config).to receive(:instance).and_return(config)
15
+ allow(Aws::OpsWorks::Client).to receive(:new).and_return(aws_client)
16
+ allow(Aws::S3::Client).to receive(:new).and_return(aws_client)
17
+ allow(config).to receive(:configure_aws_environment!).with("derp")
18
+ allow(aws_client).to receive(:configure_aws_environment!).with("derp")
19
+ allow(subject).to receive(:configure_aws_environment!).with("derp")
20
+ allow(Client).to receive(:configure_aws_environment!).with("derp")
15
21
  end
16
22
 
17
23
  context "#run_command" do
18
24
  it "calls out to the aws client with all the config options" do
19
- expect(config).to receive(:configure_aws!)
20
25
  expect(aws_client).to receive(:create_deployment).with(
21
26
  hash_including(
22
27
  command: { name: 'deploy', args: {} },
@@ -27,7 +32,6 @@ module Opsicle
27
32
  subject.run_command('deploy')
28
33
  end
29
34
  it "removes extra options from the opsworks config" do
30
- expect(config).to receive(:configure_aws!)
31
35
  expect(aws_client).to receive(:create_deployment).with(hash_excluding(:something_else))
32
36
  subject.run_command('deploy')
33
37
  end
@@ -7,7 +7,6 @@ module Opsicle
7
7
  let(:client) { double(config: double(opsworks_config: {stack_id: "1234"})) }
8
8
  let(:stack) { double(client: client) }
9
9
  let(:user_profile) { double }
10
- let(:api_call) { double }
11
10
  before do
12
11
  allow(Client).to receive(:new).with('derp').and_return(client)
13
12
  allow(Stack).to receive(:new).with(client).and_return(stack)
@@ -104,14 +103,12 @@ module Opsicle
104
103
  context "#instances" do
105
104
  it "makes a describe_instances API call" do
106
105
  expect(client).to receive(:api_call).with(:describe_instances, {stack_id: "1234"})
107
- .and_return(api_call)
108
- expect(api_call).to receive(:data).and_return(instances: [{:name => :foo, :status => "online"},{:name => :bar, :status => "stopped"}])
106
+ .and_return(instances: [{:name => :foo, :status => "online"},{:name => :bar, :status => "stopped"}])
109
107
  expect(subject.instances).to eq([{:name => :foo, :status=>"online"}])
110
108
  end
111
109
  it "sorts instances by hostname" do
112
110
  expect(client).to receive(:api_call).with(:describe_instances, {stack_id: "1234"})
113
- .and_return(api_call)
114
- expect(api_call).to receive(:data).and_return(instances: [{:hostname => "taco", :status => "online"},{:hostname => "bar", :status => "online"}])
111
+ .and_return(instances: [{:hostname => "taco", :status => "online"},{:hostname => "bar", :status => "online"}])
115
112
  expect(subject.instances).to eq([{:hostname => "bar", :status=>"online"}, {:hostname => "taco", :status=>"online"}])
116
113
  end
117
114
  end
@@ -3,7 +3,7 @@ require "opsicle"
3
3
 
4
4
  module Opsicle
5
5
  describe Config do
6
- subject { Config.new('derp') }
6
+ subject { Config.new }
7
7
  context "with a valid config" do
8
8
  before do
9
9
  allow(File).to receive(:exist?).with(File.expand_path '~/.fog').and_return(true)
@@ -11,14 +11,19 @@ module Opsicle
11
11
  allow(YAML).to receive(:load_file).with(File.expand_path '~/.fog').and_return({'derp' => { 'aws_access_key_id' => 'key', 'aws_secret_access_key' => 'secret'}})
12
12
  allow(YAML).to receive(:load_file).with('./.opsicle').and_return({'derp' => { 'app_id' => 'app', 'stack_id' => 'stack'}})
13
13
  end
14
+ before :each do
15
+ subject.configure_aws_environment!('derp')
16
+ end
14
17
 
15
18
  context "#aws_config" do
16
19
  it "should contain access_key_id" do
17
20
  expect(subject.aws_config).to have_key(:access_key_id)
21
+ expect(subject.aws_config).to eq({ :access_key_id => 'key', :secret_access_key => 'secret'})
18
22
  end
19
23
 
20
24
  it "should contain secret_access_key" do
21
25
  expect(subject.aws_config).to have_key(:secret_access_key)
26
+ expect(subject.aws_config).to eq({ :access_key_id => 'key', :secret_access_key => 'secret'})
22
27
  end
23
28
  end
24
29
 
@@ -32,35 +37,17 @@ module Opsicle
32
37
  end
33
38
  end
34
39
 
35
- context "#configure_aws!" do
36
- it "should load the config into the AWS module" do
37
- expect(AWS).to receive(:config).with(hash_including(access_key_id: 'key', secret_access_key: 'secret'))
38
- subject.configure_aws!
40
+ context "#aws_credentials" do
41
+ it "should return aws credentials" do
42
+ credentials = double
43
+ allow(Aws::Credentials).to receive(:new).and_return(credentials)
44
+ expect(subject.aws_credentials).to eq(credentials)
39
45
  end
40
46
  end
41
- end
42
-
43
- context "with a valid MFA config" do
44
- before do
45
- allow(File).to receive(:exist?).with(File.expand_path '~/.fog').and_return(true)
46
- mock_fog = { 'derp' => { 'aws_access_key_id' => 'key', 'aws_secret_access_key' => 'secret',
47
- 'mfa_serial_number' => 'tacos' }}
48
- allow(YAML).to receive(:load_file).with(File.expand_path '~/.fog').and_return(mock_fog)
49
-
50
- mock_sts = Class.new
51
- mock_session = Class.new
52
- mock_credentials = { access_key_id: 'key', secret_access_key: 'secret', session_token: 'cats' }
53
- allow(mock_session).to receive(:credentials).and_return(mock_credentials)
54
- allow(mock_sts).to receive(:new_session).and_return(mock_session)
55
- allow(AWS::STS).to receive(:new).and_return(mock_sts)
56
- allow(Output).to receive(:ask).and_return(123456)
57
- end
58
47
 
59
- context "#configure_aws!" do
60
- it "should load the config into the AWS module" do
61
- expect(AWS).to receive(:config).with(hash_including(access_key_id: 'key', secret_access_key: 'secret',
62
- session_token: 'cats'))
63
- subject.configure_aws!
48
+ context "#configure_aws_environment!" do
49
+ it "should return the environment as a symbol" do
50
+ expect(subject.configure_aws_environment!("environment")).to eq(:environment)
64
51
  end
65
52
  end
66
53
  end
@@ -89,5 +76,11 @@ module Opsicle
89
76
  end
90
77
  end
91
78
  end
79
+
80
+ context "singleton support" do
81
+ it "should return a single instance" do
82
+ expect(Config.instance).to eq(Config.instance)
83
+ end
84
+ end
92
85
  end
93
86
  end
@@ -3,48 +3,42 @@ require "opsicle"
3
3
 
4
4
  module Opsicle
5
5
  describe S3Bucket do
6
- subject { S3Bucket.new(client, bucket_name) }
7
- let(:bucket_name) { "bucket" }
8
- let(:bucket) { double(exists?: true) }
9
- let(:buckets) { double(:"[]" => bucket) }
10
- let(:s3) { double(buckets: buckets) }
11
- let(:client) { double(s3: s3) }
6
+ before do
7
+ @object = double('object', :upload_file => true)
8
+ @bucket = double('bucket', :exists? => true, :object => @object)
9
+ allow(Aws::S3::Bucket).to receive(:new).and_return(@bucket)
10
+ @bucket_name = 'name'
11
+ @client = double('client', :s3 => true)
12
+ allow(Pathname).to receive(:new)
13
+ end
12
14
 
13
15
  context "#new" do
14
- subject { S3Bucket }
15
- it "finds the bucket from s3" do
16
- expect(client).to receive(:s3).and_return(s3)
17
- expect(s3).to receive(:buckets).and_return(buckets)
18
- expect(buckets).to receive(:"[]").with(bucket_name).and_return(bucket)
19
- subject.new(client, bucket_name)
16
+ it "find the bucket from s3" do
17
+ expect(@client).to receive(:s3)
18
+ expect(@bucket).to receive(:exists?)
19
+ expect(Aws::S3::Bucket).to receive(:new)
20
+ S3Bucket.new(@client, @bucket_name)
20
21
  end
21
22
 
22
23
  it "throws an error if the bucket can't be found" do
23
- allow(bucket).to receive(:exists?).and_return(false)
24
- expect(client).to receive(:s3).and_return(s3)
25
- expect(s3).to receive(:buckets).and_return(buckets)
26
- expect(buckets).to receive(:"[]").with(bucket_name).and_return(bucket)
27
- expect { subject.new(client, bucket_name) }.to raise_error(UnknownBucket)
24
+ allow(@bucket).to receive(:exists?).and_return(false)
25
+ expect { S3Bucket.new(@client, @bucket_name) }.to raise_error(UnknownBucket)
28
26
  end
29
27
  end
30
28
 
31
29
  context "#update" do
32
- let(:object) { double }
33
- let(:objects) { double(:"[]" => object) }
34
- before do
35
- allow(Pathname).to receive(:new)
36
- end
37
-
38
30
  it "finds the object in the s3 bucket" do
39
- allow(object).to receive(:write)
40
- expect(bucket).to receive(:objects).and_return(objects)
41
- subject.update(object)
31
+ expect(@bucket).to receive(:object)
32
+ bucket = S3Bucket.new(@client, @bucket_name)
33
+ bucket.update("object")
42
34
  end
43
35
 
44
36
  it "writes the new object in the s3 bucket" do
45
- allow(bucket).to receive(:objects).and_return(objects)
46
- expect(object).to receive(:write)
47
- subject.update(object)
37
+ expect(Pathname).to receive(:new).with("object")
38
+ expect(@object).to receive(:upload_file)
39
+ allow(@bucket).to receive(:object).and_return(@object)
40
+ bucket = S3Bucket.new(@client, @bucket_name)
41
+ bucket.update("object")
48
42
  end
49
43
  end
50
44
  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.18.1
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Fleener
@@ -9,174 +9,174 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-12-15 00:00:00.000000000 Z
12
+ date: 2016-07-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: aws-sdk
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ~>
18
+ - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '1.30'
20
+ version: '2'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ~>
25
+ - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: '1.30'
27
+ version: '2'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: gli
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ~>
32
+ - - "~>"
33
33
  - !ruby/object:Gem::Version
34
34
  version: '2.9'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ~>
39
+ - - "~>"
40
40
  - !ruby/object:Gem::Version
41
41
  version: '2.9'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: highline
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ~>
46
+ - - "~>"
47
47
  - !ruby/object:Gem::Version
48
48
  version: '1.6'
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ~>
53
+ - - "~>"
54
54
  - !ruby/object:Gem::Version
55
55
  version: '1.6'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: terminal-table
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - ~>
60
+ - - "~>"
61
61
  - !ruby/object:Gem::Version
62
62
  version: '1.4'
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - ~>
67
+ - - "~>"
68
68
  - !ruby/object:Gem::Version
69
69
  version: '1.4'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: minitar
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - ~>
74
+ - - "~>"
75
75
  - !ruby/object:Gem::Version
76
76
  version: '0.5'
77
77
  type: :runtime
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - ~>
81
+ - - "~>"
82
82
  - !ruby/object:Gem::Version
83
83
  version: '0.5'
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: hashdiff
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - ~>
88
+ - - "~>"
89
89
  - !ruby/object:Gem::Version
90
90
  version: '0.2'
91
91
  type: :runtime
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - ~>
95
+ - - "~>"
96
96
  - !ruby/object:Gem::Version
97
97
  version: '0.2'
98
98
  - !ruby/object:Gem::Dependency
99
99
  name: curses
100
100
  requirement: !ruby/object:Gem::Requirement
101
101
  requirements:
102
- - - ~>
102
+ - - "~>"
103
103
  - !ruby/object:Gem::Version
104
104
  version: '1.0'
105
105
  type: :runtime
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
108
108
  requirements:
109
- - - ~>
109
+ - - "~>"
110
110
  - !ruby/object:Gem::Version
111
111
  version: '1.0'
112
112
  - !ruby/object:Gem::Dependency
113
113
  name: bundler
114
114
  requirement: !ruby/object:Gem::Requirement
115
115
  requirements:
116
- - - ~>
116
+ - - "~>"
117
117
  - !ruby/object:Gem::Version
118
118
  version: '1.3'
119
119
  type: :development
120
120
  prerelease: false
121
121
  version_requirements: !ruby/object:Gem::Requirement
122
122
  requirements:
123
- - - ~>
123
+ - - "~>"
124
124
  - !ruby/object:Gem::Version
125
125
  version: '1.3'
126
126
  - !ruby/object:Gem::Dependency
127
127
  name: rake
128
128
  requirement: !ruby/object:Gem::Requirement
129
129
  requirements:
130
- - - ~>
130
+ - - "~>"
131
131
  - !ruby/object:Gem::Version
132
132
  version: '10.1'
133
133
  type: :development
134
134
  prerelease: false
135
135
  version_requirements: !ruby/object:Gem::Requirement
136
136
  requirements:
137
- - - ~>
137
+ - - "~>"
138
138
  - !ruby/object:Gem::Version
139
139
  version: '10.1'
140
140
  - !ruby/object:Gem::Dependency
141
141
  name: rspec
142
142
  requirement: !ruby/object:Gem::Requirement
143
143
  requirements:
144
- - - ~>
144
+ - - "~>"
145
145
  - !ruby/object:Gem::Version
146
146
  version: 3.0.0.beta2
147
147
  type: :development
148
148
  prerelease: false
149
149
  version_requirements: !ruby/object:Gem::Requirement
150
150
  requirements:
151
- - - ~>
151
+ - - "~>"
152
152
  - !ruby/object:Gem::Version
153
153
  version: 3.0.0.beta2
154
154
  - !ruby/object:Gem::Dependency
155
155
  name: guard
156
156
  requirement: !ruby/object:Gem::Requirement
157
157
  requirements:
158
- - - ~>
158
+ - - "~>"
159
159
  - !ruby/object:Gem::Version
160
- version: '2.5'
160
+ version: 2.5.0
161
161
  type: :development
162
162
  prerelease: false
163
163
  version_requirements: !ruby/object:Gem::Requirement
164
164
  requirements:
165
- - - ~>
165
+ - - "~>"
166
166
  - !ruby/object:Gem::Version
167
- version: '2.5'
167
+ version: 2.5.0
168
168
  - !ruby/object:Gem::Dependency
169
169
  name: guard-rspec
170
170
  requirement: !ruby/object:Gem::Requirement
171
171
  requirements:
172
- - - ~>
172
+ - - "~>"
173
173
  - !ruby/object:Gem::Version
174
174
  version: '4.2'
175
175
  type: :development
176
176
  prerelease: false
177
177
  version_requirements: !ruby/object:Gem::Requirement
178
178
  requirements:
179
- - - ~>
179
+ - - "~>"
180
180
  - !ruby/object:Gem::Version
181
181
  version: '4.2'
182
182
  description: CLI for the opsworks platform
@@ -195,6 +195,7 @@ files:
195
195
  - lib/opsicle/commands/chef_update.rb
196
196
  - lib/opsicle/commands/deploy.rb
197
197
  - lib/opsicle/commands/execute_recipes.rb
198
+ - lib/opsicle/commands/legacy_credential_converter.rb
198
199
  - lib/opsicle/commands/list.rb
199
200
  - lib/opsicle/commands/list_instances.rb
200
201
  - lib/opsicle/commands/ssh.rb
@@ -203,6 +204,7 @@ files:
203
204
  - lib/opsicle/commands/update.rb
204
205
  - lib/opsicle/commands/user_profile_info.rb
205
206
  - lib/opsicle/config.rb
207
+ - lib/opsicle/credential_converter_helper.rb
206
208
  - lib/opsicle/deploy_helper.rb
207
209
  - lib/opsicle/deployment.rb
208
210
  - lib/opsicle/deployments.rb
@@ -260,12 +262,12 @@ require_paths:
260
262
  - lib
261
263
  required_ruby_version: !ruby/object:Gem::Requirement
262
264
  requirements:
263
- - - ! '>='
265
+ - - ">="
264
266
  - !ruby/object:Gem::Version
265
267
  version: '0'
266
268
  required_rubygems_version: !ruby/object:Gem::Requirement
267
269
  requirements:
268
- - - ! '>='
270
+ - - ">="
269
271
  - !ruby/object:Gem::Version
270
272
  version: '0'
271
273
  requirements: []