euca 0.0.4 → 0.0.5

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 CHANGED
@@ -1,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 6a888f2e9f0a0a25fc31106a1c23512b488d2a51
4
- data.tar.gz: 95f298a5eae7e4395856c4465080db171834396e
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ OWVkMGViOGIzNTU3NzgzNGVlZDVmMmI0NWI1ZGIzNzk4NDgwMDExYw==
5
+ data.tar.gz: !binary |-
6
+ YmJmZjlhYzUyYWIwMDk5NzhjMzBkYmNlYTM0ZTVlMmY2NDczNjUyOA==
5
7
  SHA512:
6
- metadata.gz: 3f440535c6d415e8eb593595bbe0fe7122bbf0f1529a2fbfb6cd4537534964d1feaaae2330859d77ae998efd9d76e3112769df693d92979d8257ea5fc8982113
7
- data.tar.gz: ac6b47f74c6b7f9446108db45b31069371377cd86c18f019a053361a65509b9f0c2058824b2763adcd979ba73388e02ed6df18ee6d7b6bfa12efd6c8ab91f5f9
8
+ metadata.gz: !binary |-
9
+ MWVlNzZiZTk1YTlkMzI0N2I1YTRlOTM1ZTM5NGVkYWUwYTIzODkyOTljZTIy
10
+ MDE2MzFlNGRiN2M0MzI5N2EyMTU5MjNjOGFjNmJlNzY1NjY4NGIzMzA0YTcx
11
+ Yjc0MGM1NGU0MjQ0NDQ5ZjE3ZWJhZGE3MTM0ZDI5YWZiOTY4NzY=
12
+ data.tar.gz: !binary |-
13
+ MTMzOTY1MDM5MzlhZGZjMzlkZGUyNTVkMGJiMmUzMmM4YzBlMzkzODhmNjc0
14
+ NTZmNWY4ZTAwM2M2ZjI5Y2YzYWY0MjhlYWQ0Y2YyMDg4ODAwYjY5ODZiZDFj
15
+ ZWYxMjg1MDM2MzI0MDU4Y2JmNGU3ODQ3MjdlNTlkZTdmOTIzZjk=
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 1.9.3-p484
data/euca.gemspec CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
8
8
  spec.version = Euca::VERSION
9
9
  spec.authors = ["Onur Uyar"]
10
10
  spec.email = ["me@onuruyar.com"]
11
- spec.summary = %q{Ultra thin ruby wrapper for euca2ools command line tools}
11
+ spec.summary = %q{Ultra thin Ruby wrapper for euca2ools command line tools}
12
12
  spec.homepage = ""
13
13
  spec.license = "MIT"
14
14
 
@@ -20,4 +20,7 @@ Gem::Specification.new do |spec|
20
20
  spec.add_development_dependency "bundler", "~> 1.5"
21
21
  spec.add_development_dependency "rake"
22
22
  spec.add_development_dependency "minitest"
23
+ spec.add_dependency 'pult', '~> 0.0.4'
24
+ spec.add_dependency 'vhs', '~> 0.0.1'
25
+ spec.add_dependency 'activesupport', '~> 4.0.2'
23
26
  end
data/lib/euca.rb CHANGED
@@ -1,9 +1,25 @@
1
- require 'euca/core_ext/kernel'
1
+ require 'pult'
2
+ require 'vhs'
2
3
  require "euca/version"
3
- require 'logger'
4
+ require "euca/model"
4
5
 
5
6
  module Euca
6
- def self.logger
7
- @@logger ||= $logger || Logger.new(STDOUT)
7
+ BIN_NAME="euca2ools".freeze
8
+ BIN_VERSION="euca-version".freeze
9
+
10
+ def self.has_cli?
11
+ !(self.version =~ /\d+\.\d+\.\d+/).nil?
12
+ end
13
+
14
+ def self.version
15
+ sh(BIN_VERSION).gsub(/#{BIN_NAME} /,"")
16
+ end
17
+
18
+ def self.api_methods
19
+ @@api_methods ||= sh("ls -1 #{self.exec_path}/euca-*").gsub(/#{self.exec_path}\/euca-/m,"").split("\n")
20
+ end
21
+
22
+ def self.exec_path
23
+ @@euca_home ||= sh("dirname $(which euca-version)")
8
24
  end
9
25
  end
data/lib/euca/model.rb CHANGED
@@ -1,36 +1,37 @@
1
1
  require 'euca'
2
2
  require 'euca/wrapper'
3
-
3
+ require 'active_support/inflector'
4
4
  module Euca
5
5
  module Model
6
6
 
7
7
  module ClassMethods
8
8
 
9
- COLUMNS = "@@columns"
10
- TYPE_ID = "@@type_id"
11
- WRAPPER = "@@wrapper"
12
-
13
- def columns names = nil
14
- unless names.nil?
15
- class_variable_set(COLUMNS,names)
16
- end
17
- class_variable_get(COLUMNS)
9
+ def wrapper
10
+ @wrapper ||= Wrapper.new(self::TYPE_ID, self::TYPE_ATTRS)
18
11
  end
19
12
 
20
- def type_id
21
- class_variable_get(TYPE_ID) || class_variable_set(TYPE_ID, self.name)
13
+ def all
14
+ describe
22
15
  end
23
-
24
- def type_id=type_id
25
- class_variable_set(TYPE_ID,type_id)
16
+ def where *args
17
+ describe "--filter", *args
26
18
  end
19
+ def find_by *args
20
+ where(*args).first
21
+ end
22
+ def find id
23
+ describe(id).first
24
+ end
25
+ def describe *args
26
+ euca("describe-#{self.describer}",*args)
27
+ end
27
28
 
28
- def wrapper
29
- begin
30
- class_variable_get(WRAPPER)
31
- rescue NameError
32
- Wrapper.new(self.type_id, self.columns)
33
- end
29
+ def describer; @describer ||= self::TYPE_ID.tableize; end
30
+ def create; nil end
31
+ def destroy; nil end
32
+
33
+ def euca api, *args
34
+ self.wrapper.run api, *args
34
35
  end
35
36
 
36
37
  end
@@ -39,6 +40,10 @@ module Euca
39
40
  base.extend ClassMethods
40
41
  end
41
42
 
43
+ def persisted?
44
+ self.class.find(self.id)
45
+ end
46
+
42
47
  def euca api, *args
43
48
  wrapper.run api, *args
44
49
  end
data/lib/euca/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Euca
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
data/spec/model_spec.rb CHANGED
@@ -2,11 +2,19 @@ require 'support/minitest_helper'
2
2
  require 'euca/model'
3
3
 
4
4
  describe Euca::Model do
5
+
6
+ before do
7
+
8
+ class Api
9
+ include Euca::Model
10
+ TYPE_ATTRS= %w(type id name)
11
+ TYPE_ID = "image"
12
+ end
13
+
14
+ end
15
+
5
16
  it "implements wrapper" do
6
- Api = Class.new
7
- Api.send :include, Euca::Model
8
- Api.columns %w(type id name)
9
- Api.type_id = "image"
17
+
10
18
  api = Api.new
11
19
 
12
20
  wrapper = MiniTest::Mock.new
@@ -3,8 +3,6 @@ require "minitest/autorun"
3
3
  require 'euca'
4
4
  require 'yaml'
5
5
 
6
- ENV["KEYPAIR"]="~/.ssh/gq_credentials/default_ssh.id"
7
-
8
6
  class MiniTest::Spec
9
7
 
10
8
  def fixture name
metadata CHANGED
@@ -1,57 +1,99 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: euca
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
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-18 00:00:00.000000000 Z
11
+ date: 2014-02-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.5'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.5'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - ! '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - ! '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - ! '>='
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - ! '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pult
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 0.0.4
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: 0.0.4
69
+ - !ruby/object:Gem::Dependency
70
+ name: vhs
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: 0.0.1
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: 0.0.1
83
+ - !ruby/object:Gem::Dependency
84
+ name: activesupport
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: 4.0.2
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: 4.0.2
55
97
  description:
56
98
  email:
57
99
  - me@onuruyar.com
@@ -59,14 +101,14 @@ executables: []
59
101
  extensions: []
60
102
  extra_rdoc_files: []
61
103
  files:
62
- - ".gitignore"
104
+ - .gitignore
105
+ - .ruby-version
63
106
  - Gemfile
64
107
  - LICENSE.txt
65
108
  - README.md
66
109
  - Rakefile
67
110
  - euca.gemspec
68
111
  - lib/euca.rb
69
- - lib/euca/core_ext/kernel.rb
70
112
  - lib/euca/model.rb
71
113
  - lib/euca/version.rb
72
114
  - lib/euca/wrapper.rb
@@ -84,20 +126,20 @@ require_paths:
84
126
  - lib
85
127
  required_ruby_version: !ruby/object:Gem::Requirement
86
128
  requirements:
87
- - - ">="
129
+ - - ! '>='
88
130
  - !ruby/object:Gem::Version
89
131
  version: '0'
90
132
  required_rubygems_version: !ruby/object:Gem::Requirement
91
133
  requirements:
92
- - - ">="
134
+ - - ! '>='
93
135
  - !ruby/object:Gem::Version
94
136
  version: '0'
95
137
  requirements: []
96
138
  rubyforge_project:
97
- rubygems_version: 2.2.0
139
+ rubygems_version: 2.2.2
98
140
  signing_key:
99
141
  specification_version: 4
100
- summary: Ultra thin ruby wrapper for euca2ools command line tools
142
+ summary: Ultra thin Ruby wrapper for euca2ools command line tools
101
143
  test_files:
102
144
  - spec/fixtures/images.yml
103
145
  - spec/model_spec.rb
@@ -1,25 +0,0 @@
1
- require 'stringio'
2
-
3
- module ::Kernel
4
-
5
- def called_from(level=1)
6
- arrs = caller((level||1)+1) or return
7
- arrs[0] =~ /:(\d+)(?::in `(.*)')?/ ? [$`, $1.to_i, $2] : nil
8
- end
9
-
10
- def sh cmd
11
- output = StringIO.new
12
-
13
- Euca.logger.debug "[sh] #{cmd}"
14
-
15
- IO.popen(cmd) do |pipe|
16
- pipe.each do |line|
17
- output.puts line
18
- Euca.logger.debug line.chomp
19
- end
20
- end
21
-
22
- output.string.chomp
23
- end
24
-
25
- end