mulder 0.0.2 → 0.0.3
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 +4 -4
- data/README.markdown +24 -0
- data/bin/mulder +5 -0
- data/lib/mulder.rb +11 -0
- data/lib/mulder/cli.rb +12 -0
- data/lib/mulder/formats/base.rb +17 -0
- data/lib/mulder/formats/human.rb +13 -0
- data/lib/mulder/formatter.rb +25 -0
- data/lib/mulder/version.rb +1 -1
- data/mulder.gemspec +1 -0
- data/spec/lib/mulder/formats/base_spec.rb +17 -0
- data/spec/lib/mulder/formats/human_spec.rb +14 -0
- data/spec/lib/mulder/formatter_spec.rb +19 -0
- data/spec/lib/mulder_spec.rb +22 -0
- metadata +27 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fde0e9bde59fcc1ca2c09d4b539c7247500f35d1
|
4
|
+
data.tar.gz: f0f281e98da7eb020a33e6178ac46e91d307afed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0a0f75eaf98fc1d52a093da22cdff7a6a5365ce0d194385020dc7cf888ebbfd9be3ab793cc0a06cdda9badab02d44bd97fce19ce37bfcb4e8de8679f8cfb8b52
|
7
|
+
data.tar.gz: c11732ede3ee8f3634b9a9dd2c05c5dec2e6642c63ded0e965495af8746aff92120d8f1423f90de7db1009cc09c47234b41d030b5f16fb53bd8bb7b3efbb9422
|
data/README.markdown
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
A deploy-time helper for your AWS AutoScaling groups, and servers. Discover the IP addresses of your instances by AutoScalingGroup.
|
4
4
|
|
5
|
+
[](https://travis-ci.org/shopkeep/mulder)
|
6
|
+
|
5
7
|
## Installation
|
6
8
|
|
7
9
|
Add this line to your application's Gemfile:
|
@@ -18,6 +20,28 @@ Or install it yourself as:
|
|
18
20
|
|
19
21
|
## Usage
|
20
22
|
|
23
|
+
### CLI
|
24
|
+
|
25
|
+
To see the web servers for an app, and environment:
|
26
|
+
|
27
|
+
mulder search banana_sandwich production WebServerGroup
|
28
|
+
|
29
|
+
Example output:
|
30
|
+
|
31
|
+
[
|
32
|
+
{
|
33
|
+
:id => "i-ididid",
|
34
|
+
:dns_name => "web.prod.example.com",
|
35
|
+
:public_ip_address => "1.0.1.0",
|
36
|
+
:private_ip_address => "0.1.0.1",
|
37
|
+
:created_at => 2013-08-08 18:21:05 UTC
|
38
|
+
}
|
39
|
+
]
|
40
|
+
|
41
|
+
To change the configration file:
|
42
|
+
|
43
|
+
mulder search banana_sandwich production WebServerGroup human foo.yml
|
44
|
+
|
21
45
|
### Capistrano
|
22
46
|
|
23
47
|
At the top of your `deploy.rb` file, add:
|
data/bin/mulder
ADDED
data/lib/mulder.rb
CHANGED
@@ -1,9 +1,20 @@
|
|
1
1
|
module Mulder
|
2
2
|
|
3
|
+
require_relative 'mulder/cli'
|
3
4
|
require_relative 'mulder/client'
|
4
5
|
require_relative 'mulder/config'
|
5
6
|
require_relative 'mulder/connection'
|
7
|
+
require_relative 'mulder/formatter'
|
6
8
|
require_relative 'mulder/instance'
|
7
9
|
require_relative 'mulder/version'
|
8
10
|
|
11
|
+
def self.search(app, env, role, format, config_file)
|
12
|
+
config = Mulder::Config.from(:yaml, file: config_file)
|
13
|
+
connection = Mulder::Connection.new(config)
|
14
|
+
client = Mulder::Client.new(connection, app, env, role)
|
15
|
+
instances = client.instances
|
16
|
+
formatter = Mulder::Formatter.new(instances, format)
|
17
|
+
|
18
|
+
formatter.output
|
19
|
+
end
|
9
20
|
end
|
data/lib/mulder/cli.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'thor'
|
2
|
+
|
3
|
+
module Mulder
|
4
|
+
class CLI < Thor
|
5
|
+
|
6
|
+
desc "search APP ENV ROLE FORMAT CONFIG_FILE", "Search AutoScaling Groups for APP, ENV, ROLE, FORMAT and CONFIG_FILE"
|
7
|
+
def search(app, env, role, format = 'human', config_file = 'config/aws.yml')
|
8
|
+
Mulder.search(app, env, role, format, config_file)
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require_relative 'formats/base'
|
2
|
+
require_relative 'formats/human'
|
3
|
+
|
4
|
+
module Mulder
|
5
|
+
class Formatter
|
6
|
+
|
7
|
+
VALID_FORMATS = {
|
8
|
+
'human' => Formats::Human
|
9
|
+
}
|
10
|
+
|
11
|
+
def initialize(instances, format)
|
12
|
+
unless VALID_FORMATS.keys.include?(format)
|
13
|
+
raise NotImplementedError.new("Formatting as #{format} has not been implemented!")
|
14
|
+
end
|
15
|
+
|
16
|
+
@instances = instances
|
17
|
+
@format = VALID_FORMATS[format]
|
18
|
+
end
|
19
|
+
|
20
|
+
def output
|
21
|
+
@format.new(@instances).output
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
data/lib/mulder/version.rb
CHANGED
data/mulder.gemspec
CHANGED
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Mulder::Formats::Base do
|
4
|
+
describe '.new' do
|
5
|
+
it 'stores the instances' do
|
6
|
+
described_class.new(['foo']).instances.should == ['foo']
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
describe '#output' do
|
11
|
+
it 'raises a NotImplementedError' do
|
12
|
+
expect {
|
13
|
+
described_class.new(['foo']).output
|
14
|
+
}.to raise_error(NotImplementedError)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Mulder::Formats::Human do
|
4
|
+
|
5
|
+
describe '#output' do
|
6
|
+
it 'calls ap with the correct stuff' do
|
7
|
+
mocked_instances = mock(collect: [{ foo: :bar }])
|
8
|
+
formatter = described_class.new(mocked_instances)
|
9
|
+
formatter.expects(:ap).with([{ foo: :bar }], { index: false, sort: true })
|
10
|
+
formatter.output
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Mulder::Formatter do
|
4
|
+
describe '.initialize' do
|
5
|
+
it 'raises an error of the format is not implemented' do
|
6
|
+
expect {
|
7
|
+
described_class.new([], 'foo')
|
8
|
+
}.to raise_error(NotImplementedError, 'Formatting as foo has not been implemented!')
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe "#output" do
|
13
|
+
it 'sends the correct formatter the instances' do
|
14
|
+
mock_instances = mock
|
15
|
+
Mulder::Formats::Human.expects(:new).with(mock_instances).returns(mock(output: 'foo'))
|
16
|
+
Mulder::Formatter.new(mock_instances, 'human').output
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/spec/lib/mulder_spec.rb
CHANGED
@@ -2,4 +2,26 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Mulder do
|
4
4
|
|
5
|
+
describe '.search' do
|
6
|
+
it 'uses the human formatter for the given params' do
|
7
|
+
mock_config = mock
|
8
|
+
Mulder::Config.expects(:from).with(:yaml, file: 'config/aws.yml').returns(mock_config)
|
9
|
+
|
10
|
+
mock_connection = stub
|
11
|
+
Mulder::Connection.expects(:new).with(mock_config).returns(mock_connection)
|
12
|
+
|
13
|
+
mock_client = stub
|
14
|
+
Mulder::Client.expects(:new).with(mock_connection, 'foo-app', 'production', 'WebServerGroup').returns(mock_client)
|
15
|
+
|
16
|
+
mock_instances = stub
|
17
|
+
mock_client.expects(:instances).returns(['foo'])
|
18
|
+
|
19
|
+
mocked_formatter = stub
|
20
|
+
Mulder::Formatter.expects(:new).with(['foo'], 'human').returns(mocked_formatter)
|
21
|
+
|
22
|
+
mocked_formatter.expects(:output).once
|
23
|
+
described_class.search('foo-app', 'production', 'WebServerGroup', 'human', 'config/aws.yml')
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
5
27
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mulder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Duncan Grazier
|
@@ -122,11 +122,26 @@ dependencies:
|
|
122
122
|
- - ~>
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: 0.18.1
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: awesome_print
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ~>
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: 1.1.0
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ~>
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: 1.1.0
|
125
139
|
description: Discover information about AWS Autoscaling Groups
|
126
140
|
email:
|
127
141
|
- itsmeduncan@gmail.com
|
128
142
|
executables:
|
129
143
|
- .gitkeep
|
144
|
+
- mulder
|
130
145
|
extensions: []
|
131
146
|
extra_rdoc_files: []
|
132
147
|
files:
|
@@ -140,18 +155,26 @@ files:
|
|
140
155
|
- README.markdown
|
141
156
|
- Rakefile
|
142
157
|
- bin/.gitkeep
|
158
|
+
- bin/mulder
|
143
159
|
- config/aws.example.yml
|
144
160
|
- lib/mulder.rb
|
145
161
|
- lib/mulder/capistrano.rb
|
162
|
+
- lib/mulder/cli.rb
|
146
163
|
- lib/mulder/client.rb
|
147
164
|
- lib/mulder/config.rb
|
148
165
|
- lib/mulder/connection.rb
|
166
|
+
- lib/mulder/formats/base.rb
|
167
|
+
- lib/mulder/formats/human.rb
|
168
|
+
- lib/mulder/formatter.rb
|
149
169
|
- lib/mulder/instance.rb
|
150
170
|
- lib/mulder/version.rb
|
151
171
|
- mulder.gemspec
|
152
172
|
- spec/lib/mulder/capistrano_spec.rb
|
153
173
|
- spec/lib/mulder/client_spec.rb
|
154
174
|
- spec/lib/mulder/connection_spec.rb
|
175
|
+
- spec/lib/mulder/formats/base_spec.rb
|
176
|
+
- spec/lib/mulder/formats/human_spec.rb
|
177
|
+
- spec/lib/mulder/formatter_spec.rb
|
155
178
|
- spec/lib/mulder/instance_spec.rb
|
156
179
|
- spec/lib/mulder_spec.rb
|
157
180
|
- spec/spec_helper.rb
|
@@ -183,6 +206,9 @@ test_files:
|
|
183
206
|
- spec/lib/mulder/capistrano_spec.rb
|
184
207
|
- spec/lib/mulder/client_spec.rb
|
185
208
|
- spec/lib/mulder/connection_spec.rb
|
209
|
+
- spec/lib/mulder/formats/base_spec.rb
|
210
|
+
- spec/lib/mulder/formats/human_spec.rb
|
211
|
+
- spec/lib/mulder/formatter_spec.rb
|
186
212
|
- spec/lib/mulder/instance_spec.rb
|
187
213
|
- spec/lib/mulder_spec.rb
|
188
214
|
- spec/spec_helper.rb
|