infoblox 0.4.1 → 0.5.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.
- checksums.yaml +7 -0
- data/README.md +21 -7
- data/lib/infoblox/resource.rb +19 -13
- data/lib/infoblox/version.rb +1 -1
- data/spec/integration/host_spec.rb +1 -1
- data/spec/resource_spec.rb +13 -0
- metadata +77 -118
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA512:
|
3
|
+
data.tar.gz: fe70db9970416b97a4b479ee0a038d400ceb8760206912a169a473b567305108cd12f2584345e571d391c2fb3b4e94f3fe98ee739d35f66e389718b3b47515b9
|
4
|
+
metadata.gz: 32e97f4d1181671747fc75e5f6d2bf0bb6c444bbe3bf23ad68dba24312fb9c0308a5e8a26ab17479e8eb355fcbb0a780515493e2dd9b3d5b89c0cd1d99034ee3
|
5
|
+
SHA1:
|
6
|
+
data.tar.gz: 0894fe3f72ec58287022a14e6a05dfd1a566054e
|
7
|
+
metadata.gz: 7e4f651a69f6130d8616bcf16e7e3bf5c234699b
|
data/README.md
CHANGED
@@ -25,24 +25,37 @@ An instance of the `Infoblox::Connection` class is necessary:
|
|
25
25
|
connection = Infoblox::Connection.new(username: '', password: '', host: '')
|
26
26
|
|
27
27
|
## Reading
|
28
|
-
Each resource class implements
|
28
|
+
Each resource class implements `.all`, `.find`, and `#get`.
|
29
29
|
|
30
|
+
### `.find`
|
31
|
+
Use find when you don't know what you are looking for or you don't have a `_ref` saved (see `get` below). Use `_max_results` to limit / expand the number of returned results.
|
32
|
+
|
33
|
+
# You can find hosts that match a regular expression:
|
34
|
+
Infoblox::Host.find(connection, {"name~" => "demo[0-9]{1,}-web.domain"})
|
35
|
+
# => [...]
|
36
|
+
|
37
|
+
### `.all`
|
38
|
+
Show all results (note that this is limited by `_max_results`). Use this cautiously when you have a large potential set of results.
|
39
|
+
|
30
40
|
# Find all networks. Note that this is limited to 1000 objects, as per the
|
31
41
|
# Infoblox WAPI documentation.
|
32
42
|
Infoblox::Network.all(connection)
|
33
43
|
# => [...]
|
34
|
-
|
44
|
+
|
35
45
|
# If you want more than 1,000 records, use `_max_results`:
|
36
46
|
Infoblox::Network.all(connection, _max_results: 7890)
|
37
47
|
|
38
|
-
# You can find hosts that match a regular expression:
|
39
|
-
Infoblox::Host.find(connection, {"name~" => "demo[0-9]{1,}-web.domain"})
|
40
|
-
# => [...]
|
41
|
-
|
42
48
|
The usage of search parameters is well-documented in the Infoblox WAPI documentation, and this client supports them fully.
|
43
49
|
|
50
|
+
### `#get`
|
51
|
+
Use this when you have saved a reference (`_ref`) and want to load it later.
|
52
|
+
|
53
|
+
host = Infoblox::Host.new(:connection => c, :_ref => ref).get
|
54
|
+
puts host.name
|
55
|
+
# => foo.bar
|
56
|
+
|
44
57
|
## Searching
|
45
|
-
You can also search across
|
58
|
+
You can also search across all Infoblox resource types using the `Infoblox::Search` resource. The response will contain any number of `Infoblox::Resource` subclass instances.
|
46
59
|
|
47
60
|
result = Infoblox::Search.find(connection, "search_string~" => "webserver-")
|
48
61
|
# => [#<Infoblox::Host>, #<Infoblox::Ptr>, ...]
|
@@ -183,6 +196,7 @@ To run the tests:
|
|
183
196
|
|
184
197
|
To run the integration tests (you will be prompted for your Infoblox credentials):
|
185
198
|
|
199
|
+
INTEGRATION=true bundle
|
186
200
|
INTEGRATION=true rspec
|
187
201
|
|
188
202
|
Please note that the integration tests do not work in Ruby 1.8.7, but the unit tests function normally.
|
data/lib/infoblox/resource.rb
CHANGED
@@ -125,17 +125,7 @@ module Infoblox
|
|
125
125
|
end
|
126
126
|
|
127
127
|
def initialize(attrs={})
|
128
|
-
attrs
|
129
|
-
# Some things have specialized writers,
|
130
|
-
# like Host
|
131
|
-
if respond_to?("#{k}=")
|
132
|
-
send("#{k}=", v)
|
133
|
-
|
134
|
-
# Some things don't have writers (i.e. remote_attr_reader fields)
|
135
|
-
else
|
136
|
-
instance_variable_set("@#{k}", v)
|
137
|
-
end
|
138
|
-
end
|
128
|
+
load_attributes(attrs)
|
139
129
|
end
|
140
130
|
|
141
131
|
def post
|
@@ -148,8 +138,10 @@ module Infoblox
|
|
148
138
|
connection.delete(resource_uri).status == 200
|
149
139
|
end
|
150
140
|
|
151
|
-
def get(params=
|
152
|
-
connection.get(resource_uri, params)
|
141
|
+
def get(params=self.class.default_params)
|
142
|
+
response = connection.get(resource_uri, params).body
|
143
|
+
load_attributes(JSON.parse(response))
|
144
|
+
self
|
153
145
|
end
|
154
146
|
|
155
147
|
def put
|
@@ -179,6 +171,20 @@ module Infoblox
|
|
179
171
|
def unquote(str)
|
180
172
|
str.gsub(/\A['"]+|['"]+\Z/, "")
|
181
173
|
end
|
174
|
+
|
175
|
+
def load_attributes(attrs)
|
176
|
+
attrs.each do |k,v|
|
177
|
+
# Some things have specialized writers,
|
178
|
+
# like Host
|
179
|
+
if respond_to?("#{k}=")
|
180
|
+
send("#{k}=", v)
|
181
|
+
|
182
|
+
# Some things don't have writers (i.e. remote_attr_reader fields)
|
183
|
+
else
|
184
|
+
instance_variable_set("@#{k}", v)
|
185
|
+
end
|
186
|
+
end
|
187
|
+
end
|
182
188
|
end
|
183
189
|
|
184
190
|
end
|
data/lib/infoblox/version.rb
CHANGED
@@ -10,7 +10,7 @@ if ENV['INTEGRATION']
|
|
10
10
|
it 'should create, update, and destroy' do
|
11
11
|
failure = false
|
12
12
|
each_version do
|
13
|
-
@host = Infoblox::Host.new(connection
|
13
|
+
@host = Infoblox::Host.new(:connection => connection)
|
14
14
|
begin
|
15
15
|
@host.add_ipv4addr('10.30.30.30')
|
16
16
|
@host.name = "poc-infobloxgem-test1.ep.gdi"
|
data/spec/resource_spec.rb
CHANGED
@@ -90,6 +90,19 @@ describe Infoblox::Resource, "#add_ipv4addr" do
|
|
90
90
|
expect(f.sect).to eq(:larry)
|
91
91
|
end
|
92
92
|
|
93
|
+
it 'should load attributes on get' do
|
94
|
+
conn = double
|
95
|
+
uri = Infoblox.base_path + "a:ref:that:is:fake"
|
96
|
+
json = {:name => "john", :junction => "hi", :extattrs => {"foo" => 3}}.to_json
|
97
|
+
response = FooResponse.new(json)
|
98
|
+
expect(conn).to receive(:get).with(uri, FooResource.default_params).and_return(response)
|
99
|
+
f = FooResource.new(:connection => conn, :_ref => "a:ref:that:is:fake")
|
100
|
+
f.get
|
101
|
+
expect(f.name).to eq("john")
|
102
|
+
expect(f.junction).to eq("hi")
|
103
|
+
expect(f.extattrs).to eq({"foo" => 3})
|
104
|
+
end
|
105
|
+
|
93
106
|
it 'should map wapi objects to classes' do
|
94
107
|
@expected = {}
|
95
108
|
ObjectSpace.each_object(Class) do |p|
|
metadata
CHANGED
@@ -1,119 +1,87 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: infoblox
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.5.0
|
6
5
|
platform: ruby
|
7
|
-
authors:
|
6
|
+
authors:
|
8
7
|
- Billy Reisinger
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
requirements:
|
19
|
-
-
|
20
|
-
-
|
21
|
-
|
11
|
+
|
12
|
+
date: 2015-08-11 00:00:00 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
prerelease: false
|
16
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- &id002
|
19
|
+
- ">="
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: "0"
|
22
22
|
type: :runtime
|
23
|
+
name: json
|
24
|
+
version_requirements: *id001
|
25
|
+
- !ruby/object:Gem::Dependency
|
23
26
|
prerelease: false
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
- - ! '>='
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '0'
|
30
|
-
- !ruby/object:Gem::Dependency
|
31
|
-
name: faraday_middleware
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
|
-
requirements:
|
35
|
-
- - ! '>='
|
36
|
-
- !ruby/object:Gem::Version
|
37
|
-
version: '0'
|
27
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
28
|
+
requirements:
|
29
|
+
- *id002
|
38
30
|
type: :runtime
|
31
|
+
name: faraday
|
32
|
+
version_requirements: *id003
|
33
|
+
- !ruby/object:Gem::Dependency
|
39
34
|
prerelease: false
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
|
-
name: rspec
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
|
-
requirements:
|
51
|
-
- - ! '>='
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: '0'
|
54
|
-
type: :development
|
35
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- *id002
|
38
|
+
type: :runtime
|
39
|
+
name: faraday_middleware
|
40
|
+
version_requirements: *id004
|
41
|
+
- !ruby/object:Gem::Dependency
|
55
42
|
prerelease: false
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
- - ! '>='
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
|
-
name: bundler
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
|
-
requirements:
|
67
|
-
- - ~>
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: '1.3'
|
43
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- *id002
|
70
46
|
type: :development
|
47
|
+
name: rspec
|
48
|
+
version_requirements: *id005
|
49
|
+
- !ruby/object:Gem::Dependency
|
71
50
|
prerelease: false
|
72
|
-
|
73
|
-
|
74
|
-
requirements:
|
51
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
75
53
|
- - ~>
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version:
|
78
|
-
- !ruby/object:Gem::Dependency
|
79
|
-
name: rake
|
80
|
-
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
|
-
requirements:
|
83
|
-
- - ! '>='
|
84
|
-
- !ruby/object:Gem::Version
|
85
|
-
version: '0'
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: "1.3"
|
86
56
|
type: :development
|
57
|
+
name: bundler
|
58
|
+
version_requirements: *id006
|
59
|
+
- !ruby/object:Gem::Dependency
|
87
60
|
prerelease: false
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
- - ! '>='
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: '0'
|
94
|
-
- !ruby/object:Gem::Dependency
|
95
|
-
name: pry
|
96
|
-
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
|
-
requirements:
|
99
|
-
- - ! '>='
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
version: '0'
|
61
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
62
|
+
requirements:
|
63
|
+
- *id002
|
102
64
|
type: :development
|
65
|
+
name: rake
|
66
|
+
version_requirements: *id007
|
67
|
+
- !ruby/object:Gem::Dependency
|
103
68
|
prerelease: false
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
69
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- *id002
|
72
|
+
type: :development
|
73
|
+
name: pry
|
74
|
+
version_requirements: *id008
|
110
75
|
description: A Ruby wrapper to the Infoblox WAPI
|
111
|
-
email:
|
76
|
+
email:
|
112
77
|
- billy.reisinger@govdelivery.com
|
113
78
|
executables: []
|
79
|
+
|
114
80
|
extensions: []
|
81
|
+
|
115
82
|
extra_rdoc_files: []
|
116
|
-
|
83
|
+
|
84
|
+
files:
|
117
85
|
- .gitignore
|
118
86
|
- .rspec
|
119
87
|
- .travis.yml
|
@@ -154,38 +122,29 @@ files:
|
|
154
122
|
- spec/search_spec.rb
|
155
123
|
- spec/spec_helper.rb
|
156
124
|
homepage: https://github.com/govdelivery/infoblox
|
157
|
-
licenses:
|
125
|
+
licenses:
|
158
126
|
- MIT
|
127
|
+
metadata: {}
|
128
|
+
|
159
129
|
post_install_message:
|
160
130
|
rdoc_options: []
|
161
|
-
|
131
|
+
|
132
|
+
require_paths:
|
162
133
|
- lib
|
163
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
segments:
|
170
|
-
- 0
|
171
|
-
hash: 1017556541912433420
|
172
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
173
|
-
none: false
|
174
|
-
requirements:
|
175
|
-
- - ! '>='
|
176
|
-
- !ruby/object:Gem::Version
|
177
|
-
version: '0'
|
178
|
-
segments:
|
179
|
-
- 0
|
180
|
-
hash: 1017556541912433420
|
134
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- *id002
|
137
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
138
|
+
requirements:
|
139
|
+
- *id002
|
181
140
|
requirements: []
|
141
|
+
|
182
142
|
rubyforge_project:
|
183
|
-
rubygems_version:
|
143
|
+
rubygems_version: 2.0.17
|
184
144
|
signing_key:
|
185
|
-
specification_version:
|
186
|
-
summary: This gem is a Ruby interface to the Infoblox WAPI. Using the gem, you can
|
187
|
-
|
188
|
-
test_files:
|
145
|
+
specification_version: 4
|
146
|
+
summary: This gem is a Ruby interface to the Infoblox WAPI. Using the gem, you can query, create, update, and delete DNS records in your Infoblox instance.
|
147
|
+
test_files:
|
189
148
|
- spec/connection_spec.rb
|
190
149
|
- spec/host_ipv4addr_spec.rb
|
191
150
|
- spec/host_spec.rb
|