overriaktion 0.0.1.beta1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,15 @@
1
+ module Overriaktion
2
+ class RiakCluster < Model
3
+ def riak_node(riak_node_id)
4
+ @client.riak_node(self.id, riak_node_id)
5
+ end
6
+
7
+ def riak_nodes
8
+ @client.riak_nodes(self.id)
9
+ end
10
+
11
+ def to_s
12
+ self.name
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module Overriaktion
2
+ class RiakNode < Model
3
+ def riak_cluster
4
+ @client.riak_cluster(self.riak_cluster_id)
5
+ end
6
+
7
+ def sample
8
+ Sample.perform(self)
9
+ end
10
+
11
+ def to_s
12
+ "#{self.username}@#{self.ip_address}:#{self.port}"
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,16 @@
1
+ module Overriaktion
2
+ class Sample < Model
3
+ def perform
4
+ @response = Net::HTTP.get("#{ip_address}", "/stats", port)
5
+ !@response.nil?
6
+ end
7
+
8
+ def save
9
+ @client.create_sample(id, @response)
10
+ end
11
+
12
+ def self.perform(options = {})
13
+ self.new(options).perform
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,11 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'vcr'
4
+
5
+ if ENV['RAILS_ENV'] == 'test'
6
+ VCR.config do |c|
7
+ c.stub_with :webmock
8
+ c.cassette_library_dir = "#{File.expand_path('../../..', __FILE__)}/fixtures/vcr_cassettes"
9
+ c.default_cassette_options = { :record => :new_episodes }
10
+ end
11
+ end
@@ -0,0 +1,3 @@
1
+ module Overriaktion
2
+ VERSION = "0.0.1.beta1"
3
+ end
@@ -0,0 +1,38 @@
1
+ # encoding: UTF-8
2
+
3
+ $:.push File.expand_path("../lib", __FILE__)
4
+
5
+ require "overriaktion/version"
6
+
7
+ Gem::Specification.new do |gem|
8
+ gem.name = "overriaktion"
9
+ gem.version = Overriaktion::VERSION
10
+ gem.authors = ["Christopher Meiklejohn"]
11
+ gem.email = ["christopher.meiklejohn@gmail.com"]
12
+ gem.homepage = "https://github.com/cmeiklejohn/overriaktion"
13
+ gem.summary = %q{Client gem for the Overriak service.}
14
+ gem.description = %q{Client gem for the Overriak service.}
15
+
16
+ gem.rubyforge_project = "overriaktion"
17
+
18
+ gem.files = `git ls-files`.split("\n")
19
+ gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
20
+ gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
21
+ gem.require_paths = ["lib"]
22
+
23
+ gem.add_dependency('vcr')
24
+ gem.add_dependency('webmock')
25
+ gem.add_dependency('httparty')
26
+ gem.add_dependency('methadone')
27
+
28
+ gem.add_development_dependency('relish')
29
+
30
+ gem.add_development_dependency('rdoc')
31
+ gem.add_development_dependency('aruba')
32
+ gem.add_development_dependency('rspec')
33
+ gem.add_development_dependency('rake','~> 0.9.2')
34
+
35
+ gem.add_development_dependency('guard')
36
+ gem.add_development_dependency('guard-rspec')
37
+ gem.add_development_dependency('guard-cucumber')
38
+ end
@@ -0,0 +1,43 @@
1
+ require 'spec_helper'
2
+
3
+ module Overriaktion
4
+ describe Client do
5
+ subject { Client.instance }
6
+
7
+ it "retrieves a list of riak clusters" do
8
+ VCR.use_cassette('overriak') do
9
+ riak_clusters = subject.riak_clusters
10
+ riak_clusters.length.should == 1
11
+ riak_clusters.each { |riak_cluster| riak_cluster.should be_a_kind_of(RiakCluster) }
12
+ end
13
+ end
14
+
15
+ it "retrieves information about one riak cluster" do
16
+ VCR.use_cassette('overriak') do
17
+ riak_cluster = subject.riak_cluster(1)
18
+ riak_cluster.should be_a_kind_of(RiakCluster)
19
+ end
20
+ end
21
+
22
+ it "retrieves information about a clusters riak nodes" do
23
+ VCR.use_cassette('overriak') do
24
+ riak_nodes = subject.riak_nodes(1)
25
+ riak_nodes.length.should == 1
26
+ riak_nodes.each { |riak_node| riak_node.should be_a_kind_of(RiakNode) }
27
+ end
28
+ end
29
+
30
+ it "retrieves information about a clusters single riak node" do
31
+ VCR.use_cassette('overriak') do
32
+ riak_node = subject.riak_node(1, 1)
33
+ riak_node.should be_a_kind_of(RiakNode)
34
+ end
35
+ end
36
+
37
+ it "stores a riak node sample" do
38
+ VCR.use_cassette('overriak') do
39
+ subject.create_sample(1, "response")
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ module Overriaktion
4
+ describe Model do
5
+ subject { model }
6
+
7
+ let(:model) { Model.new }
8
+
9
+ it 'grabs an instance of the client' do
10
+ subject.send(:client).should be_an_instance_of(Client)
11
+ end
12
+
13
+ context 'with an attribute' do
14
+ let(:model) { Model.new(:id => 1) }
15
+
16
+ specify { subject.id.should == 1 }
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ module Overriaktion
4
+ describe RiakCluster do
5
+ subject { riak_cluster }
6
+
7
+ context 'with riak nodes' do
8
+ let(:riak_cluster) { RiakCluster.new(:id => 1) }
9
+
10
+ it "returns it's riak nodes" do
11
+ Client.instance.should_receive(:riak_nodes)
12
+ riak_nodes = subject.riak_nodes
13
+ end
14
+
15
+ it "returns one riak node in it's cluster" do
16
+ Client.instance.should_receive(:riak_node)
17
+ riak_node = subject.riak_node(1)
18
+ end
19
+ end
20
+
21
+ context 'with a name' do
22
+ let(:riak_cluster) { RiakCluster.new(:name => 'Name') }
23
+
24
+ it "returns it's name" do
25
+ subject.to_s.should == "Name"
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,42 @@
1
+ require 'spec_helper'
2
+
3
+ module Overriaktion
4
+ describe RiakNode do
5
+ subject { riak_node }
6
+
7
+ context 'in a riak cluster' do
8
+ let(:riak_node) { RiakNode.new(:riak_cluster_id => 1) }
9
+
10
+ it "returns it's riak cluster" do
11
+ Client.instance.should_receive(:riak_cluster)
12
+ riak_cluster = subject.riak_cluster
13
+ end
14
+ end
15
+
16
+ context 'with a full uri' do
17
+ let(:riak_node) do
18
+ RiakNode.new(:username => 'root',
19
+ :ip_address => '127.0.0.1',
20
+ :port => '8098')
21
+ end
22
+
23
+ it "returns it's uri" do
24
+ subject.to_s.should == "root@127.0.0.1:8098"
25
+ end
26
+ end
27
+
28
+ context 'with a full uri and id' do
29
+ let(:riak_node) do
30
+ RiakNode.new(:username => 'root',
31
+ :ip_address => '127.0.0.1',
32
+ :port => '8098',
33
+ :id => 1)
34
+ end
35
+
36
+ it 'can be sampled' do
37
+ Sample.should_receive(:perform)
38
+ subject.sample
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ module Overriaktion
4
+ describe Sample do
5
+ subject { sample }
6
+
7
+ context 'with a valid configuration' do
8
+ let(:sample) do
9
+ Sample.new(:id => "1", :ip_address => '127.0.0.1', :port => "8098")
10
+ end
11
+
12
+ specify { subject.id.should == '1' }
13
+ specify { subject.port.should == '8098' }
14
+ specify { subject.ip_address.should == '127.0.0.1' }
15
+
16
+ it 'is able to be sampled' do
17
+ VCR.use_cassette('overriak') do
18
+ subject.perform.should be_true
19
+ end
20
+ end
21
+
22
+ it 'is able to be saved' do
23
+ Client.instance.should_receive(:create_sample)
24
+ subject.save
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,64 @@
1
+ require 'spec_helper'
2
+
3
+ module Overriaktion
4
+ describe self do
5
+ it 'returns the client when instantiated' do
6
+ subject.new.should be_a_kind_of(Client)
7
+ end
8
+
9
+ it 'returns the same client when instantiated twice' do
10
+ subject.new.should == subject.new
11
+ end
12
+
13
+ describe 'once configured via the instantiation call' do
14
+ subject do
15
+ Overriaktion.new(:api_key => '2', :api_host => 'api-v2.overriak.com')
16
+ end
17
+
18
+ after do
19
+ subject.configure do |config|
20
+ config.api_key = nil
21
+ config.api_host = nil
22
+ end
23
+ end
24
+
25
+ it 'should retain that configuration' do
26
+ subject.configuration.api_key.should == '2'
27
+ subject.configuration.api_host.should == 'api-v2.overriak.com'
28
+ end
29
+
30
+ it "should honor that configuration when making an API request" do
31
+ VCR.use_cassette('api-v2') do
32
+ riak_clusters = subject.riak_clusters
33
+ end
34
+ end
35
+ end
36
+
37
+ describe 'once configured' do
38
+ before do
39
+ subject.configure do |config|
40
+ config.api_key = '1'
41
+ config.api_host = 'api.overriak.com'
42
+ end
43
+ end
44
+
45
+ after do
46
+ subject.configure do |config|
47
+ config.api_key = nil
48
+ config.api_host = nil
49
+ end
50
+ end
51
+
52
+ it 'should retain that configuration' do
53
+ subject.configuration.api_key.should == '1'
54
+ subject.configuration.api_host.should == 'api.overriak.com'
55
+ end
56
+
57
+ it "should honor that configuration when making an API request" do
58
+ VCR.use_cassette('api') do
59
+ riak_clusters = subject.riak_clusters
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,10 @@
1
+ # encoding: UTF-8
2
+
3
+ ENV["RAILS_ENV"] ||= "test"
4
+
5
+ PROJECT_ROOT = File.expand_path("../..", __FILE__)
6
+ $LOAD_PATH << File.join(PROJECT_ROOT, "lib")
7
+
8
+ Bundler.require
9
+
10
+ require 'overriaktion'
metadata ADDED
@@ -0,0 +1,220 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: overriaktion
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1.beta1
5
+ prerelease: 6
6
+ platform: ruby
7
+ authors:
8
+ - Christopher Meiklejohn
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-02-01 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: vcr
16
+ requirement: &13738340 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *13738340
25
+ - !ruby/object:Gem::Dependency
26
+ name: webmock
27
+ requirement: &13737300 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *13737300
36
+ - !ruby/object:Gem::Dependency
37
+ name: httparty
38
+ requirement: &13736160 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *13736160
47
+ - !ruby/object:Gem::Dependency
48
+ name: methadone
49
+ requirement: &13750900 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *13750900
58
+ - !ruby/object:Gem::Dependency
59
+ name: relish
60
+ requirement: &13749220 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *13749220
69
+ - !ruby/object:Gem::Dependency
70
+ name: rdoc
71
+ requirement: &13748260 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *13748260
80
+ - !ruby/object:Gem::Dependency
81
+ name: aruba
82
+ requirement: &13747000 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: *13747000
91
+ - !ruby/object:Gem::Dependency
92
+ name: rspec
93
+ requirement: &13744880 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ type: :development
100
+ prerelease: false
101
+ version_requirements: *13744880
102
+ - !ruby/object:Gem::Dependency
103
+ name: rake
104
+ requirement: &13758560 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 0.9.2
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: *13758560
113
+ - !ruby/object:Gem::Dependency
114
+ name: guard
115
+ requirement: &13757540 !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - ! '>='
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
121
+ type: :development
122
+ prerelease: false
123
+ version_requirements: *13757540
124
+ - !ruby/object:Gem::Dependency
125
+ name: guard-rspec
126
+ requirement: &13755780 !ruby/object:Gem::Requirement
127
+ none: false
128
+ requirements:
129
+ - - ! '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: *13755780
135
+ - !ruby/object:Gem::Dependency
136
+ name: guard-cucumber
137
+ requirement: &13754960 !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ type: :development
144
+ prerelease: false
145
+ version_requirements: *13754960
146
+ description: Client gem for the Overriak service.
147
+ email:
148
+ - christopher.meiklejohn@gmail.com
149
+ executables:
150
+ - overriaktion
151
+ extensions: []
152
+ extra_rdoc_files: []
153
+ files:
154
+ - .gitignore
155
+ - .rbenv-version
156
+ - .rspec
157
+ - .travis.yml
158
+ - Gemfile
159
+ - Gemfile.lock
160
+ - Guardfile
161
+ - LICENSE
162
+ - README.rdoc
163
+ - Rakefile
164
+ - bin/overriaktion
165
+ - features/cli.feature
166
+ - features/client.feature
167
+ - features/step_definitions/overriaktion_steps.rb
168
+ - features/support/env.rb
169
+ - features/support/vcr.rb
170
+ - fixtures/vcr_cassettes/api-v2.yml
171
+ - fixtures/vcr_cassettes/api.yml
172
+ - fixtures/vcr_cassettes/overriak.yml
173
+ - lib/overriaktion.rb
174
+ - lib/overriaktion/cli.rb
175
+ - lib/overriaktion/client.rb
176
+ - lib/overriaktion/configuration.rb
177
+ - lib/overriaktion/end_points.rb
178
+ - lib/overriaktion/model.rb
179
+ - lib/overriaktion/request.rb
180
+ - lib/overriaktion/riak_cluster.rb
181
+ - lib/overriaktion/riak_node.rb
182
+ - lib/overriaktion/sample.rb
183
+ - lib/overriaktion/vcr.rb
184
+ - lib/overriaktion/version.rb
185
+ - overriaktion.gemspec
186
+ - spec/lib/overriaktion/client_spec.rb
187
+ - spec/lib/overriaktion/model_spec.rb
188
+ - spec/lib/overriaktion/riak_cluster_spec.rb
189
+ - spec/lib/overriaktion/riak_node_spec.rb
190
+ - spec/lib/overriaktion/sample_spec.rb
191
+ - spec/lib/overriaktion_spec.rb
192
+ - spec/spec_helper.rb
193
+ homepage: https://github.com/cmeiklejohn/overriaktion
194
+ licenses: []
195
+ post_install_message:
196
+ rdoc_options: []
197
+ require_paths:
198
+ - lib
199
+ required_ruby_version: !ruby/object:Gem::Requirement
200
+ none: false
201
+ requirements:
202
+ - - ! '>='
203
+ - !ruby/object:Gem::Version
204
+ version: '0'
205
+ segments:
206
+ - 0
207
+ hash: -4017166538437899048
208
+ required_rubygems_version: !ruby/object:Gem::Requirement
209
+ none: false
210
+ requirements:
211
+ - - ! '>'
212
+ - !ruby/object:Gem::Version
213
+ version: 1.3.1
214
+ requirements: []
215
+ rubyforge_project: overriaktion
216
+ rubygems_version: 1.8.11
217
+ signing_key:
218
+ specification_version: 3
219
+ summary: Client gem for the Overriak service.
220
+ test_files: []