euca 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NDUyYjg1NDRkMDIwNjYyY2YxNjJjMjRmNWMwNDAzMDU5Yjk2NDEzZA==
4
+ NzIyNGI5YWY5NDllMzI0M2E3NzM5M2NlMmEwOTU3MDhkNzE4MWJjZg==
5
5
  data.tar.gz: !binary |-
6
- MDUwNzZkM2UzNDBmNzk2NDFmZjZhYjA0NmJjNzgxYjhjMGYyOTgxYQ==
6
+ ODFmYWY5YjZlYTM5YjliMDZlZjYwNDRhNjAxNDBjN2FkZTAyMDkwMw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MzBiNmVmZjhlMDUyNTU1MDU0ZjZkOGRkYWJhY2UzNTdhMmI5N2E4ZWViMjk3
10
- OTdkZGFjZTg3ODFjODM2YTA1NDIxOWI2YTJhNjdkZDJkN2RjOGQ3OGFkMGI0
11
- OGI4MmJkMDJjMjdhY2Q1NzZlMzk2MmJmOTljMDNjOTczZTRmOWQ=
9
+ YjI3YWQzNGFhOTEyNDZiOWYxOWE3YTMxZjMyNTlkNjlhZGZlYTBlMmQ1YzA2
10
+ YzZmNmY4YmVkYzBhMTNjNzE5MTJhZTMzZDNkYTE2MmE2YTM0ODQ2Zjk1NjFi
11
+ MGE1MjAwMGExZDc1ZWFkM2Y4MTdhOTNjNTA5YmIyYzVkZDNkNDY=
12
12
  data.tar.gz: !binary |-
13
- ZjNiMTkyZmVlODkxMThkNGYzZDBmZGQ0YjMzZjU5YmZlMjliZTZhZTE3NTFm
14
- ZGYyZjJiZGU4Zjg0Zjk2Mzc5ZDE1NzJjYTllMmIzZGM5ZDRlNjFhMGZjNDFm
15
- MmM5NDJiOTZiZGUxNGUzOWQzMDQ1MzJmNDVhNGMyOGVkMGNmNGY=
13
+ MDAzNTY3NWJhYmFjMTc1ZDBlZGRiZGE3NmZiMWRmYjc0NTI0MWNlZWRlMzY4
14
+ MWE0M2JjYmEzZTlhOGRhZjYwNTcwNWUyYjUyZDU3NjNkZGFkODdjYjM4NTMx
15
+ OTY4ZWE2MDljYmQ1NmY4MGMzOTc3NTJkMmRiNzA3ZmZiOWUwNGE=
@@ -1,7 +1,9 @@
1
1
  require "euca/model"
2
+ require "euca/filterable"
2
3
  require "euca/api/address"
3
4
  require "euca/api/instance"
4
5
  require "euca/api/keypair"
6
+ require "euca/api/tag"
5
7
  module Euca
6
8
  module Api
7
9
  end
@@ -2,6 +2,7 @@ module Euca
2
2
  class Instance
3
3
 
4
4
  include Euca::Model
5
+ include Euca::Filterable
5
6
 
6
7
  TYPE_ID = "instance"
7
8
  TYPE_ATTRS = %w(type_id id image public_dns_name private_dns_name status group
@@ -18,14 +19,6 @@ module Euca
18
19
  euca("terminate-instances",id).first
19
20
  end
20
21
 
21
- def self.where *args
22
- describe "--filter", *args
23
- end
24
-
25
- def self.find_by *args
26
- where(*args).first
27
- end
28
-
29
22
  end
30
23
  end
31
24
 
@@ -0,0 +1,29 @@
1
+ module Euca
2
+ class Tag
3
+
4
+ include Euca::Model
5
+ include Euca::Filterable
6
+
7
+ TYPE_ID = "tag"
8
+ TYPE_ATTRS = %w(type owner_id owner_type key value)
9
+
10
+ def self.create key, value, instance_id = nil
11
+ if key.is_a? Hash
12
+ euca("create-tags", key.map{|key,value| "--tag #{key}=#{value}" }.join(" ") , value).first
13
+ else
14
+ return nil if instance_id.nil?
15
+ euca("create-tags", "--tag #{key}=#{value}", instance_id).first
16
+ end
17
+ end
18
+
19
+ def self.destroy key, value, instance_id = nil
20
+ if key.is_a? Hash
21
+ euca("delete-tags", key.map{|key,value| "--tag #{key}=#{value}" }.join(" ") , value).first
22
+ else
23
+ return nil if instance_id.nil?
24
+ euca("delete-tags", "--tag #{key}=#{value}", instance_id).first
25
+ end
26
+ end
27
+
28
+ end
29
+ end
@@ -0,0 +1,21 @@
1
+ module Euca
2
+ module Filterable
3
+
4
+ module ClassMethods
5
+
6
+ def where args
7
+ args = args.map{|key,value| "--filter #{key}=#{value}" }
8
+ describe *args
9
+ end
10
+
11
+ def find_by args
12
+ where(args).first
13
+ end
14
+ end
15
+
16
+ def self.included(base)
17
+ base.extend ClassMethods
18
+ end
19
+
20
+ end
21
+ end
@@ -19,12 +19,15 @@ module Euca
19
19
  s.values.sort == query.values.sort
20
20
  }
21
21
  end
22
+
22
23
  def find_by query = {}
23
24
  where(query).first
24
25
  end
26
+
25
27
  def find id
26
28
  describe(id).first
27
29
  end
30
+
28
31
  def describe *args
29
32
  euca("describe-#{self.describer}",*args)
30
33
  end
@@ -1,3 +1,3 @@
1
1
  module Euca
2
- VERSION = "0.0.8"
2
+ VERSION = "0.0.9"
3
3
  end
@@ -16,6 +16,10 @@ module Euca
16
16
  instance = Instance.create "-t", Euca::T1_NANO, Euca::UBUNTU_13_10
17
17
 
18
18
  instance["public_dns_name"].must_equal "i-46-149-29-252.compute.is-1.greenqloud.com"
19
+
20
+ mock.expect :run, fixture, [ "describe-instances", "--filter instance-id=i-6e13180f" ]
21
+ finded = Instance.find_by({"instance-id" => instance["id"]})
22
+ finded["public_dns_name"].must_equal instance["public_dns_name"]
19
23
  end
20
24
  end
21
25
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: euca
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Onur Uyar
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-24 00:00:00.000000000 Z
11
+ date: 2014-02-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -99,6 +99,8 @@ files:
99
99
  - lib/euca/api/address.rb
100
100
  - lib/euca/api/instance.rb
101
101
  - lib/euca/api/keypair.rb
102
+ - lib/euca/api/tag.rb
103
+ - lib/euca/filterable.rb
102
104
  - lib/euca/model.rb
103
105
  - lib/euca/version.rb
104
106
  - lib/euca/wrapper.rb