overriaktion 0.0.1.beta1

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.
@@ -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: []