netbox-client-ruby 0.0.1 → 0.0.2
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 +4 -4
- data/.gitignore +1 -0
- data/.rspec +0 -1
- data/Gemfile.lock +3 -1
- data/README.md +1 -1
- data/VERSION +1 -1
- data/dump.sql +7318 -0
- data/lib/netbox_client_ruby/api/ipam/ip_address.rb +16 -22
- data/lib/netbox_client_ruby/entity.rb +19 -19
- data/netbox-client-ruby.gemspec +1 -0
- metadata +18 -3
|
@@ -2,41 +2,35 @@ require 'netbox_client_ruby/entity'
|
|
|
2
2
|
require 'netbox_client_ruby/api/dcim/interface'
|
|
3
3
|
require 'netbox_client_ruby/api/ipam/vrf'
|
|
4
4
|
require 'netbox_client_ruby/api/tenancy/tenant'
|
|
5
|
+
require 'ipaddress'
|
|
5
6
|
|
|
6
7
|
module NetboxClientRuby
|
|
7
8
|
class IpAddress
|
|
8
9
|
include NetboxClientRuby::Entity
|
|
9
10
|
|
|
11
|
+
STATUS_VALUES = {
|
|
12
|
+
active: 1,
|
|
13
|
+
reserved: 2,
|
|
14
|
+
deprecated: 3,
|
|
15
|
+
dhcp: 5
|
|
16
|
+
}.freeze
|
|
17
|
+
|
|
10
18
|
id id: :id
|
|
11
19
|
deletable true
|
|
12
20
|
path 'ipam/ip-addresses/:id.json'
|
|
13
21
|
creation_path 'ipam/ip-addresses/'
|
|
14
22
|
object_fields(
|
|
15
|
-
vrf: proc { |raw_data|
|
|
16
|
-
tenant: proc { |raw_data|
|
|
17
|
-
status: proc { |raw_data|
|
|
18
|
-
interface: proc { |raw_data|
|
|
23
|
+
vrf: proc { |raw_data| Vrf.new raw_data['id'] },
|
|
24
|
+
tenant: proc { |raw_data| Tenant.new raw_data['id'] },
|
|
25
|
+
status: proc { |raw_data| STATUS_VALUES.key(raw_data['value']) || raw_data['value'] },
|
|
26
|
+
interface: proc { |raw_data| Interface.new raw_data['id'] },
|
|
27
|
+
address: proc { |raw_ip| IPAddress.parse(raw_ip) }
|
|
19
28
|
)
|
|
20
29
|
readonly_fields :display_name
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
class IpAddressStatus
|
|
24
|
-
attr_reader :value, :label
|
|
25
30
|
|
|
26
|
-
def
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
when 1 then
|
|
30
|
-
'Active'.freeze
|
|
31
|
-
when 2 then
|
|
32
|
-
'Reserved'.freeze
|
|
33
|
-
when 3 then
|
|
34
|
-
'Deprecated'.freeze
|
|
35
|
-
when 5 then
|
|
36
|
-
'DHCP'.freeze
|
|
37
|
-
else
|
|
38
|
-
'UNDEFINED'.freeze
|
|
39
|
-
end
|
|
31
|
+
def status=(value)
|
|
32
|
+
status_code_lookup = STATUS_VALUES.fetch(value, value)
|
|
33
|
+
method_missing(:status=, status_code_lookup)
|
|
40
34
|
end
|
|
41
35
|
end
|
|
42
36
|
end
|
|
@@ -152,15 +152,19 @@ module NetboxClientRuby
|
|
|
152
152
|
self
|
|
153
153
|
end
|
|
154
154
|
|
|
155
|
-
def update(
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
155
|
+
def update(new_values)
|
|
156
|
+
new_values.each do |attribute, values|
|
|
157
|
+
s_attribute = attribute.to_s
|
|
158
|
+
next if readonly_fields.include? s_attribute
|
|
159
|
+
|
|
160
|
+
sym_attr_writer = "#{attribute}=".to_sym
|
|
161
|
+
if methods.include?(sym_attr_writer)
|
|
162
|
+
public_send(sym_attr_writer, values)
|
|
163
|
+
else
|
|
164
|
+
dirty_data[s_attribute] = values
|
|
165
|
+
end
|
|
161
166
|
end
|
|
162
167
|
|
|
163
|
-
dirty_data.merge! checked_updated_fields
|
|
164
168
|
patch
|
|
165
169
|
end
|
|
166
170
|
|
|
@@ -193,10 +197,9 @@ module NetboxClientRuby
|
|
|
193
197
|
end
|
|
194
198
|
end
|
|
195
199
|
|
|
196
|
-
return
|
|
197
|
-
|
|
198
|
-
return
|
|
199
|
-
return data[name] if data.is_a?(Hash) && data.keys.include?(name)
|
|
200
|
+
return dirty_data[name] if dirty_data.key? name
|
|
201
|
+
return objectify(data[name], object_fields[name]) if object_fields.key? name
|
|
202
|
+
return data[name] if data.is_a?(Hash) && data.key?(name)
|
|
200
203
|
|
|
201
204
|
super
|
|
202
205
|
end
|
|
@@ -207,10 +210,9 @@ module NetboxClientRuby
|
|
|
207
210
|
return false if name.end_with?('=') && readonly_fields.include?(name[0..-2])
|
|
208
211
|
return false if name.end_with?('=') && instance_variables.include?(name[0..-2])
|
|
209
212
|
|
|
210
|
-
return true if
|
|
211
|
-
|
|
212
|
-
return true if
|
|
213
|
-
return true if data.is_a?(Hash) && data.keys.include?(name)
|
|
213
|
+
return true if dirty_data.key? name
|
|
214
|
+
return true if object_fields.key? name
|
|
215
|
+
return true if data.is_a?(Hash) && data.key?(name)
|
|
214
216
|
|
|
215
217
|
super
|
|
216
218
|
end
|
|
@@ -290,14 +292,12 @@ module NetboxClientRuby
|
|
|
290
292
|
end
|
|
291
293
|
end
|
|
292
294
|
|
|
293
|
-
def objectify(
|
|
294
|
-
raw_data = data[name]
|
|
295
|
-
|
|
295
|
+
def objectify(raw_data, klass_or_proc = nil)
|
|
296
296
|
return nil if raw_data.nil?
|
|
297
297
|
|
|
298
298
|
return data_to_obj(raw_data, klass_or_proc) unless raw_data.is_a? Array
|
|
299
299
|
|
|
300
|
-
|
|
300
|
+
raw_data.map do |raw_data_entry|
|
|
301
301
|
data_to_obj(raw_data_entry, klass_or_proc)
|
|
302
302
|
end
|
|
303
303
|
end
|
data/netbox-client-ruby.gemspec
CHANGED
|
@@ -33,6 +33,7 @@ Gem::Specification.new do |spec|
|
|
|
33
33
|
spec.add_runtime_dependency 'faraday', '~> 0.12'
|
|
34
34
|
spec.add_runtime_dependency 'faraday_middleware', '~> 0.11.0'
|
|
35
35
|
spec.add_runtime_dependency 'faraday-detailed_logger', '~> 2.1'
|
|
36
|
+
spec.add_runtime_dependency 'ipaddress', '>= 0.8.3'
|
|
36
37
|
|
|
37
38
|
spec.add_development_dependency 'bundler', '~> 1.14'
|
|
38
39
|
spec.add_development_dependency 'rake', '~> 10.0'
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: netbox-client-ruby
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Christian Mäder
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2017-05-
|
|
11
|
+
date: 2017-05-16 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: dry-configurable
|
|
@@ -66,6 +66,20 @@ dependencies:
|
|
|
66
66
|
- - "~>"
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
68
|
version: '2.1'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: ipaddress
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - ">="
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: 0.8.3
|
|
76
|
+
type: :runtime
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - ">="
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: 0.8.3
|
|
69
83
|
- !ruby/object:Gem::Dependency
|
|
70
84
|
name: bundler
|
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -174,6 +188,7 @@ files:
|
|
|
174
188
|
- docker-compose.yml
|
|
175
189
|
- docker/start.sh
|
|
176
190
|
- docker/start.test.sh
|
|
191
|
+
- dump.sql
|
|
177
192
|
- lib/netbox-client-ruby.rb
|
|
178
193
|
- lib/netbox_client_ruby.rb
|
|
179
194
|
- lib/netbox_client_ruby/api.rb
|
|
@@ -248,7 +263,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
248
263
|
version: '0'
|
|
249
264
|
requirements: []
|
|
250
265
|
rubyforge_project:
|
|
251
|
-
rubygems_version: 2.
|
|
266
|
+
rubygems_version: 2.6.11
|
|
252
267
|
signing_key:
|
|
253
268
|
specification_version: 4
|
|
254
269
|
summary: A read/write client for Netbox v2.
|