netbox-client-ruby 0.10.0 → 0.10.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.
Files changed (128) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rspec.yml +6 -4
  3. data/.gitignore +6 -1
  4. data/Appraisals +17 -0
  5. data/Gemfile +15 -3
  6. data/Rakefile +2 -0
  7. data/bin/setup +1 -4
  8. data/gemfiles/faraday0.gemfile +12 -2
  9. data/gemfiles/faraday1.gemfile +11 -1
  10. data/gemfiles/faraday2.gemfile +11 -1
  11. data/lib/netbox-client-ruby.rb +2 -0
  12. data/lib/netbox_client_ruby/api/circuits/circuit.rb +1 -4
  13. data/lib/netbox_client_ruby/api/circuits/circuit_termination.rb +1 -4
  14. data/lib/netbox_client_ruby/api/circuits/circuit_terminations.rb +2 -3
  15. data/lib/netbox_client_ruby/api/circuits/circuit_type.rb +1 -1
  16. data/lib/netbox_client_ruby/api/circuits/circuit_types.rb +2 -3
  17. data/lib/netbox_client_ruby/api/circuits/circuits.rb +2 -3
  18. data/lib/netbox_client_ruby/api/circuits/provider.rb +1 -1
  19. data/lib/netbox_client_ruby/api/circuits/providers.rb +2 -3
  20. data/lib/netbox_client_ruby/api/circuits.rb +1 -9
  21. data/lib/netbox_client_ruby/api/dcim/console_connection.rb +1 -3
  22. data/lib/netbox_client_ruby/api/dcim/console_connections.rb +2 -3
  23. data/lib/netbox_client_ruby/api/dcim/console_port.rb +1 -3
  24. data/lib/netbox_client_ruby/api/dcim/console_ports.rb +2 -3
  25. data/lib/netbox_client_ruby/api/dcim/console_server_port.rb +1 -3
  26. data/lib/netbox_client_ruby/api/dcim/console_server_ports.rb +2 -3
  27. data/lib/netbox_client_ruby/api/dcim/device.rb +1 -9
  28. data/lib/netbox_client_ruby/api/dcim/device_role.rb +1 -1
  29. data/lib/netbox_client_ruby/api/dcim/device_roles.rb +2 -3
  30. data/lib/netbox_client_ruby/api/dcim/device_type.rb +1 -2
  31. data/lib/netbox_client_ruby/api/dcim/device_types.rb +2 -3
  32. data/lib/netbox_client_ruby/api/dcim/devices.rb +2 -3
  33. data/lib/netbox_client_ruby/api/dcim/interface.rb +1 -2
  34. data/lib/netbox_client_ruby/api/dcim/interface_connection.rb +1 -2
  35. data/lib/netbox_client_ruby/api/dcim/interface_connections.rb +2 -3
  36. data/lib/netbox_client_ruby/api/dcim/interfaces.rb +2 -3
  37. data/lib/netbox_client_ruby/api/dcim/inventory_item.rb +1 -2
  38. data/lib/netbox_client_ruby/api/dcim/inventory_items.rb +2 -3
  39. data/lib/netbox_client_ruby/api/dcim/manufacturer.rb +1 -1
  40. data/lib/netbox_client_ruby/api/dcim/manufacturers.rb +2 -3
  41. data/lib/netbox_client_ruby/api/dcim/platform.rb +1 -2
  42. data/lib/netbox_client_ruby/api/dcim/platforms.rb +2 -3
  43. data/lib/netbox_client_ruby/api/dcim/power_connection.rb +1 -3
  44. data/lib/netbox_client_ruby/api/dcim/power_connections.rb +2 -3
  45. data/lib/netbox_client_ruby/api/dcim/power_outlet.rb +1 -3
  46. data/lib/netbox_client_ruby/api/dcim/power_outlets.rb +2 -3
  47. data/lib/netbox_client_ruby/api/dcim/power_port.rb +1 -3
  48. data/lib/netbox_client_ruby/api/dcim/power_ports.rb +2 -3
  49. data/lib/netbox_client_ruby/api/dcim/rack.rb +1 -1
  50. data/lib/netbox_client_ruby/api/dcim/rack_group.rb +1 -3
  51. data/lib/netbox_client_ruby/api/dcim/rack_groups.rb +2 -3
  52. data/lib/netbox_client_ruby/api/dcim/rack_reservation.rb +1 -3
  53. data/lib/netbox_client_ruby/api/dcim/rack_reservations.rb +2 -3
  54. data/lib/netbox_client_ruby/api/dcim/rack_role.rb +1 -1
  55. data/lib/netbox_client_ruby/api/dcim/rack_roles.rb +2 -3
  56. data/lib/netbox_client_ruby/api/dcim/racks.rb +2 -3
  57. data/lib/netbox_client_ruby/api/dcim/region.rb +1 -1
  58. data/lib/netbox_client_ruby/api/dcim/regions.rb +2 -3
  59. data/lib/netbox_client_ruby/api/dcim/site.rb +1 -2
  60. data/lib/netbox_client_ruby/api/dcim/sites.rb +2 -3
  61. data/lib/netbox_client_ruby/api/dcim/virtual_chassis.rb +1 -2
  62. data/lib/netbox_client_ruby/api/dcim/virtual_chassis_list.rb +2 -3
  63. data/lib/netbox_client_ruby/api/dcim.rb +1 -43
  64. data/lib/netbox_client_ruby/api/extras/config_context.rb +1 -1
  65. data/lib/netbox_client_ruby/api/extras/config_contexts.rb +2 -3
  66. data/lib/netbox_client_ruby/api/extras/journal_entries.rb +2 -3
  67. data/lib/netbox_client_ruby/api/extras/journal_entry.rb +1 -1
  68. data/lib/netbox_client_ruby/api/extras/tag.rb +1 -1
  69. data/lib/netbox_client_ruby/api/extras/tags.rb +2 -3
  70. data/lib/netbox_client_ruby/api/extras.rb +1 -6
  71. data/lib/netbox_client_ruby/api/ipam/aggregate.rb +1 -2
  72. data/lib/netbox_client_ruby/api/ipam/aggregates.rb +2 -3
  73. data/lib/netbox_client_ruby/api/ipam/ip_address.rb +3 -11
  74. data/lib/netbox_client_ruby/api/ipam/ip_addresses.rb +2 -3
  75. data/lib/netbox_client_ruby/api/ipam/ip_range.rb +1 -5
  76. data/lib/netbox_client_ruby/api/ipam/ip_ranges.rb +2 -3
  77. data/lib/netbox_client_ruby/api/ipam/prefix.rb +1 -8
  78. data/lib/netbox_client_ruby/api/ipam/prefixes.rb +2 -3
  79. data/lib/netbox_client_ruby/api/ipam/rir.rb +1 -1
  80. data/lib/netbox_client_ruby/api/ipam/rirs.rb +2 -3
  81. data/lib/netbox_client_ruby/api/ipam/role.rb +1 -1
  82. data/lib/netbox_client_ruby/api/ipam/roles.rb +2 -3
  83. data/lib/netbox_client_ruby/api/ipam/service.rb +1 -2
  84. data/lib/netbox_client_ruby/api/ipam/services.rb +2 -3
  85. data/lib/netbox_client_ruby/api/ipam/vlan.rb +1 -5
  86. data/lib/netbox_client_ruby/api/ipam/vlan_group.rb +1 -2
  87. data/lib/netbox_client_ruby/api/ipam/vlan_groups.rb +2 -3
  88. data/lib/netbox_client_ruby/api/ipam/vlans.rb +2 -3
  89. data/lib/netbox_client_ruby/api/ipam/vrf.rb +1 -2
  90. data/lib/netbox_client_ruby/api/ipam/vrfs.rb +2 -3
  91. data/lib/netbox_client_ruby/api/ipam.rb +1 -21
  92. data/lib/netbox_client_ruby/api/secrets/rsa_key_pair.rb +1 -3
  93. data/lib/netbox_client_ruby/api/secrets/secret.rb +1 -3
  94. data/lib/netbox_client_ruby/api/secrets/secret_role.rb +1 -3
  95. data/lib/netbox_client_ruby/api/secrets/secret_roles.rb +2 -3
  96. data/lib/netbox_client_ruby/api/secrets/secrets.rb +2 -3
  97. data/lib/netbox_client_ruby/api/secrets/session_key.rb +1 -4
  98. data/lib/netbox_client_ruby/api/secrets.rb +1 -5
  99. data/lib/netbox_client_ruby/api/tenancy/tenant.rb +1 -2
  100. data/lib/netbox_client_ruby/api/tenancy/tenant_group.rb +1 -1
  101. data/lib/netbox_client_ruby/api/tenancy/tenant_groups.rb +2 -3
  102. data/lib/netbox_client_ruby/api/tenancy/tenants.rb +2 -3
  103. data/lib/netbox_client_ruby/api/tenancy.rb +1 -5
  104. data/lib/netbox_client_ruby/api/virtualization/cluster.rb +1 -4
  105. data/lib/netbox_client_ruby/api/virtualization/cluster_group.rb +1 -1
  106. data/lib/netbox_client_ruby/api/virtualization/cluster_groups.rb +2 -3
  107. data/lib/netbox_client_ruby/api/virtualization/cluster_type.rb +1 -1
  108. data/lib/netbox_client_ruby/api/virtualization/cluster_types.rb +2 -3
  109. data/lib/netbox_client_ruby/api/virtualization/clusters.rb +2 -3
  110. data/lib/netbox_client_ruby/api/virtualization/interface.rb +1 -2
  111. data/lib/netbox_client_ruby/api/virtualization/interfaces.rb +2 -3
  112. data/lib/netbox_client_ruby/api/virtualization/virtual_machine.rb +1 -6
  113. data/lib/netbox_client_ruby/api/virtualization/virtual_machines.rb +2 -3
  114. data/lib/netbox_client_ruby/api/virtualization.rb +1 -11
  115. data/lib/netbox_client_ruby/communication.rb +3 -4
  116. data/lib/netbox_client_ruby/connection.rb +1 -19
  117. data/lib/netbox_client_ruby/entities.rb +1 -2
  118. data/lib/netbox_client_ruby/entity.rb +9 -10
  119. data/lib/netbox_client_ruby/error.rb +2 -0
  120. data/lib/netbox_client_ruby.rb +67 -2
  121. data/netbox-client-ruby.gemspec +3 -13
  122. metadata +9 -84
  123. data/Gemfile.lock +0 -115
  124. data/VERSION +0 -1
  125. data/gemfiles/faraday0.gemfile.lock +0 -94
  126. data/gemfiles/faraday1.gemfile.lock +0 -93
  127. data/gemfiles/faraday2.gemfile.lock +0 -101
  128. data/lib/netbox_client_ruby/api.rb +0 -38
@@ -1,12 +1,11 @@
1
- require 'netbox_client_ruby/entities'
2
- require 'netbox_client_ruby/api/secrets/secret'
1
+ # frozen_string_literal: true
3
2
 
4
3
  module NetboxClientRuby
5
4
  module Secrets
6
5
  class Secrets
7
6
  include Entities
8
7
 
9
- path 'secrets/secrets.json'
8
+ path 'secrets/secrets/'
10
9
  data_key 'results'
11
10
  count_key 'count'
12
11
  entity_creator :entity_creator
@@ -1,7 +1,4 @@
1
- require 'openssl'
2
- require 'netbox_client_ruby/entity'
3
- require 'netbox_client_ruby/api/dcim/device'
4
- require 'netbox_client_ruby/api/secrets/secret_role'
1
+ # frozen_string_literal: true
5
2
 
6
3
  module NetboxClientRuby
7
4
  module Secrets
@@ -1,8 +1,4 @@
1
- require 'netbox_client_ruby/api/secrets/rsa_key_pair'
2
- require 'netbox_client_ruby/api/secrets/secret_roles'
3
- require 'netbox_client_ruby/api/secrets/secrets'
4
- require 'netbox_client_ruby/api/secrets/session_key'
5
- require 'netbox_client_ruby/communication'
1
+ # frozen_string_literal: true
6
2
 
7
3
  module NetboxClientRuby
8
4
  module Secrets
@@ -1,5 +1,4 @@
1
- require 'netbox_client_ruby/entity'
2
- require 'netbox_client_ruby/api/tenancy/tenant_group'
1
+ # frozen_string_literal: true
3
2
 
4
3
  module NetboxClientRuby
5
4
  module Tenancy
@@ -1,4 +1,4 @@
1
- require 'netbox_client_ruby/entity'
1
+ # frozen_string_literal: true
2
2
 
3
3
  module NetboxClientRuby
4
4
  module Tenancy
@@ -1,12 +1,11 @@
1
- require 'netbox_client_ruby/entities'
2
- require 'netbox_client_ruby/api/tenancy/tenant_group'
1
+ # frozen_string_literal: true
3
2
 
4
3
  module NetboxClientRuby
5
4
  module Tenancy
6
5
  class TenantGroups
7
6
  include Entities
8
7
 
9
- path 'tenancy/tenant-groups.json'
8
+ path 'tenancy/tenant-groups/'
10
9
  data_key 'results'
11
10
  count_key 'count'
12
11
  entity_creator :entity_creator
@@ -1,12 +1,11 @@
1
- require 'netbox_client_ruby/entities'
2
- require 'netbox_client_ruby/api/tenancy/tenant'
1
+ # frozen_string_literal: true
3
2
 
4
3
  module NetboxClientRuby
5
4
  module Tenancy
6
5
  class Tenants
7
6
  include Entities
8
7
 
9
- path 'tenancy/tenants.json'
8
+ path 'tenancy/tenants/'
10
9
  data_key 'results'
11
10
  count_key 'count'
12
11
  entity_creator :entity_creator
@@ -1,8 +1,4 @@
1
- require 'netbox_client_ruby/api/tenancy/tenant'
2
- require 'netbox_client_ruby/api/tenancy/tenants'
3
- require 'netbox_client_ruby/api/tenancy/tenant_group'
4
- require 'netbox_client_ruby/api/tenancy/tenant_groups'
5
- require 'netbox_client_ruby/communication'
1
+ # frozen_string_literal: true
6
2
 
7
3
  module NetboxClientRuby
8
4
  module Tenancy
@@ -1,7 +1,4 @@
1
- require 'netbox_client_ruby/entity'
2
- require 'netbox_client_ruby/api/virtualization/cluster_group'
3
- require 'netbox_client_ruby/api/virtualization/cluster_type'
4
- require 'netbox_client_ruby/api/dcim/site'
1
+ # frozen_string_literal: true
5
2
 
6
3
  module NetboxClientRuby
7
4
  module Virtualization
@@ -1,4 +1,4 @@
1
- require 'netbox_client_ruby/entity'
1
+ # frozen_string_literal: true
2
2
 
3
3
  module NetboxClientRuby
4
4
  module Virtualization
@@ -1,12 +1,11 @@
1
- require 'netbox_client_ruby/entities'
2
- require 'netbox_client_ruby/api/virtualization/cluster_group'
1
+ # frozen_string_literal: true
3
2
 
4
3
  module NetboxClientRuby
5
4
  module Virtualization
6
5
  class ClusterGroups
7
6
  include Entities
8
7
 
9
- path 'virtualization/cluster-groups.json'
8
+ path 'virtualization/cluster-groups/'
10
9
  data_key 'results'
11
10
  count_key 'count'
12
11
  entity_creator :entity_creator
@@ -1,4 +1,4 @@
1
- require 'netbox_client_ruby/entity'
1
+ # frozen_string_literal: true
2
2
 
3
3
  module NetboxClientRuby
4
4
  module Virtualization
@@ -1,12 +1,11 @@
1
- require 'netbox_client_ruby/entities'
2
- require 'netbox_client_ruby/api/virtualization/cluster_type'
1
+ # frozen_string_literal: true
3
2
 
4
3
  module NetboxClientRuby
5
4
  module Virtualization
6
5
  class ClusterTypes
7
6
  include Entities
8
7
 
9
- path 'virtualization/cluster-types.json'
8
+ path 'virtualization/cluster-types/'
10
9
  data_key 'results'
11
10
  count_key 'count'
12
11
  entity_creator :entity_creator
@@ -1,12 +1,11 @@
1
- require 'netbox_client_ruby/entities'
2
- require 'netbox_client_ruby/api/virtualization/cluster'
1
+ # frozen_string_literal: true
3
2
 
4
3
  module NetboxClientRuby
5
4
  module Virtualization
6
5
  class Clusters
7
6
  include Entities
8
7
 
9
- path 'virtualization/clusters.json'
8
+ path 'virtualization/clusters/'
10
9
  data_key 'results'
11
10
  count_key 'count'
12
11
  entity_creator :entity_creator
@@ -1,5 +1,4 @@
1
- require 'netbox_client_ruby/entity'
2
- require 'netbox_client_ruby/api/virtualization/virtual_machine'
1
+ # frozen_string_literal: true
3
2
 
4
3
  module NetboxClientRuby
5
4
  module Virtualization
@@ -1,12 +1,11 @@
1
- require 'netbox_client_ruby/entities'
2
- require 'netbox_client_ruby/api/virtualization/interface'
1
+ # frozen_string_literal: true
3
2
 
4
3
  module NetboxClientRuby
5
4
  module Virtualization
6
5
  class Interfaces
7
6
  include Entities
8
7
 
9
- path 'virtualization/interfaces.json'
8
+ path 'virtualization/interfaces/'
10
9
  data_key 'results'
11
10
  count_key 'count'
12
11
  entity_creator :entity_creator
@@ -1,9 +1,4 @@
1
- require 'netbox_client_ruby/entity'
2
- require 'netbox_client_ruby/api/dcim/device_role'
3
- require 'netbox_client_ruby/api/dcim/platform'
4
- require 'netbox_client_ruby/api/ipam/ip_address'
5
- require 'netbox_client_ruby/api/tenancy/tenant'
6
- require 'netbox_client_ruby/api/virtualization/cluster'
1
+ # frozen_string_literal: true
7
2
 
8
3
  module NetboxClientRuby
9
4
  module Virtualization
@@ -1,12 +1,11 @@
1
- require 'netbox_client_ruby/entities'
2
- require 'netbox_client_ruby/api/virtualization/virtual_machine'
1
+ # frozen_string_literal: true
3
2
 
4
3
  module NetboxClientRuby
5
4
  module Virtualization
6
5
  class VirtualMachines
7
6
  include Entities
8
7
 
9
- path 'virtualization/virtual-machines.json'
8
+ path 'virtualization/virtual-machines/'
10
9
  data_key 'results'
11
10
  count_key 'count'
12
11
  entity_creator :entity_creator
@@ -1,14 +1,4 @@
1
- require 'netbox_client_ruby/api/virtualization/cluster_group'
2
- require 'netbox_client_ruby/api/virtualization/cluster_groups'
3
- require 'netbox_client_ruby/api/virtualization/cluster_type'
4
- require 'netbox_client_ruby/api/virtualization/cluster_types'
5
- require 'netbox_client_ruby/api/virtualization/cluster'
6
- require 'netbox_client_ruby/api/virtualization/clusters'
7
- require 'netbox_client_ruby/api/virtualization/interface'
8
- require 'netbox_client_ruby/api/virtualization/interfaces'
9
- require 'netbox_client_ruby/api/virtualization/virtual_machine'
10
- require 'netbox_client_ruby/api/virtualization/virtual_machines'
11
- require 'netbox_client_ruby/communication'
1
+ # frozen_string_literal: true
12
2
 
13
3
  module NetboxClientRuby
14
4
  module Virtualization
@@ -1,5 +1,4 @@
1
- require 'netbox_client_ruby/error'
2
- require 'netbox_client_ruby/connection'
1
+ # frozen_string_literal: true
3
2
 
4
3
  module NetboxClientRuby
5
4
  module Communication
@@ -23,8 +22,8 @@ module NetboxClientRuby
23
22
  variable_name = sanitize_variable_name(k)
24
23
  variable_name = "_#{variable_name}" if objectified_instance.methods.map(&:to_s).include?(variable_name)
25
24
 
26
- objectified_instance.instance_variable_set("@#{variable_name}", v)
27
- objectified_class.send(:define_method, variable_name, proc { instance_variable_get("@#{variable_name}") })
25
+ objectified_instance.instance_variable_set(:"@#{variable_name}", v)
26
+ objectified_class.send(:define_method, variable_name, proc { instance_variable_get(:"@#{variable_name}") })
28
27
  end
29
28
  objectified_instance
30
29
  end
@@ -1,22 +1,4 @@
1
- require 'faraday'
2
- require 'faraday/detailed_logger'
3
- require 'netbox_client_ruby/error'
4
-
5
- if Faraday::VERSION < '2'
6
- begin
7
- require 'faraday_middleware'
8
- rescue LoadError => e
9
- message = <<~MSG
10
- For the current version of Faraday (#{Faraday::VERSION}), "faraday_middleware"
11
- is a required peer dependency of "netbox-client-ruby". Please install
12
- "faraday_middleware" separately OR upgrade to Faraday 2, in which case,
13
- "faraday_middleware" is not needed to work with "netbox-client-ruby".
14
-
15
- #{e.message}
16
- MSG
17
- raise NetboxClientRuby::Error, message
18
- end
19
- end
1
+ # frozen_string_literal: true
20
2
 
21
3
  module NetboxClientRuby
22
4
  class Connection
@@ -1,5 +1,4 @@
1
- require 'netbox_client_ruby/entity'
2
- require 'netbox_client_ruby/error'
1
+ # frozen_string_literal: true
3
2
 
4
3
  module NetboxClientRuby
5
4
  module Entities
@@ -1,5 +1,4 @@
1
- require 'netbox_client_ruby/communication'
2
- require 'netbox_client_ruby/error'
1
+ # frozen_string_literal: true
3
2
 
4
3
  module NetboxClientRuby
5
4
  module Entity
@@ -38,7 +37,7 @@ module NetboxClientRuby
38
37
  end
39
38
 
40
39
  @id_fields.keys.each do |field|
41
- define_method(field) { instance_variable_get "@#{field}" }
40
+ define_method(field) { instance_variable_get :"@#{field}" }
42
41
  end
43
42
 
44
43
  @id_fields
@@ -108,13 +107,13 @@ module NetboxClientRuby
108
107
  return self if given_values.nil?
109
108
 
110
109
  if id_fields.count == 1 && !given_values.is_a?(Hash)
111
- instance_variable_set("@#{id_fields.keys.first}", given_values)
110
+ instance_variable_set(:"@#{id_fields.keys.first}", given_values)
112
111
  return self
113
112
  end
114
113
 
115
114
  given_values.each do |field, value|
116
115
  if id_fields.key? field.to_s
117
- instance_variable_set "@#{field}", value
116
+ instance_variable_set :"@#{field}", value
118
117
  else
119
118
  # via method_missing, because it checks for readonly fields, etc.
120
119
  method_missing("#{field}=", value)
@@ -164,7 +163,7 @@ module NetboxClientRuby
164
163
  s_attribute = attribute.to_s
165
164
  next if readonly_fields.include? s_attribute
166
165
 
167
- sym_attr_writer = "#{attribute}=".to_sym
166
+ sym_attr_writer = :"#{attribute}="
168
167
  if methods.include?(sym_attr_writer)
169
168
  public_send(sym_attr_writer, values)
170
169
  else
@@ -197,7 +196,7 @@ module NetboxClientRuby
197
196
 
198
197
  if name.end_with?('=')
199
198
  is_readonly_field = readonly_fields.include?(name[0..-2])
200
- is_instance_variable = instance_variables.include?("@#{name[0..-2]}".to_sym)
199
+ is_instance_variable = instance_variables.include?(:"@#{name[0..-2]}")
201
200
  not_this_classes_business = is_readonly_field || is_instance_variable
202
201
 
203
202
  return super if not_this_classes_business
@@ -305,7 +304,7 @@ module NetboxClientRuby
305
304
  end
306
305
 
307
306
  def replace_path_variables_in(path)
308
- interpreted_path = path.clone
307
+ interpreted_path = path.dup
309
308
  path.scan(/:([a-zA-Z_][a-zA-Z0-9_]+[!?=]?)/) do |match, *|
310
309
  path_variable_value = send(match)
311
310
  return interpreted_path.gsub! ":#{match}", path_variable_value.to_s unless path_variable_value.nil?
@@ -328,12 +327,12 @@ module NetboxClientRuby
328
327
  raise LocalError, "Can't find the id field '#{id_field}' in the received data."
329
328
  end
330
329
 
331
- instance_variable_set("@#{id_attr}", data[id_field])
330
+ instance_variable_set(:"@#{id_attr}", data[id_field])
332
331
  end
333
332
  end
334
333
 
335
334
  def ids_set?
336
- id_fields.map { |id_attr, _| instance_variable_get("@#{id_attr}") }.all?
335
+ id_fields.map { |id_attr, _| instance_variable_get(:"@#{id_attr}") }.all?
337
336
  end
338
337
  end
339
338
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module NetboxClientRuby
2
4
  class Error < StandardError; end
3
5
  class ClientError < Error; end
@@ -1,6 +1,43 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'dry-configurable'
2
- require 'netbox_client_ruby/error'
3
- require 'netbox_client_ruby/api'
4
+ require 'ipaddress'
5
+ require 'openssl'
6
+
7
+ require 'faraday'
8
+ require 'faraday/detailed_logger'
9
+
10
+ if Faraday::VERSION < '2'
11
+ begin
12
+ require 'faraday_middleware'
13
+ rescue LoadError => e
14
+ message = <<~MSG
15
+ For the current version of Faraday (#{Faraday::VERSION}), "faraday_middleware"
16
+ is a required peer dependency of "netbox-client-ruby". Please install
17
+ "faraday_middleware" separately OR upgrade to Faraday 2, in which case,
18
+ "faraday_middleware" is not needed to work with "netbox-client-ruby".
19
+
20
+ #{e.message}
21
+ MSG
22
+ raise NetboxClientRuby::Error, message
23
+ end
24
+ end
25
+
26
+ require 'zeitwerk'
27
+
28
+ # load zeitwerk
29
+ Zeitwerk::Loader.for_gem.tap do |loader|
30
+ loader.ignore("#{__dir__}/netbox-client-ruby.rb")
31
+ loader.collapse("#{__dir__}/netbox_client_ruby/api")
32
+ loader.inflector.inflect('dcim' => 'DCIM')
33
+ loader.inflector.inflect('ipam' => 'IPAM')
34
+ loader.inflector.inflect('rsa_key_pair' => 'RSAKeyPair')
35
+ # loader.log!
36
+ loader.setup
37
+ end
38
+
39
+ # load gem errors
40
+ require_relative 'netbox_client_ruby/error'
4
41
 
5
42
  module NetboxClientRuby
6
43
  extend Dry::Configurable
@@ -29,4 +66,32 @@ module NetboxClientRuby
29
66
  setting :logger
30
67
  setting :request_options, default: { open_timeout: 1, timeout: 5 }
31
68
  end
69
+
70
+ def self.circuits
71
+ NetboxClientRuby::Circuits
72
+ end
73
+
74
+ def self.dcim
75
+ NetboxClientRuby::DCIM
76
+ end
77
+
78
+ def self.extras
79
+ NetboxClientRuby::Extras
80
+ end
81
+
82
+ def self.ipam
83
+ NetboxClientRuby::IPAM
84
+ end
85
+
86
+ def self.secrets
87
+ NetboxClientRuby::Secrets
88
+ end
89
+
90
+ def self.tenancy
91
+ NetboxClientRuby::Tenancy
92
+ end
93
+
94
+ def self.virtualization
95
+ NetboxClientRuby::Virtualization
96
+ end
32
97
  end
@@ -1,9 +1,8 @@
1
- lib = File.expand_path('lib', __dir__)
2
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
1
+ # frozen_string_literal: true
3
2
 
4
3
  Gem::Specification.new do |spec|
5
4
  spec.name = 'netbox-client-ruby'
6
- spec.version = File.read(File.expand_path('VERSION', __dir__)).strip
5
+ spec.version = `git describe --tags --match="v[0-9]*" --abbrev=0`.strip.delete_prefix("v")
7
6
 
8
7
  spec.summary = 'A read/write client for Netbox v2.'
9
8
  spec.homepage = 'https://github.com/ninech/netbox-client-ruby'
@@ -19,9 +18,6 @@ Gem::Specification.new do |spec|
19
18
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
20
19
  f.match(%r{^(test|spec|features)/})
21
20
  end
22
- spec.bindir = 'exe'
23
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
- spec.require_paths = ['lib']
25
21
 
26
22
  spec.required_ruby_version = '>= 2.7.0'
27
23
 
@@ -30,11 +26,5 @@ Gem::Specification.new do |spec|
30
26
  spec.add_runtime_dependency 'faraday-detailed_logger', '~> 2.1'
31
27
  spec.add_runtime_dependency 'ipaddress', '~> 0.8', '>= 0.8.3'
32
28
  spec.add_runtime_dependency 'openssl', '>= 2.0.5'
33
-
34
- spec.add_development_dependency 'bundler', '~> 2.1'
35
- spec.add_development_dependency 'pry', '~> 0.10'
36
- spec.add_development_dependency 'rake', '~> 13'
37
- spec.add_development_dependency 'rspec', '~> 3.5'
38
- spec.add_development_dependency 'rubocop', '~> 0.48'
39
- spec.add_development_dependency 'rubocop-rspec', '~> 1.15'
29
+ spec.add_runtime_dependency 'zeitwerk', '~> 2.6.0'
40
30
  end
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.10.0
4
+ version: 0.10.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christian Mäder
8
8
  autorequire:
9
- bindir: exe
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2023-09-29 00:00:00.000000000 Z
11
+ date: 2024-10-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-configurable
@@ -93,89 +93,19 @@ dependencies:
93
93
  - !ruby/object:Gem::Version
94
94
  version: 2.0.5
95
95
  - !ruby/object:Gem::Dependency
96
- name: bundler
96
+ name: zeitwerk
97
97
  requirement: !ruby/object:Gem::Requirement
98
98
  requirements:
99
99
  - - "~>"
100
100
  - !ruby/object:Gem::Version
101
- version: '2.1'
102
- type: :development
103
- prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
105
- requirements:
106
- - - "~>"
107
- - !ruby/object:Gem::Version
108
- version: '2.1'
109
- - !ruby/object:Gem::Dependency
110
- name: pry
111
- requirement: !ruby/object:Gem::Requirement
112
- requirements:
113
- - - "~>"
114
- - !ruby/object:Gem::Version
115
- version: '0.10'
116
- type: :development
117
- prerelease: false
118
- version_requirements: !ruby/object:Gem::Requirement
119
- requirements:
120
- - - "~>"
121
- - !ruby/object:Gem::Version
122
- version: '0.10'
123
- - !ruby/object:Gem::Dependency
124
- name: rake
125
- requirement: !ruby/object:Gem::Requirement
126
- requirements:
127
- - - "~>"
128
- - !ruby/object:Gem::Version
129
- version: '13'
130
- type: :development
131
- prerelease: false
132
- version_requirements: !ruby/object:Gem::Requirement
133
- requirements:
134
- - - "~>"
135
- - !ruby/object:Gem::Version
136
- version: '13'
137
- - !ruby/object:Gem::Dependency
138
- name: rspec
139
- requirement: !ruby/object:Gem::Requirement
140
- requirements:
141
- - - "~>"
142
- - !ruby/object:Gem::Version
143
- version: '3.5'
144
- type: :development
145
- prerelease: false
146
- version_requirements: !ruby/object:Gem::Requirement
147
- requirements:
148
- - - "~>"
149
- - !ruby/object:Gem::Version
150
- version: '3.5'
151
- - !ruby/object:Gem::Dependency
152
- name: rubocop
153
- requirement: !ruby/object:Gem::Requirement
154
- requirements:
155
- - - "~>"
156
- - !ruby/object:Gem::Version
157
- version: '0.48'
158
- type: :development
159
- prerelease: false
160
- version_requirements: !ruby/object:Gem::Requirement
161
- requirements:
162
- - - "~>"
163
- - !ruby/object:Gem::Version
164
- version: '0.48'
165
- - !ruby/object:Gem::Dependency
166
- name: rubocop-rspec
167
- requirement: !ruby/object:Gem::Requirement
168
- requirements:
169
- - - "~>"
170
- - !ruby/object:Gem::Version
171
- version: '1.15'
172
- type: :development
101
+ version: 2.6.0
102
+ type: :runtime
173
103
  prerelease: false
174
104
  version_requirements: !ruby/object:Gem::Requirement
175
105
  requirements:
176
106
  - - "~>"
177
107
  - !ruby/object:Gem::Version
178
- version: '1.15'
108
+ version: 2.6.0
179
109
  description:
180
110
  email:
181
111
  - christian.maeder@nine.ch
@@ -189,13 +119,12 @@ files:
189
119
  - ".github/workflows/rspec.yml"
190
120
  - ".gitignore"
191
121
  - ".rspec"
122
+ - Appraisals
192
123
  - Dockerfile
193
124
  - Gemfile
194
- - Gemfile.lock
195
125
  - LICENSE.txt
196
126
  - README.md
197
127
  - Rakefile
198
- - VERSION
199
128
  - bin/console
200
129
  - bin/setup
201
130
  - docker-compose.test.yml
@@ -204,14 +133,10 @@ files:
204
133
  - docker/start.test.sh
205
134
  - dump.sql
206
135
  - gemfiles/faraday0.gemfile
207
- - gemfiles/faraday0.gemfile.lock
208
136
  - gemfiles/faraday1.gemfile
209
- - gemfiles/faraday1.gemfile.lock
210
137
  - gemfiles/faraday2.gemfile
211
- - gemfiles/faraday2.gemfile.lock
212
138
  - lib/netbox-client-ruby.rb
213
139
  - lib/netbox_client_ruby.rb
214
- - lib/netbox_client_ruby/api.rb
215
140
  - lib/netbox_client_ruby/api/circuits.rb
216
141
  - lib/netbox_client_ruby/api/circuits/circuit.rb
217
142
  - lib/netbox_client_ruby/api/circuits/circuit_termination.rb
@@ -344,7 +269,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
344
269
  - !ruby/object:Gem::Version
345
270
  version: '0'
346
271
  requirements: []
347
- rubygems_version: 3.4.10
272
+ rubygems_version: 3.4.19
348
273
  signing_key:
349
274
  specification_version: 4
350
275
  summary: A read/write client for Netbox v2.