fawsade 1.0.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.
- checksums.yaml +7 -0
- data/README.md +18 -0
- data/lib/fawsade.rb +4 -0
- data/lib/fawsade/client.rb +46 -0
- data/lib/fawsade/instance.rb +3 -0
- metadata +63 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 1d71efe0d2d709a30dbd04790dfe3e738de9d84c
|
4
|
+
data.tar.gz: 61b000f028bb8522bd000e90c8f233a3f30e369a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 08ff041f34cb630352a681c66d9bf8cb767a724aec8cd1398239b05176e66b722422fecc32b05fdc11c412e3597248f0aac882e4631495a24765891cd5f529c6
|
7
|
+
data.tar.gz: 42c3f53522efb723cbb93e503bb32f167431eff18ff48b36247239956667cd05a6d89508ddf4de3c3ff5c66e7c5debef5cf872dcc515bca209d824696c211913
|
data/README.md
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
# Fawsade
|
2
|
+
|
3
|
+
Provides a few custom methods for the AWS Ruby SDK.
|
4
|
+
|
5
|
+
## Usage
|
6
|
+
|
7
|
+
```ruby
|
8
|
+
require "fawsade"
|
9
|
+
|
10
|
+
client = Fawsade::Client.new(
|
11
|
+
region: "eu-west-1",
|
12
|
+
access_key_id: "xxxx",
|
13
|
+
secret_access_key: "xxxx")
|
14
|
+
|
15
|
+
client.instances_by_name(/api\d+/) => [#<struct Fawsade::Instance id="i-xxxx", dns="ip-xxxx.eu-west-1.compute.internal", name="api01">, #<struct Fawsade::Instance id="i-xxxx", dns="ip-xxxx.eu-west-1.compute.internal", name="api02">]
|
16
|
+
|
17
|
+
client.instance_by_id("i-xxxx") => #<struct Fawsade::Instance id="i-xxxx", dns="ip-xxxx.eu-west-1.compute.internal", name="api01">
|
18
|
+
```
|
data/lib/fawsade.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
module Fawsade
|
2
|
+
class Client
|
3
|
+
def initialize(region:, access_key_id:, secret_access_key:)
|
4
|
+
@client = Aws::EC2::Client.new(
|
5
|
+
region: region,
|
6
|
+
access_key_id: access_key_id,
|
7
|
+
secret_access_key: secret_access_key)
|
8
|
+
end
|
9
|
+
|
10
|
+
def instance_by_id(id)
|
11
|
+
instances.find { |instance| instance.id == id }
|
12
|
+
end
|
13
|
+
|
14
|
+
def instances_by_name(regex)
|
15
|
+
instances.select { |instance| instance.name =~ /^#{regex}$/ }
|
16
|
+
end
|
17
|
+
|
18
|
+
def method_missing(method_name, *parameters, &block)
|
19
|
+
@client.send(method_name, *parameters, &block)
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def instances
|
25
|
+
@client.describe_instances.reservations.each_with_object([]) do |reservation, array|
|
26
|
+
reservation.instances.each do |instance|
|
27
|
+
next unless running?(instance) && instance.tags.any?
|
28
|
+
|
29
|
+
array << build(instance)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def running?(instance)
|
35
|
+
instance.state.name == "running"
|
36
|
+
end
|
37
|
+
|
38
|
+
def build(instance)
|
39
|
+
Instance.new(instance.instance_id, instance.private_dns_name, name_of(instance))
|
40
|
+
end
|
41
|
+
|
42
|
+
def name_of(instance)
|
43
|
+
instance.tags.find { |tag| tag.key == "Name" }.value
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
metadata
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: fawsade
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Pedro Gimenez
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-05-16 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: aws-sdk
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
description: Simplified interface for the AWS Ruby SDK
|
28
|
+
email:
|
29
|
+
- me@pedro.bz
|
30
|
+
executables: []
|
31
|
+
extensions: []
|
32
|
+
extra_rdoc_files:
|
33
|
+
- README.md
|
34
|
+
files:
|
35
|
+
- README.md
|
36
|
+
- lib/fawsade.rb
|
37
|
+
- lib/fawsade/client.rb
|
38
|
+
- lib/fawsade/instance.rb
|
39
|
+
homepage: http://github.com/pedrogimenez/fawsade
|
40
|
+
licenses:
|
41
|
+
- MIT
|
42
|
+
metadata: {}
|
43
|
+
post_install_message:
|
44
|
+
rdoc_options: []
|
45
|
+
require_paths:
|
46
|
+
- lib
|
47
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
48
|
+
requirements:
|
49
|
+
- - ">="
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: 2.1.0
|
52
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0'
|
57
|
+
requirements: []
|
58
|
+
rubyforge_project:
|
59
|
+
rubygems_version: 2.6.3
|
60
|
+
signing_key:
|
61
|
+
specification_version: 4
|
62
|
+
summary: Simplified interface for the AWS Ruby SDK
|
63
|
+
test_files: []
|