opsicle 0.18.1 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
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: []