zeus-api 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -2,11 +2,12 @@ source "http://rubygems.org"
2
2
  # Add dependencies required to use your gem here.
3
3
  # Example:
4
4
  # gem "activesupport", ">= 2.3.5"
5
+ gem "soap4r", ">=1.5.8"
5
6
 
6
7
  # Add dependencies to develop your gem here.
7
8
  # Include everything needed to run rake, tests, features, etc.
8
9
  group :development do
9
- gem "shoulda", ">= 0"
10
+ gem "rspec", "~> 2.1.0"
10
11
  gem "bundler", "~> 1.0.0"
11
12
  gem "jeweler", "~> 1.5.1"
12
13
  gem "rcov", ">= 0"
@@ -1,14 +1,25 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
+ diff-lcs (1.1.2)
4
5
  git (1.2.5)
6
+ httpclient (2.1.5.2)
5
7
  jeweler (1.5.1)
6
8
  bundler (~> 1.0.0)
7
9
  git (>= 1.2.5)
8
10
  rake
9
11
  rake (0.8.7)
10
12
  rcov (0.9.9)
11
- shoulda (2.11.3)
13
+ rspec (2.1.0)
14
+ rspec-core (~> 2.1.0)
15
+ rspec-expectations (~> 2.1.0)
16
+ rspec-mocks (~> 2.1.0)
17
+ rspec-core (2.1.0)
18
+ rspec-expectations (2.1.0)
19
+ diff-lcs (~> 1.1.2)
20
+ rspec-mocks (2.1.0)
21
+ soap4r (1.5.8)
22
+ httpclient (>= 2.1.1)
12
23
 
13
24
  PLATFORMS
14
25
  ruby
@@ -17,4 +28,5 @@ DEPENDENCIES
17
28
  bundler (~> 1.0.0)
18
29
  jeweler (~> 1.5.1)
19
30
  rcov
20
- shoulda
31
+ rspec (~> 2.1.0)
32
+ soap4r (>= 1.5.8)
data/Rakefile CHANGED
@@ -16,31 +16,28 @@ Jeweler::Tasks.new do |gem|
16
16
  gem.homepage = "http://github.com/peterson/zeus-api"
17
17
  gem.license = "MIT"
18
18
  gem.summary = %Q{Ruby control API for Zeus Load Balancer and Zeus Traffic Manager}
19
- gem.description = %Q{This gem implements a wrapper to the SOAP control API provided by Zeus Load Balance (ZLB) and Zeus Traffic Manager (ZTM).}
19
+ gem.description = %Q{This gem implements a wrapper to the SOAP control API provided by Zeus Load Balancer (ZLB) and Zeus Traffic Manager (ZTM).}
20
20
  gem.email = "peterson@orbitec.com.au"
21
21
  gem.authors = ["David Peterson"]
22
22
  # Include your dependencies below. Runtime dependencies are required when using your gem,
23
23
  # and development dependencies are only needed for development (ie running rake tasks, tests, etc)
24
24
  gem.add_runtime_dependency 'soap4r', '>= 1.5.8'
25
- # gem.add_development_dependency 'rspec', '> 1.2.3'
25
+ gem.add_development_dependency 'rspec', '> 1.2.3'
26
26
  end
27
27
  Jeweler::RubygemsDotOrgTasks.new
28
28
 
29
- require 'rake/testtask'
30
- Rake::TestTask.new(:test) do |test|
31
- test.libs << 'lib' << 'test'
32
- test.pattern = 'test/**/test_*.rb'
33
- test.verbose = true
29
+ require 'rspec/core'
30
+ require 'rspec/core/rake_task'
31
+ RSpec::Core::RakeTask.new(:spec) do |spec|
32
+ spec.pattern = FileList['spec/**/*_spec.rb']
34
33
  end
35
34
 
36
- require 'rcov/rcovtask'
37
- Rcov::RcovTask.new do |test|
38
- test.libs << 'test'
39
- test.pattern = 'test/**/test_*.rb'
40
- test.verbose = true
35
+ RSpec::Core::RakeTask.new(:rcov) do |spec|
36
+ spec.pattern = 'spec/**/*_spec.rb'
37
+ spec.rcov = true
41
38
  end
42
39
 
43
- task :default => :test
40
+ task :default => :spec
44
41
 
45
42
  require 'rake/rdoctask'
46
43
  Rake::RDocTask.new do |rdoc|
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
@@ -145,6 +145,7 @@ class CatalogRuleService
145
145
  #
146
146
  # Examples
147
147
  # note(name, note) - Sets the note for a rule called "name"
148
+ # note(name) - Returns the note for the rule "name"
148
149
  def note(name, note=nil)
149
150
  if note.nil?
150
151
  details(name).rule_notes
@@ -161,6 +162,7 @@ class CatalogRuleService
161
162
  #
162
163
  # Examples
163
164
  # text(name, text) - Sets the text for a rule called "name"
165
+ # text(name) - Returns the text for the rule "name"
164
166
  def text(name, text=nil)
165
167
  if text.nil?
166
168
  details(name).rule_text
@@ -210,7 +210,7 @@ class PoolService
210
210
  # node (String) - Node ("host:port")
211
211
  #
212
212
  # Examples
213
- # remove_draining_node("pool", "host:80")
213
+ # undrain_node("pool", "host:80")
214
214
  #
215
215
  def undrain_node(name, node)
216
216
  @driver.removeDrainingNodes([name], [[node]])
@@ -223,7 +223,7 @@ class PoolService
223
223
  # nodes (Array) - Nodes (["host1:port", "host2:port"])
224
224
  #
225
225
  # Examples
226
- # remove_draining_nodes("pool",["host1:80", "host2:80"])
226
+ # undrain_nodes("pool",["host1:80", "host2:80"])
227
227
  #
228
228
  def undrain_nodes(name, nodes)
229
229
  @driver.removeDrainingNodes([name], [nodes])
@@ -71,6 +71,44 @@ class VirtualServerService
71
71
  @driver.addVirtualServer([name], [vs_basic_info])
72
72
  end
73
73
 
74
+ # Copies a virtual server
75
+ #
76
+ # Args
77
+ # name (String) - Name of current virtual server
78
+ # new_name (String) - Name of new virtual server
79
+ #
80
+ # Examples
81
+ # copy(name, new_name) - Copies VS called "name" to a new VS called "new_name"
82
+ #
83
+ def copy(name, new_name)
84
+ @driver.copyVirtualServer([name], [new_name])
85
+ end
86
+
87
+ # Renames a virtual server
88
+ #
89
+ # Args
90
+ # name (String) - Current name of virtual server
91
+ # new_name (String) - New name of virtual server
92
+ #
93
+ # Examples
94
+ # rename(name, new_name) - Renames VS "name" to "new_name"
95
+ #
96
+ def rename(name, new_name)
97
+ @driver.renameVirtualServer([name], [new_name])
98
+ end
99
+
100
+ # Deletes a virtual server
101
+ #
102
+ # Args
103
+ # name (String) - Name of virtual server
104
+ #
105
+ # Examples
106
+ # delete("test") - Deletes virtual server called "test"
107
+ #
108
+ def delete(name)
109
+ @driver.deleteVirtualServer([name])
110
+ end
111
+
74
112
  # Enables a virtual server
75
113
  #
76
114
  # Args
@@ -89,11 +127,27 @@ class VirtualServerService
89
127
  # name (String) - Virtual server's name to disable
90
128
  #
91
129
  # Examples
92
- # disable("web") - Disables a virtual server called "web"
130
+ # disable("name") - Disables a virtual server called "name"
93
131
  #
94
132
  def disable(vs_name=nil)
95
133
  @driver.setEnabled([vs_name], [false])
96
134
  end
135
+
136
+ # Checks whether the virtual server is enabled
137
+ #
138
+ # Args
139
+ # vs_name (String) - Virtual server's name
140
+ #
141
+ # Returns
142
+ # valid (boolean) - True if valid
143
+ #
144
+ # Examples
145
+ # enabled?("test") - Checks whether VS "test" is enabled
146
+ #
147
+ def enabled?(vs_name)
148
+ res = @driver.getEnabled([vs_name])
149
+ return res.first
150
+ end
97
151
 
98
152
  # Adds a request rule (and enables it)
99
153
  #
@@ -1,7 +1,7 @@
1
1
  require 'rubygems'
2
2
  require 'zeus-api'
3
3
 
4
- endpoint = "https://10.0.0.250:9090/soap"
4
+ endpoint = "https://zeus:9090/soap"
5
5
  username = "api"
6
6
  password = "api"
7
7
 
@@ -9,31 +9,42 @@ vs = VirtualServerService.new(endpoint, username, password)
9
9
  p = PoolService.new(endpoint, username, password)
10
10
  r = CatalogRuleService.new(endpoint, username, password)
11
11
 
12
-
13
- # create a new pool
12
+ # basic config
13
+ vs_name = "test"
14
14
  pool_name = "test-pool"
15
15
  pool_nodes = ["10.0.0.101:80", "10.0.0.102:80"]
16
+ rule_name = "test-rule"
17
+
18
+
19
+ # delete if existing
20
+ if vs.list.include?(vs_name)
21
+ vs.delete("test")
22
+ puts "Found existing virtual server '#{vs_name}', deleting ..."
23
+ end
16
24
 
17
25
  if p.list.include?(pool_name)
18
26
  p.delete(pool_name)
27
+ puts "Found existing pool '#{pool_name}', deleting ..."
19
28
  end
20
29
 
30
+ if r.list.include?(rule_name)
31
+ r.delete(rule_name)
32
+ puts "Found existing rule '#{rule_name}', deleting ..."
33
+ end
34
+
35
+ # create pool
36
+ pool_nodes = ["10.0.0.101:80", "10.0.0.102:80"]
21
37
  p.create(pool_name, pool_nodes)
22
38
  puts "Pool '#{pool_name}' was successfully created."
23
39
 
24
40
 
25
41
  # create a new virtual server
26
- vs_name = "test"
27
42
  vs_info = {
28
43
  :protocol => "http",
29
44
  :port => "8000",
30
45
  :default_pool => pool_name
31
46
  }
32
47
 
33
- if vs.list.include?(vs_name)
34
- # vs.delete("test") # FIXME implement
35
- end
36
-
37
48
  vs.create(vs_name, vs_info)
38
49
  puts "Virtual server '#{vs_name}' was successfully created."
39
50
 
@@ -42,7 +53,6 @@ puts "Virtual server '#{vs_name}' was enabled."
42
53
 
43
54
 
44
55
  # create a new rule and add to virtual server
45
- rule_name = "test-rule"
46
56
  rule_text = "if( string.contains( http.getheader( \"Host\" ), \"test.com\" ) ){\n\n\tpool.use( \"test-pool\" );\n\n}\n"
47
57
  rule_note = "Simple Host header dispatch rule using trafficscript"
48
58
 
@@ -0,0 +1,12 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+ require 'rspec'
4
+ require 'zeus-api'
5
+
6
+ # Requires supporting files with custom matchers and macros, etc,
7
+ # in ./support/ and its subdirectories.
8
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
9
+
10
+ RSpec.configure do |config|
11
+
12
+ end
@@ -0,0 +1,52 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "virtualserver" do
4
+
5
+ vs_name = "rspec-test"
6
+ vs_copy = "rspec-test-copy"
7
+
8
+ before do
9
+ endpoint = "https://zeus:9090/soap"
10
+ user = "api"
11
+ pass = "api"
12
+
13
+ @vs = VirtualServerService.new(endpoint, user, pass)
14
+ end
15
+
16
+ it "should have a driver" do
17
+ @vs.driver.nil?.should == false
18
+ end
19
+
20
+ it "should create a virtual server" do
21
+ vs_info = {
22
+ :protocol => "http",
23
+ :port => "9999",
24
+ }
25
+
26
+ @vs.create(vs_name, vs_info)
27
+ @vs.list.include?(vs_name).should == true
28
+ end
29
+
30
+ it "should list the virtual server" do
31
+ @vs.list.include?(vs_name).should == true
32
+ end
33
+
34
+ it "should copy the virtual server" do
35
+ @vs.copy(vs_name, vs_copy).nil?.should == true
36
+ end
37
+
38
+ it "should delete the original virtual server" do
39
+ @vs.delete(vs_name)
40
+ @vs.list.include?(vs_name).should == false
41
+ end
42
+
43
+ it "should rename the copied virtual server" do
44
+ @vs.copy(vs_copy, vs_name).nil?.should == true
45
+ end
46
+
47
+ it "should delete the copied virtual server" do
48
+ @vs.delete(vs_name)
49
+ @vs.list.include?(vs_name).should == false
50
+ end
51
+
52
+ end
@@ -5,12 +5,12 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{zeus-api}
8
- s.version = "0.1.0"
8
+ s.version = "0.1.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["David Peterson"]
12
- s.date = %q{2010-11-24}
13
- s.description = %q{This gem implements a wrapper to the SOAP control API provided by Zeus Load Balance (ZLB) and Zeus Traffic Manager (ZTM).}
12
+ s.date = %q{2010-11-25}
13
+ s.description = %q{This gem implements a wrapper to the SOAP control API provided by Zeus Load Balancer (ZLB) and Zeus Traffic Manager (ZTM).}
14
14
  s.email = %q{peterson@orbitec.com.au}
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE.txt",
@@ -41,8 +41,8 @@ Gem::Specification.new do |s|
41
41
  "lib/api/virtualserver/VirtualServerService.rb",
42
42
  "lib/zeus-api.rb",
43
43
  "sample/simple.rb",
44
- "test/helper.rb",
45
- "test/test_zeus-api.rb",
44
+ "spec/spec_helper.rb",
45
+ "spec/virtualserver_spec.rb",
46
46
  "zeus-api.gemspec"
47
47
  ]
48
48
  s.homepage = %q{http://github.com/peterson/zeus-api}
@@ -51,8 +51,8 @@ Gem::Specification.new do |s|
51
51
  s.rubygems_version = %q{1.3.7}
52
52
  s.summary = %q{Ruby control API for Zeus Load Balancer and Zeus Traffic Manager}
53
53
  s.test_files = [
54
- "test/helper.rb",
55
- "test/test_zeus-api.rb"
54
+ "spec/spec_helper.rb",
55
+ "spec/virtualserver_spec.rb"
56
56
  ]
57
57
 
58
58
  if s.respond_to? :specification_version then
@@ -60,24 +60,30 @@ Gem::Specification.new do |s|
60
60
  s.specification_version = 3
61
61
 
62
62
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
63
- s.add_development_dependency(%q<shoulda>, [">= 0"])
63
+ s.add_runtime_dependency(%q<soap4r>, [">= 1.5.8"])
64
+ s.add_development_dependency(%q<rspec>, ["~> 2.1.0"])
64
65
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
65
66
  s.add_development_dependency(%q<jeweler>, ["~> 1.5.1"])
66
67
  s.add_development_dependency(%q<rcov>, [">= 0"])
67
68
  s.add_runtime_dependency(%q<soap4r>, [">= 1.5.8"])
69
+ s.add_development_dependency(%q<rspec>, ["> 1.2.3"])
68
70
  else
69
- s.add_dependency(%q<shoulda>, [">= 0"])
71
+ s.add_dependency(%q<soap4r>, [">= 1.5.8"])
72
+ s.add_dependency(%q<rspec>, ["~> 2.1.0"])
70
73
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
71
74
  s.add_dependency(%q<jeweler>, ["~> 1.5.1"])
72
75
  s.add_dependency(%q<rcov>, [">= 0"])
73
76
  s.add_dependency(%q<soap4r>, [">= 1.5.8"])
77
+ s.add_dependency(%q<rspec>, ["> 1.2.3"])
74
78
  end
75
79
  else
76
- s.add_dependency(%q<shoulda>, [">= 0"])
80
+ s.add_dependency(%q<soap4r>, [">= 1.5.8"])
81
+ s.add_dependency(%q<rspec>, ["~> 2.1.0"])
77
82
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
78
83
  s.add_dependency(%q<jeweler>, ["~> 1.5.1"])
79
84
  s.add_dependency(%q<rcov>, [">= 0"])
80
85
  s.add_dependency(%q<soap4r>, [">= 1.5.8"])
86
+ s.add_dependency(%q<rspec>, ["> 1.2.3"])
81
87
  end
82
88
  end
83
89
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zeus-api
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 0
10
- version: 0.1.0
9
+ - 1
10
+ version: 0.1.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - David Peterson
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-11-24 00:00:00 +11:00
18
+ date: 2010-11-25 00:00:00 +11:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -24,16 +24,34 @@ dependencies:
24
24
  requirements:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
- hash: 3
27
+ hash: 19
28
28
  segments:
29
- - 0
30
- version: "0"
31
- type: :development
32
- name: shoulda
29
+ - 1
30
+ - 5
31
+ - 8
32
+ version: 1.5.8
33
+ type: :runtime
34
+ name: soap4r
33
35
  prerelease: false
34
36
  version_requirements: *id001
35
37
  - !ruby/object:Gem::Dependency
36
38
  requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ hash: 11
44
+ segments:
45
+ - 2
46
+ - 1
47
+ - 0
48
+ version: 2.1.0
49
+ type: :development
50
+ name: rspec
51
+ prerelease: false
52
+ version_requirements: *id002
53
+ - !ruby/object:Gem::Dependency
54
+ requirement: &id003 !ruby/object:Gem::Requirement
37
55
  none: false
38
56
  requirements:
39
57
  - - ~>
@@ -47,9 +65,9 @@ dependencies:
47
65
  type: :development
48
66
  name: bundler
49
67
  prerelease: false
50
- version_requirements: *id002
68
+ version_requirements: *id003
51
69
  - !ruby/object:Gem::Dependency
52
- requirement: &id003 !ruby/object:Gem::Requirement
70
+ requirement: &id004 !ruby/object:Gem::Requirement
53
71
  none: false
54
72
  requirements:
55
73
  - - ~>
@@ -63,9 +81,9 @@ dependencies:
63
81
  type: :development
64
82
  name: jeweler
65
83
  prerelease: false
66
- version_requirements: *id003
84
+ version_requirements: *id004
67
85
  - !ruby/object:Gem::Dependency
68
- requirement: &id004 !ruby/object:Gem::Requirement
86
+ requirement: &id005 !ruby/object:Gem::Requirement
69
87
  none: false
70
88
  requirements:
71
89
  - - ">="
@@ -77,9 +95,9 @@ dependencies:
77
95
  type: :development
78
96
  name: rcov
79
97
  prerelease: false
80
- version_requirements: *id004
98
+ version_requirements: *id005
81
99
  - !ruby/object:Gem::Dependency
82
- requirement: &id005 !ruby/object:Gem::Requirement
100
+ requirement: &id006 !ruby/object:Gem::Requirement
83
101
  none: false
84
102
  requirements:
85
103
  - - ">="
@@ -93,8 +111,24 @@ dependencies:
93
111
  type: :runtime
94
112
  name: soap4r
95
113
  prerelease: false
96
- version_requirements: *id005
97
- description: This gem implements a wrapper to the SOAP control API provided by Zeus Load Balance (ZLB) and Zeus Traffic Manager (ZTM).
114
+ version_requirements: *id006
115
+ - !ruby/object:Gem::Dependency
116
+ requirement: &id007 !ruby/object:Gem::Requirement
117
+ none: false
118
+ requirements:
119
+ - - ">"
120
+ - !ruby/object:Gem::Version
121
+ hash: 25
122
+ segments:
123
+ - 1
124
+ - 2
125
+ - 3
126
+ version: 1.2.3
127
+ type: :development
128
+ name: rspec
129
+ prerelease: false
130
+ version_requirements: *id007
131
+ description: This gem implements a wrapper to the SOAP control API provided by Zeus Load Balancer (ZLB) and Zeus Traffic Manager (ZTM).
98
132
  email: peterson@orbitec.com.au
99
133
  executables: []
100
134
 
@@ -128,8 +162,8 @@ files:
128
162
  - lib/api/virtualserver/VirtualServerService.rb
129
163
  - lib/zeus-api.rb
130
164
  - sample/simple.rb
131
- - test/helper.rb
132
- - test/test_zeus-api.rb
165
+ - spec/spec_helper.rb
166
+ - spec/virtualserver_spec.rb
133
167
  - zeus-api.gemspec
134
168
  has_rdoc: true
135
169
  homepage: http://github.com/peterson/zeus-api
@@ -166,5 +200,5 @@ signing_key:
166
200
  specification_version: 3
167
201
  summary: Ruby control API for Zeus Load Balancer and Zeus Traffic Manager
168
202
  test_files:
169
- - test/helper.rb
170
- - test/test_zeus-api.rb
203
+ - spec/spec_helper.rb
204
+ - spec/virtualserver_spec.rb
@@ -1,18 +0,0 @@
1
- require 'rubygems'
2
- require 'bundler'
3
- begin
4
- Bundler.setup(:default, :development)
5
- rescue Bundler::BundlerError => e
6
- $stderr.puts e.message
7
- $stderr.puts "Run `bundle install` to install missing gems"
8
- exit e.status_code
9
- end
10
- require 'test/unit'
11
- require 'shoulda'
12
-
13
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
14
- $LOAD_PATH.unshift(File.dirname(__FILE__))
15
- require 'zeus-api'
16
-
17
- class Test::Unit::TestCase
18
- end
@@ -1,7 +0,0 @@
1
- require 'helper'
2
-
3
- class TestZeusApi < Test::Unit::TestCase
4
- should "probably rename this file and start testing for real" do
5
- flunk "hey buddy, you should probably rename this file and start testing for real"
6
- end
7
- end