infoblox 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -17,6 +17,17 @@ module Infoblox
17
17
  end
18
18
  end
19
19
 
20
+ ##
21
+ # Define a remote attribute that can only be sent during a
22
+ # POST operation.
23
+ #
24
+ def self.remote_post_accessor(*args)
25
+ args.each do |a|
26
+ attr_accessor a
27
+ remote_post_attrs << a
28
+ end
29
+ end
30
+
20
31
  ##
21
32
  # Define a remote attribute that is write-only
22
33
  #
@@ -35,6 +46,10 @@ module Infoblox
35
46
  @remote_write_only_attrs ||= []
36
47
  end
37
48
 
49
+ def self.remote_post_attrs
50
+ @remote_post_attrs ||= []
51
+ end
52
+
38
53
  def self._return_fields
39
54
  self.remote_attrs.join(",")
40
55
  end
@@ -87,7 +102,7 @@ module Infoblox
87
102
  end
88
103
 
89
104
  def post
90
- self._ref = connection.post(resource_uri, remote_attribute_hash(write = true)).body
105
+ self._ref = connection.post(resource_uri, remote_attribute_hash(write = true, post = true)).body
91
106
  true
92
107
  end
93
108
  alias_method :create, :post
@@ -108,7 +123,7 @@ module Infoblox
108
123
  self._ref.nil? ? self.class.resource_uri : (BASE_PATH + self._ref)
109
124
  end
110
125
 
111
- def remote_attribute_hash(write=false)
126
+ def remote_attribute_hash(write=false, post=false)
112
127
  {}.tap do |hsh|
113
128
  self.class.remote_attrs.each do |k|
114
129
  hsh[k] = self.send(k)
@@ -116,6 +131,9 @@ module Infoblox
116
131
  self.class.remote_write_only_attrs.each do |k|
117
132
  hsh[k] = self.send(k)
118
133
  end if write
134
+ self.class.remote_post_attrs.each do |k|
135
+ hsh[k] = self.send(k)
136
+ end if post
119
137
  end
120
138
  end
121
139
 
@@ -1,7 +1,8 @@
1
1
  module Infoblox
2
2
  class Network < Resource
3
3
  remote_attr_accessor :network, :extensible_attributes
4
- remote_attr_writer :auto_create_reversezone
4
+ remote_post_accessor :auto_create_reversezone
5
+
5
6
  attr_accessor :network_view, :network_container
6
7
 
7
8
  wapi_object "network"
@@ -1,7 +1,8 @@
1
1
  module Infoblox
2
2
  class NetworkContainer < Resource
3
3
  remote_attr_accessor :network, :extensible_attributes
4
- remote_attr_writer :auto_create_reversezone
4
+ remote_post_accessor :auto_create_reversezone
5
+
5
6
  attr_accessor :network_view
6
7
 
7
8
  wapi_object "networkcontainer"
@@ -1,3 +1,3 @@
1
1
  module Infoblox
2
- VERSION = "0.0.8"
2
+ VERSION = "0.0.9"
3
3
  end
@@ -2,6 +2,8 @@ require 'spec_helper'
2
2
  class FooResource < Infoblox::Resource
3
3
  remote_attr_accessor :name, :junction
4
4
  remote_attr_writer :do_it
5
+ remote_post_accessor :sect
6
+
5
7
  attr_accessor :animal
6
8
  wapi_object "foo:animal"
7
9
  end
@@ -34,19 +36,32 @@ describe Infoblox::Resource, "#add_ipv4addr" do
34
36
  FooResource.all.should eq([])
35
37
  end
36
38
 
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
39
+ it "should put with the right attributes" do
40
+ conn = double
41
+ uri = Infoblox::BASE_PATH + "abcd"
42
+ allow(conn).to receive(:put).with(uri, {:name => "jerry", :junction => "32", :do_it => false}).and_return(FooResponse.new("[]"))
43
+ FooResource.connection = conn
44
+ f = FooResource.new
45
+ f._ref = "abcd"
46
+ f.do_it = false
47
+ f.junction = "32"
48
+ f.name = "jerry"
49
+ f.sect = :fulburns
50
+ f.put
51
+ end
52
+
53
+ it "should post with the right attributes" do
54
+ conn = double
55
+ uri = Infoblox::BASE_PATH + "foo:animal"
56
+ allow(conn).to receive(:post).with(uri, {:name => "jerry", :junction => "32", :do_it => false, :sect => :fulburns}).and_return(FooResponse.new("abcdefg"))
57
+ FooResource.connection = conn
58
+ f = FooResource.new
59
+ f.do_it = false
60
+ f.junction = "32"
61
+ f.name = "jerry"
62
+ f.sect = :fulburns
63
+ f.post
64
+ f._ref.should eq('abcdefg')
50
65
  end
51
66
  end
52
67
 
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.8
4
+ version: 0.0.9
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: