zeus-api 0.1.0 → 0.1.1

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.
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