infoblox 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/infoblox/network.rb +1 -0
- data/lib/infoblox/resource.rb +22 -4
- data/lib/infoblox/version.rb +1 -1
- data/spec/resource_spec.rb +16 -0
- metadata +2 -2
data/lib/infoblox/network.rb
CHANGED
data/lib/infoblox/resource.rb
CHANGED
@@ -17,10 +17,24 @@ module Infoblox
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
+
##
|
21
|
+
# Define a remote attribute that is write-only
|
22
|
+
#
|
23
|
+
def self.remote_attr_writer(*args)
|
24
|
+
args.each do |a|
|
25
|
+
attr_accessor a
|
26
|
+
remote_write_only_attrs << a
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
20
30
|
def self.remote_attrs
|
21
31
|
@remote_attrs ||= []
|
22
32
|
end
|
23
33
|
|
34
|
+
def self.remote_write_only_attrs
|
35
|
+
@remote_write_only_attrs ||= []
|
36
|
+
end
|
37
|
+
|
24
38
|
def self._return_fields
|
25
39
|
self.remote_attrs.join(",")
|
26
40
|
end
|
@@ -72,10 +86,11 @@ module Infoblox
|
|
72
86
|
end
|
73
87
|
end
|
74
88
|
|
75
|
-
def
|
76
|
-
self._ref = connection.post(resource_uri, remote_attribute_hash).body
|
89
|
+
def post
|
90
|
+
self._ref = connection.post(resource_uri, remote_attribute_hash(write = true)).body
|
77
91
|
true
|
78
92
|
end
|
93
|
+
alias_method :create, :post
|
79
94
|
|
80
95
|
def delete
|
81
96
|
connection.delete(resource_uri).status == 200
|
@@ -86,18 +101,21 @@ module Infoblox
|
|
86
101
|
end
|
87
102
|
|
88
103
|
def put
|
89
|
-
connection.put(resource_uri, remote_attribute_hash)
|
104
|
+
connection.put(resource_uri, remote_attribute_hash(write = true))
|
90
105
|
end
|
91
106
|
|
92
107
|
def resource_uri
|
93
108
|
self._ref.nil? ? self.class.resource_uri : (BASE_PATH + self._ref)
|
94
109
|
end
|
95
110
|
|
96
|
-
def remote_attribute_hash
|
111
|
+
def remote_attribute_hash(write=false)
|
97
112
|
{}.tap do |hsh|
|
98
113
|
self.class.remote_attrs.each do |k|
|
99
114
|
hsh[k] = self.send(k)
|
100
115
|
end
|
116
|
+
self.class.remote_write_only_attrs.each do |k|
|
117
|
+
hsh[k] = self.send(k)
|
118
|
+
end if write
|
101
119
|
end
|
102
120
|
end
|
103
121
|
|
data/lib/infoblox/version.rb
CHANGED
data/spec/resource_spec.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
class FooResource < Infoblox::Resource
|
3
3
|
remote_attr_accessor :name, :junction
|
4
|
+
remote_attr_writer :do_it
|
4
5
|
attr_accessor :animal
|
5
6
|
wapi_object "foo:animal"
|
6
7
|
end
|
@@ -32,5 +33,20 @@ describe Infoblox::Resource, "#add_ipv4addr" do
|
|
32
33
|
FooResource.connection = conn
|
33
34
|
FooResource.all.should eq([])
|
34
35
|
end
|
36
|
+
|
37
|
+
[:put, :post].each do |operation|
|
38
|
+
it "should #{operation} with the right attributes" do
|
39
|
+
conn = double
|
40
|
+
uri = Infoblox::BASE_PATH + ((operation == :put) ? "abcd" : "foo:animal")
|
41
|
+
allow(conn).to receive(operation).with(uri, {:name => "jerry", :junction => "32", :do_it => false}).and_return(FooResponse.new("[]"))
|
42
|
+
FooResource.connection = conn
|
43
|
+
f = FooResource.new
|
44
|
+
f._ref = "abcd" if operation == :put
|
45
|
+
f.do_it = false
|
46
|
+
f.junction = "32"
|
47
|
+
f.name = "jerry"
|
48
|
+
f.send(operation)
|
49
|
+
end
|
50
|
+
end
|
35
51
|
end
|
36
52
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: infoblox
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-08-
|
12
|
+
date: 2013-08-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: faraday
|