infoblox 0.0.8 → 0.0.9

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