awsssh 2.0.1 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. checksums.yaml +8 -8
  2. data/.gitignore +1 -0
  3. data/awsssh.gemspec +3 -1
  4. data/lib/awsssh.rb +24 -17
  5. metadata +30 -1
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NzVmZmEzNDNkNDZjNzMzZDEwNjZmOGZiYjA1NGZkN2UzYTM2Nzc2Yg==
4
+ MDM3MTZlNjg5OWM0YzMyMjkzMzdjYzQzNTAyOWJkODkzZjA5YzAxNQ==
5
5
  data.tar.gz: !binary |-
6
- YmIzNjlkMzE2ZDVhZjBhZGRjMDk3ZmZlZmQxMjE2YTVmYjc5N2E4ZQ==
6
+ MGE1NjAxYWIzZDE2YTRjMjlhNWY2YzM5OGM2ZDFjODhjMjE3OWQwZg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- OTg3NzFjOGJjN2UxM2NiZmU4ODdiNTU1MmQyMTlhZmRlM2Q4YzY2YWE2OWQw
10
- YTQzMjliMzVhMThkNzEwZDQ4NDNkNDIzNTM1MWYxOWIwNDIyZjUyZWE3Njg2
11
- Nzk3MGQ3YWQ3YTNjODc5YjQ5NmVkZmI3ZDBhMjBhNWYwYWMzYWI=
9
+ MmQ4MjRkNGUzNjUxMjVhNmQxNjllYzQ3Yjg5NGExZDRjYzA2OTQ4YzA4MTVl
10
+ OTE0OTliYWE1MDQwODJhMzRlNGQ1ZTYxZjEzN2YzODI5OTE5YmQ0YjhjZDhm
11
+ NmU5M2Y3ODIxOWY5MTM5Mzc3MWUxNDFhOGM5OGQwM2RlM2Q4ZmM=
12
12
  data.tar.gz: !binary |-
13
- M2M1ZjkyYTM4ZmQyZDU3NzQ5NzgyZTgyYjlmZmJkMDhlMjc5ZDRiOGIwOWE2
14
- ODkxNTVlZTI2YzQ2ZTEwZjA1YmZiYjM2ZmNjODQ2NjE2Yjk2YWI5MDAxYzhj
15
- YzEzZjE4NjY3NDQwODBiOWJhMmM5YWJiOGVmMDc0MWM4MWUyM2M=
13
+ OGE5NzdiM2FhYjE3MWIyOGI3OGNhZGZjNWVjNGI2M2JiM2ZlYzU5NzFiM2U2
14
+ ZGUwOGY5ZTg3YzM1Y2U1MWJkYWZkYjE3YjM5ZmE3OWMwMTFlNDg5ZjRjMGM3
15
+ Y2YwZTM2NmMxODczNDg0YjQyOGFhMDRhYTQ3OTA5YTkwNzVmNDc=
@@ -0,0 +1 @@
1
+ *.gem
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'awsssh'
3
- s.version = '2.0.1'
3
+ s.version = '2.1.0'
4
4
  s.date = '2014-02-27'
5
5
  s.summary = "Connects you with OpsWorks EC2"
6
6
  s.description = "This will connects you with an EC3 instace"
@@ -13,4 +13,6 @@ Gem::Specification.new do |s|
13
13
 
14
14
 
15
15
  s.add_runtime_dependency "net-ssh", "2.7.0"
16
+ s.add_runtime_dependency "inifile", "2.0.2"
17
+ s.add_runtime_dependency "aws-sdk", "1.35.0"
16
18
  end
@@ -2,8 +2,13 @@
2
2
  require 'rubygems'
3
3
  require 'net/ssh'
4
4
  require 'json'
5
+ require "aws-sdk"
6
+ # require "pry"
7
+ require "inifile"
5
8
 
6
9
  class Awsssh
10
+ CONFIG_DIR = ENV['AWSSSH_CONFIG_DIR'] || "/Users/#{ENV['USER']}/.aws/"
11
+ CONF_FILE = ENV['AWSSSH_CONFIG_FILE'] || "aws_config_"
7
12
 
8
13
  def do_start
9
14
  if ARGV[0] == "--list-accounts"
@@ -17,8 +22,6 @@ class Awsssh
17
22
  end
18
23
  end
19
24
 
20
- CONFIG_DIR = "/Users/#{ENV['USER']}/.aws/"
21
- CONF_FILE = "aws_config_"
22
25
  ##
23
26
  # Renders the Help
24
27
  #
@@ -52,11 +55,11 @@ class Awsssh
52
55
  # - [Array] StackIDs
53
56
 
54
57
  def list_stacks(account)
55
- awscfg(account)
56
- stacks = JSON.parse(`aws opsworks describe-stacks`)
58
+ ow = awscfg(account)
59
+ stacks = ow.client.describe_stacks[:stacks]
57
60
  stack_ids = []
58
- stacks['Stacks'].each do |stack|
59
- stack_ids << stack['StackId']
61
+ stacks.each do |stack|
62
+ stack_ids << stack[:stack_id]
60
63
  end
61
64
  return stack_ids
62
65
  end
@@ -74,9 +77,9 @@ class Awsssh
74
77
  #
75
78
 
76
79
  def read_stack(stackid, account)
77
- # `awscfg #{account}`
78
- awscfg(account)
79
- JSON.parse(`aws opsworks describe-instances --stack-id #{stackid}`)
80
+ ow = awscfg(account)
81
+ ow.client.describe_instances({:stack_id => stackid})
82
+ # JSON.parse(`aws opsworks describe-instances --stack-id #{stackid}`)
80
83
  end
81
84
 
82
85
  ##
@@ -94,7 +97,7 @@ class Awsssh
94
97
  config_files.each do |file|
95
98
  if file[0,CONF_FILE.length] == CONF_FILE
96
99
  file_part = file.split("_")
97
- unless file_part[2].nil?
100
+ unless file_part.last.nil?
98
101
  printf "\t- %-#{length}s\n", file_part[2]
99
102
  end
100
103
  end
@@ -112,8 +115,8 @@ class Awsssh
112
115
  # - <servername> (<status>)
113
116
 
114
117
  def server_name(stack)
115
- stack["Instances"].each do |instance|
116
- printf "\t- %-20s %s\n", instance["Hostname"], instance["Status"]
118
+ stack[:instances].each do |instance|
119
+ printf "\t- %-20s %s\n", instance[:hostname], instance[:status]
117
120
  end
118
121
  end
119
122
 
@@ -145,9 +148,9 @@ class Awsssh
145
148
  stack_ids = list_stacks host[0]
146
149
  stack_ids.each do |stack_id|
147
150
  stack = read_stack(stack_id, host[0])
148
- stack["Instances"].each do |i|
149
- if i["Hostname"] == server
150
- public_dns = i["PublicDns"]
151
+ stack.instances.each do |i|
152
+ if i[:hostname] == server
153
+ public_dns = i[:public_dns]
151
154
  break
152
155
  end
153
156
  end
@@ -166,8 +169,12 @@ class Awsssh
166
169
  end
167
170
 
168
171
  def awscfg(account)
169
- if File.exists?(CONFIG_DIR + CONF_FILE + account)
170
- `awscfg #{account}`
172
+ if cnf = IniFile.load(CONFIG_DIR + CONF_FILE + account)['default']
173
+ return AWS::OpsWorks.new(
174
+ access_key_id: cnf['aws_access_key_id'],
175
+ secret_access_key: cnf['aws_secret_access_key'],
176
+ region: cnf['region']
177
+ )
171
178
  else
172
179
  puts "No config #{CONF_FILE}#{account} found"
173
180
  exit -1
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: awsssh
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sebastian Thiele
@@ -24,6 +24,34 @@ dependencies:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
26
  version: 2.7.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: inifile
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '='
32
+ - !ruby/object:Gem::Version
33
+ version: 2.0.2
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 2.0.2
41
+ - !ruby/object:Gem::Dependency
42
+ name: aws-sdk
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '='
46
+ - !ruby/object:Gem::Version
47
+ version: 1.35.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '='
53
+ - !ruby/object:Gem::Version
54
+ version: 1.35.0
27
55
  description: This will connects you with an EC3 instace
28
56
  email:
29
57
  - Sebastian.Thiele@infopark.de
@@ -32,6 +60,7 @@ executables:
32
60
  extensions: []
33
61
  extra_rdoc_files: []
34
62
  files:
63
+ - .gitignore
35
64
  - README.md
36
65
  - awsssh.gemspec
37
66
  - bin/awsssh