zeus-api 0.1.0

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/lib/zeus-api.rb ADDED
@@ -0,0 +1,6 @@
1
+
2
+ for binding in ["VirtualServer", "Pool", "CatalogRule"]
3
+ for suffix in ["", "Driver", "MappingRegistry", "Service"]
4
+ require File.dirname(__FILE__) + "/api/#{binding.downcase}/#{binding}#{suffix}"
5
+ end
6
+ end
data/sample/simple.rb ADDED
@@ -0,0 +1,60 @@
1
+ require 'rubygems'
2
+ require 'zeus-api'
3
+
4
+ endpoint = "https://10.0.0.250:9090/soap"
5
+ username = "api"
6
+ password = "api"
7
+
8
+ vs = VirtualServerService.new(endpoint, username, password)
9
+ p = PoolService.new(endpoint, username, password)
10
+ r = CatalogRuleService.new(endpoint, username, password)
11
+
12
+
13
+ # create a new pool
14
+ pool_name = "test-pool"
15
+ pool_nodes = ["10.0.0.101:80", "10.0.0.102:80"]
16
+
17
+ if p.list.include?(pool_name)
18
+ p.delete(pool_name)
19
+ end
20
+
21
+ p.create(pool_name, pool_nodes)
22
+ puts "Pool '#{pool_name}' was successfully created."
23
+
24
+
25
+ # create a new virtual server
26
+ vs_name = "test"
27
+ vs_info = {
28
+ :protocol => "http",
29
+ :port => "8000",
30
+ :default_pool => pool_name
31
+ }
32
+
33
+ if vs.list.include?(vs_name)
34
+ # vs.delete("test") # FIXME implement
35
+ end
36
+
37
+ vs.create(vs_name, vs_info)
38
+ puts "Virtual server '#{vs_name}' was successfully created."
39
+
40
+ vs.enable(vs_name)
41
+ puts "Virtual server '#{vs_name}' was enabled."
42
+
43
+
44
+ # create a new rule and add to virtual server
45
+ rule_name = "test-rule"
46
+ rule_text = "if( string.contains( http.getheader( \"Host\" ), \"test.com\" ) ){\n\n\tpool.use( \"test-pool\" );\n\n}\n"
47
+ rule_note = "Simple Host header dispatch rule using trafficscript"
48
+
49
+ if (r.valid?(rule_text))
50
+ r.create(rule_name, rule_text)
51
+ r.note(rule_name, rule_note)
52
+ else
53
+ puts "Error! Rule '#{rule_name}' failed validation!"
54
+ puts "Errors: #{r.errors}"
55
+ puts "Warnings: #{r.warnings}"
56
+ end
57
+
58
+ vs.add_request_rule(vs_name, rule_name)
59
+ puts "Rule '#{rule_name}' added to virtual server '#{vs_name}'."
60
+
data/test/helper.rb ADDED
@@ -0,0 +1,18 @@
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
@@ -0,0 +1,7 @@
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
data/zeus-api.gemspec ADDED
@@ -0,0 +1,83 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{zeus-api}
8
+ s.version = "0.1.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
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).}
14
+ s.email = %q{peterson@orbitec.com.au}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE.txt",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ "Gemfile",
22
+ "Gemfile.lock",
23
+ "LICENSE.txt",
24
+ "README.rdoc",
25
+ "Rakefile",
26
+ "VERSION",
27
+ "lib/api/catalogrule/CatalogRule.rb",
28
+ "lib/api/catalogrule/CatalogRuleClient.rb",
29
+ "lib/api/catalogrule/CatalogRuleDriver.rb",
30
+ "lib/api/catalogrule/CatalogRuleMappingRegistry.rb",
31
+ "lib/api/catalogrule/CatalogRuleService.rb",
32
+ "lib/api/pool/Pool.rb",
33
+ "lib/api/pool/PoolClient.rb",
34
+ "lib/api/pool/PoolDriver.rb",
35
+ "lib/api/pool/PoolMappingRegistry.rb",
36
+ "lib/api/pool/PoolService.rb",
37
+ "lib/api/virtualserver/VirtualServer.rb",
38
+ "lib/api/virtualserver/VirtualServerClient.rb",
39
+ "lib/api/virtualserver/VirtualServerDriver.rb",
40
+ "lib/api/virtualserver/VirtualServerMappingRegistry.rb",
41
+ "lib/api/virtualserver/VirtualServerService.rb",
42
+ "lib/zeus-api.rb",
43
+ "sample/simple.rb",
44
+ "test/helper.rb",
45
+ "test/test_zeus-api.rb",
46
+ "zeus-api.gemspec"
47
+ ]
48
+ s.homepage = %q{http://github.com/peterson/zeus-api}
49
+ s.licenses = ["MIT"]
50
+ s.require_paths = ["lib"]
51
+ s.rubygems_version = %q{1.3.7}
52
+ s.summary = %q{Ruby control API for Zeus Load Balancer and Zeus Traffic Manager}
53
+ s.test_files = [
54
+ "test/helper.rb",
55
+ "test/test_zeus-api.rb"
56
+ ]
57
+
58
+ if s.respond_to? :specification_version then
59
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
60
+ s.specification_version = 3
61
+
62
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
63
+ s.add_development_dependency(%q<shoulda>, [">= 0"])
64
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
65
+ s.add_development_dependency(%q<jeweler>, ["~> 1.5.1"])
66
+ s.add_development_dependency(%q<rcov>, [">= 0"])
67
+ s.add_runtime_dependency(%q<soap4r>, [">= 1.5.8"])
68
+ else
69
+ s.add_dependency(%q<shoulda>, [">= 0"])
70
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
71
+ s.add_dependency(%q<jeweler>, ["~> 1.5.1"])
72
+ s.add_dependency(%q<rcov>, [">= 0"])
73
+ s.add_dependency(%q<soap4r>, [">= 1.5.8"])
74
+ end
75
+ else
76
+ s.add_dependency(%q<shoulda>, [">= 0"])
77
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
78
+ s.add_dependency(%q<jeweler>, ["~> 1.5.1"])
79
+ s.add_dependency(%q<rcov>, [">= 0"])
80
+ s.add_dependency(%q<soap4r>, [">= 1.5.8"])
81
+ end
82
+ end
83
+
metadata ADDED
@@ -0,0 +1,170 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: zeus-api
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 0
10
+ version: 0.1.0
11
+ platform: ruby
12
+ authors:
13
+ - David Peterson
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-11-24 00:00:00 +11:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ requirement: &id001 !ruby/object:Gem::Requirement
23
+ none: false
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ hash: 3
28
+ segments:
29
+ - 0
30
+ version: "0"
31
+ type: :development
32
+ name: shoulda
33
+ prerelease: false
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ requirement: &id002 !ruby/object:Gem::Requirement
37
+ none: false
38
+ requirements:
39
+ - - ~>
40
+ - !ruby/object:Gem::Version
41
+ hash: 23
42
+ segments:
43
+ - 1
44
+ - 0
45
+ - 0
46
+ version: 1.0.0
47
+ type: :development
48
+ name: bundler
49
+ prerelease: false
50
+ version_requirements: *id002
51
+ - !ruby/object:Gem::Dependency
52
+ requirement: &id003 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ~>
56
+ - !ruby/object:Gem::Version
57
+ hash: 1
58
+ segments:
59
+ - 1
60
+ - 5
61
+ - 1
62
+ version: 1.5.1
63
+ type: :development
64
+ name: jeweler
65
+ prerelease: false
66
+ version_requirements: *id003
67
+ - !ruby/object:Gem::Dependency
68
+ requirement: &id004 !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ hash: 3
74
+ segments:
75
+ - 0
76
+ version: "0"
77
+ type: :development
78
+ name: rcov
79
+ prerelease: false
80
+ version_requirements: *id004
81
+ - !ruby/object:Gem::Dependency
82
+ requirement: &id005 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ hash: 19
88
+ segments:
89
+ - 1
90
+ - 5
91
+ - 8
92
+ version: 1.5.8
93
+ type: :runtime
94
+ name: soap4r
95
+ 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).
98
+ email: peterson@orbitec.com.au
99
+ executables: []
100
+
101
+ extensions: []
102
+
103
+ extra_rdoc_files:
104
+ - LICENSE.txt
105
+ - README.rdoc
106
+ files:
107
+ - .document
108
+ - Gemfile
109
+ - Gemfile.lock
110
+ - LICENSE.txt
111
+ - README.rdoc
112
+ - Rakefile
113
+ - VERSION
114
+ - lib/api/catalogrule/CatalogRule.rb
115
+ - lib/api/catalogrule/CatalogRuleClient.rb
116
+ - lib/api/catalogrule/CatalogRuleDriver.rb
117
+ - lib/api/catalogrule/CatalogRuleMappingRegistry.rb
118
+ - lib/api/catalogrule/CatalogRuleService.rb
119
+ - lib/api/pool/Pool.rb
120
+ - lib/api/pool/PoolClient.rb
121
+ - lib/api/pool/PoolDriver.rb
122
+ - lib/api/pool/PoolMappingRegistry.rb
123
+ - lib/api/pool/PoolService.rb
124
+ - lib/api/virtualserver/VirtualServer.rb
125
+ - lib/api/virtualserver/VirtualServerClient.rb
126
+ - lib/api/virtualserver/VirtualServerDriver.rb
127
+ - lib/api/virtualserver/VirtualServerMappingRegistry.rb
128
+ - lib/api/virtualserver/VirtualServerService.rb
129
+ - lib/zeus-api.rb
130
+ - sample/simple.rb
131
+ - test/helper.rb
132
+ - test/test_zeus-api.rb
133
+ - zeus-api.gemspec
134
+ has_rdoc: true
135
+ homepage: http://github.com/peterson/zeus-api
136
+ licenses:
137
+ - MIT
138
+ post_install_message:
139
+ rdoc_options: []
140
+
141
+ require_paths:
142
+ - lib
143
+ required_ruby_version: !ruby/object:Gem::Requirement
144
+ none: false
145
+ requirements:
146
+ - - ">="
147
+ - !ruby/object:Gem::Version
148
+ hash: 3
149
+ segments:
150
+ - 0
151
+ version: "0"
152
+ required_rubygems_version: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ">="
156
+ - !ruby/object:Gem::Version
157
+ hash: 3
158
+ segments:
159
+ - 0
160
+ version: "0"
161
+ requirements: []
162
+
163
+ rubyforge_project:
164
+ rubygems_version: 1.3.7
165
+ signing_key:
166
+ specification_version: 3
167
+ summary: Ruby control API for Zeus Load Balancer and Zeus Traffic Manager
168
+ test_files:
169
+ - test/helper.rb
170
+ - test/test_zeus-api.rb