icontrol 0.3.7 → 0.3.8
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/icontrol/base.rb +12 -5
- data/lib/icontrol/base/icontrol_overlay/common.rb +20 -7
- data/spec/icontrol/base_spec.rb +30 -0
- data/spec/icontrol/common_spec.rb +6 -1
- metadata +39 -24
data/lib/icontrol/base.rb
CHANGED
@@ -61,6 +61,10 @@ module IControl
|
|
61
61
|
def set_id_name(name)
|
62
62
|
@id_name = name
|
63
63
|
end
|
64
|
+
|
65
|
+
def mutex
|
66
|
+
@mutex ||= Mutex.new
|
67
|
+
end
|
64
68
|
|
65
69
|
def class_name
|
66
70
|
name.split("::").last
|
@@ -222,11 +226,14 @@ module IControl
|
|
222
226
|
begin
|
223
227
|
# When calling a soap method we transparently add the ns (I'd rather say we obscurely)
|
224
228
|
request = ""
|
225
|
-
response =
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
229
|
+
response = nil
|
230
|
+
mutex.synchronize do
|
231
|
+
response = self.client.request(:wsdl, method_name.to_s) do |soap|
|
232
|
+
soap.namespaces["xmlns:wsdl"] = "urn:iControl:#{parent_modules[1..-1].join(".")}/#{class_name}"
|
233
|
+
soap.body = convert_to_soap(hash_to_call_args(args.first)) if args.first
|
234
|
+
block.call(soap) if block
|
235
|
+
request = soap.to_xml
|
236
|
+
end
|
230
237
|
end
|
231
238
|
return self.map_response(response.to_xml)
|
232
239
|
rescue Savon::HTTP::Error, Savon::SOAP::Fault => error
|
@@ -1,17 +1,30 @@
|
|
1
|
+
require 'bindata'
|
1
2
|
module IControl
|
2
3
|
module Common
|
3
4
|
class ULong64 < IControl::Base::Struct
|
5
|
+
|
6
|
+
def from_soap(xml)
|
7
|
+
puts "HEY"
|
8
|
+
puts xml.inspect
|
9
|
+
end
|
10
|
+
|
4
11
|
def to_f
|
5
|
-
|
6
|
-
|
7
|
-
|
12
|
+
BinData::Uint64be.read(BinData::Int32be.new(high).to_binary_s + BinData::Int32be.new(low).to_binary_s)
|
13
|
+
end
|
14
|
+
|
15
|
+
def to_fd
|
16
|
+
retVal = 0.0
|
17
|
+
u_high = high.to_s.unpack("L").first || 0
|
18
|
+
u_low = low.to_s.unpack("L").first || 0
|
19
|
+
if u_high >=0
|
20
|
+
retVal = u_high << 32 & 0xffff0000
|
8
21
|
else
|
9
|
-
retVal = ((
|
22
|
+
retVal = ((u_high & 0x7fffffff) << 32) + (0x80000000 << 32)
|
10
23
|
end
|
11
|
-
if
|
12
|
-
retVal +=
|
24
|
+
if u_low >=0
|
25
|
+
retVal += u_low
|
13
26
|
else
|
14
|
-
retVal += ((
|
27
|
+
retVal += ((u_low & 0x7fffffff) + 0x7fffffff)
|
15
28
|
end
|
16
29
|
return retVal;
|
17
30
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__),"..",'/spec_helper'))
|
2
|
+
|
3
|
+
describe IControl::Base do
|
4
|
+
use_vcr_cassette "IControl::Base", :record => :all, :match_requests_on => [:uri, :method, :body] # Change :record => :new_episodes when done
|
5
|
+
describe "Concurrent invocation" do
|
6
|
+
it "should allow to be called concurrently" do
|
7
|
+
virtual_servers = []
|
8
|
+
pools = []
|
9
|
+
threads = []
|
10
|
+
lambda {
|
11
|
+
30.times do
|
12
|
+
threads << Thread.new do
|
13
|
+
virtual_servers << IControl::LocalLB::VirtualServer.find(:all).first
|
14
|
+
pools << IControl::LocalLB::Pool.find(:all).first
|
15
|
+
end
|
16
|
+
end
|
17
|
+
threads.each(&:join)
|
18
|
+
}.should_not raise_exception
|
19
|
+
|
20
|
+
virtual_servers.each do |virtual_server|
|
21
|
+
virtual_server.id.should == virtual_servers.first.id
|
22
|
+
end
|
23
|
+
pools.each do |pool|
|
24
|
+
pool.id.should == pools.first.id
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
@@ -1,11 +1,16 @@
|
|
1
1
|
require File.expand_path(File.join(File.dirname(__FILE__),"..",'/spec_helper'))
|
2
2
|
|
3
3
|
describe IControl::Common::ULong64 do
|
4
|
-
|
4
|
+
use_vcr_cassette "IControl::Common::ULong64", :record => :all, :match_requests_on => [:uri, :method, :body] # Change :record => :new_episodes when done
|
5
5
|
describe "#to_f" do
|
6
6
|
it "should exist" do
|
7
7
|
IControl::Common::ULong64.new({}).methods.should include(:to_f)
|
8
8
|
end
|
9
|
+
|
10
|
+
it "should correctly perform the conversion between two unsigned ints and a bignum" do
|
11
|
+
IControl::Common::ULong64.new(:high => 0, :low => 37565545).to_f.should == 37565545
|
12
|
+
IControl::Common::ULong64.new(:high => 2, :low => -1701380642).to_f.should == 11183521246
|
13
|
+
end
|
9
14
|
end
|
10
15
|
|
11
16
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 3
|
8
|
-
-
|
9
|
-
version: 0.3.
|
8
|
+
- 8
|
9
|
+
version: 0.3.8
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Jose Fernandez (magec)
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-
|
17
|
+
date: 2011-03-01 00:00:00 +01:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -48,8 +48,21 @@ dependencies:
|
|
48
48
|
prerelease: false
|
49
49
|
version_requirements: *id002
|
50
50
|
- !ruby/object:Gem::Dependency
|
51
|
-
name:
|
51
|
+
name: bindata
|
52
52
|
requirement: &id003 !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
segments:
|
58
|
+
- 0
|
59
|
+
version: "0"
|
60
|
+
type: :runtime
|
61
|
+
prerelease: false
|
62
|
+
version_requirements: *id003
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
name: vcr
|
65
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
53
66
|
none: false
|
54
67
|
requirements:
|
55
68
|
- - ~>
|
@@ -61,10 +74,10 @@ dependencies:
|
|
61
74
|
version: 1.4.0
|
62
75
|
type: :development
|
63
76
|
prerelease: false
|
64
|
-
version_requirements: *
|
77
|
+
version_requirements: *id004
|
65
78
|
- !ruby/object:Gem::Dependency
|
66
79
|
name: webmock
|
67
|
-
requirement: &
|
80
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
68
81
|
none: false
|
69
82
|
requirements:
|
70
83
|
- - ~>
|
@@ -75,10 +88,10 @@ dependencies:
|
|
75
88
|
version: "1.6"
|
76
89
|
type: :development
|
77
90
|
prerelease: false
|
78
|
-
version_requirements: *
|
91
|
+
version_requirements: *id005
|
79
92
|
- !ruby/object:Gem::Dependency
|
80
93
|
name: nokogiri
|
81
|
-
requirement: &
|
94
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
82
95
|
none: false
|
83
96
|
requirements:
|
84
97
|
- - ">="
|
@@ -88,10 +101,10 @@ dependencies:
|
|
88
101
|
version: "0"
|
89
102
|
type: :development
|
90
103
|
prerelease: false
|
91
|
-
version_requirements: *
|
104
|
+
version_requirements: *id006
|
92
105
|
- !ruby/object:Gem::Dependency
|
93
106
|
name: mechanize
|
94
|
-
requirement: &
|
107
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
95
108
|
none: false
|
96
109
|
requirements:
|
97
110
|
- - ">="
|
@@ -101,10 +114,10 @@ dependencies:
|
|
101
114
|
version: "0"
|
102
115
|
type: :development
|
103
116
|
prerelease: false
|
104
|
-
version_requirements: *
|
117
|
+
version_requirements: *id007
|
105
118
|
- !ruby/object:Gem::Dependency
|
106
119
|
name: rspec
|
107
|
-
requirement: &
|
120
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
108
121
|
none: false
|
109
122
|
requirements:
|
110
123
|
- - ~>
|
@@ -116,10 +129,10 @@ dependencies:
|
|
116
129
|
version: 2.3.0
|
117
130
|
type: :development
|
118
131
|
prerelease: false
|
119
|
-
version_requirements: *
|
132
|
+
version_requirements: *id008
|
120
133
|
- !ruby/object:Gem::Dependency
|
121
134
|
name: yard
|
122
|
-
requirement: &
|
135
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
123
136
|
none: false
|
124
137
|
requirements:
|
125
138
|
- - ~>
|
@@ -131,10 +144,10 @@ dependencies:
|
|
131
144
|
version: 0.6.0
|
132
145
|
type: :development
|
133
146
|
prerelease: false
|
134
|
-
version_requirements: *
|
147
|
+
version_requirements: *id009
|
135
148
|
- !ruby/object:Gem::Dependency
|
136
149
|
name: yard-examples-from-rspec
|
137
|
-
requirement: &
|
150
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
138
151
|
none: false
|
139
152
|
requirements:
|
140
153
|
- - ~>
|
@@ -146,10 +159,10 @@ dependencies:
|
|
146
159
|
version: 0.0.1
|
147
160
|
type: :development
|
148
161
|
prerelease: false
|
149
|
-
version_requirements: *
|
162
|
+
version_requirements: *id010
|
150
163
|
- !ruby/object:Gem::Dependency
|
151
164
|
name: bundler
|
152
|
-
requirement: &
|
165
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
153
166
|
none: false
|
154
167
|
requirements:
|
155
168
|
- - ~>
|
@@ -161,10 +174,10 @@ dependencies:
|
|
161
174
|
version: 1.0.0
|
162
175
|
type: :development
|
163
176
|
prerelease: false
|
164
|
-
version_requirements: *
|
177
|
+
version_requirements: *id011
|
165
178
|
- !ruby/object:Gem::Dependency
|
166
179
|
name: jeweler
|
167
|
-
requirement: &
|
180
|
+
requirement: &id012 !ruby/object:Gem::Requirement
|
168
181
|
none: false
|
169
182
|
requirements:
|
170
183
|
- - ~>
|
@@ -176,10 +189,10 @@ dependencies:
|
|
176
189
|
version: 1.5.2
|
177
190
|
type: :development
|
178
191
|
prerelease: false
|
179
|
-
version_requirements: *
|
192
|
+
version_requirements: *id012
|
180
193
|
- !ruby/object:Gem::Dependency
|
181
194
|
name: rcov
|
182
|
-
requirement: &
|
195
|
+
requirement: &id013 !ruby/object:Gem::Requirement
|
183
196
|
none: false
|
184
197
|
requirements:
|
185
198
|
- - ">="
|
@@ -189,7 +202,7 @@ dependencies:
|
|
189
202
|
version: "0"
|
190
203
|
type: :development
|
191
204
|
prerelease: false
|
192
|
-
version_requirements: *
|
205
|
+
version_requirements: *id013
|
193
206
|
description: This gem allows you to Connect to a F5 appliance by means of its web services
|
194
207
|
email: jfernandezperez@gmail.com
|
195
208
|
executables: []
|
@@ -362,6 +375,7 @@ files:
|
|
362
375
|
- README.rdoc
|
363
376
|
- spec/icontrol/base/sequence_spec.rb
|
364
377
|
- spec/icontrol/base/struct_spec.rb
|
378
|
+
- spec/icontrol/base_spec.rb
|
365
379
|
- spec/icontrol/common_spec.rb
|
366
380
|
- spec/icontrol/local_lb/pool_member_spec.rb
|
367
381
|
- spec/icontrol/local_lb/pool_spec.rb
|
@@ -382,7 +396,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
382
396
|
requirements:
|
383
397
|
- - ">="
|
384
398
|
- !ruby/object:Gem::Version
|
385
|
-
hash: -
|
399
|
+
hash: -212281297
|
386
400
|
segments:
|
387
401
|
- 0
|
388
402
|
version: "0"
|
@@ -404,6 +418,7 @@ summary: A ruby client to the BigIP F5
|
|
404
418
|
test_files:
|
405
419
|
- spec/icontrol/base/sequence_spec.rb
|
406
420
|
- spec/icontrol/base/struct_spec.rb
|
421
|
+
- spec/icontrol/base_spec.rb
|
407
422
|
- spec/icontrol/common_spec.rb
|
408
423
|
- spec/icontrol/local_lb/pool_member_spec.rb
|
409
424
|
- spec/icontrol/local_lb/pool_spec.rb
|