awsssh 2.0.1 → 2.1.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.
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