netbox-client-ruby 0.4.10 → 0.5.4

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 (46) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/gem-push.yml +27 -0
  3. data/.github/workflows/rspec.yml +25 -0
  4. data/README.md +71 -35
  5. data/VERSION +1 -1
  6. data/bin/console +23 -1
  7. data/docker-compose.yml +5 -5
  8. data/dump.sql +9892 -7318
  9. data/lib/netbox_client_ruby/api.rb +5 -0
  10. data/lib/netbox_client_ruby/api/circuits.rb +33 -0
  11. data/lib/netbox_client_ruby/api/circuits/circuit.rb +37 -0
  12. data/lib/netbox_client_ruby/api/circuits/circuit_termination.rb +23 -0
  13. data/lib/netbox_client_ruby/api/circuits/circuit_terminations.rb +21 -0
  14. data/lib/netbox_client_ruby/api/circuits/circuit_type.rb +14 -0
  15. data/lib/netbox_client_ruby/api/circuits/circuit_types.rb +21 -0
  16. data/lib/netbox_client_ruby/api/circuits/circuits.rb +26 -0
  17. data/lib/netbox_client_ruby/api/circuits/provider.rb +14 -0
  18. data/lib/netbox_client_ruby/api/circuits/providers.rb +21 -0
  19. data/lib/netbox_client_ruby/api/dcim.rb +30 -2
  20. data/lib/netbox_client_ruby/api/dcim/console_connection.rb +21 -0
  21. data/lib/netbox_client_ruby/api/dcim/console_connections.rb +21 -0
  22. data/lib/netbox_client_ruby/api/dcim/console_port.rb +21 -0
  23. data/lib/netbox_client_ruby/api/dcim/console_ports.rb +21 -0
  24. data/lib/netbox_client_ruby/api/dcim/console_server_port.rb +21 -0
  25. data/lib/netbox_client_ruby/api/dcim/console_server_ports.rb +21 -0
  26. data/lib/netbox_client_ruby/api/dcim/device.rb +3 -1
  27. data/lib/netbox_client_ruby/api/dcim/interface_connection.rb +20 -0
  28. data/lib/netbox_client_ruby/api/dcim/interface_connections.rb +21 -0
  29. data/lib/netbox_client_ruby/api/dcim/platform.rb +6 -0
  30. data/lib/netbox_client_ruby/api/dcim/power_connection.rb +21 -0
  31. data/lib/netbox_client_ruby/api/dcim/power_connections.rb +21 -0
  32. data/lib/netbox_client_ruby/api/dcim/rack_reservation.rb +21 -0
  33. data/lib/netbox_client_ruby/api/dcim/rack_reservations.rb +21 -0
  34. data/lib/netbox_client_ruby/api/dcim/rack_role.rb +0 -2
  35. data/lib/netbox_client_ruby/api/dcim/site.rb +15 -2
  36. data/lib/netbox_client_ruby/api/dcim/virtual_chassis.rb +19 -0
  37. data/lib/netbox_client_ruby/api/dcim/virtual_chassis_list.rb +21 -0
  38. data/lib/netbox_client_ruby/api/virtualization/interface.rb +1 -2
  39. data/lib/netbox_client_ruby/connection.rb +1 -1
  40. data/lib/netbox_client_ruby/entity.rb +3 -1
  41. data/netbox-client-ruby.gemspec +11 -12
  42. data/netbox-client-ruby_rsa +51 -0
  43. data/netbox-client-ruby_rsa.pub +1 -0
  44. data/netbox.env +1 -1
  45. metadata +65 -22
  46. data/.travis.yml +0 -25
@@ -1,3 +1,4 @@
1
+ require 'netbox_client_ruby/api/circuits'
1
2
  require 'netbox_client_ruby/api/dcim'
2
3
  require 'netbox_client_ruby/api/ipam'
3
4
  require 'netbox_client_ruby/api/secrets'
@@ -6,6 +7,10 @@ require 'netbox_client_ruby/api/virtualization'
6
7
  require 'netbox_client_ruby/communication'
7
8
 
8
9
  module NetboxClientRuby
10
+ def self.circuits
11
+ NetboxClientRuby::Circuits
12
+ end
13
+
9
14
  def self.dcim
10
15
  NetboxClientRuby::DCIM
11
16
  end
@@ -0,0 +1,33 @@
1
+ require 'netbox_client_ruby/api/circuits/circuit'
2
+ require 'netbox_client_ruby/api/circuits/circuits'
3
+ require 'netbox_client_ruby/api/circuits/circuit_termination'
4
+ require 'netbox_client_ruby/api/circuits/circuit_terminations'
5
+ require 'netbox_client_ruby/api/circuits/circuit_type'
6
+ require 'netbox_client_ruby/api/circuits/circuit_types'
7
+ require 'netbox_client_ruby/api/circuits/provider'
8
+ require 'netbox_client_ruby/api/circuits/providers'
9
+ require 'netbox_client_ruby/communication'
10
+
11
+ module NetboxClientRuby
12
+ module Circuits
13
+ {
14
+ providers: Providers,
15
+ circuits: Circuits,
16
+ circuit_types: CircuitTypes,
17
+ circuit_terminations: CircuitTerminations
18
+ }.each_pair do |method_name, class_name|
19
+ define_method(method_name) { class_name.new }
20
+ module_function(method_name)
21
+ end
22
+
23
+ {
24
+ provider: Provider,
25
+ circuit: Circuit,
26
+ circuit_type: CircuitType,
27
+ circuit_termination: CircuitTermination
28
+ }.each_pair do |method_name, class_name|
29
+ define_method(method_name) { |id| class_name.new id }
30
+ module_function(method_name)
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,37 @@
1
+ require 'netbox_client_ruby/entity'
2
+ require 'netbox_client_ruby/api/circuits/circuit_type'
3
+ require 'netbox_client_ruby/api/circuits/provider'
4
+ require 'netbox_client_ruby/api/tenancy/tenant'
5
+
6
+ module NetboxClientRuby
7
+ module Circuits
8
+ class Circuit
9
+ include Entity
10
+
11
+ STATUS_VALUES = {
12
+ deprovisioning: 0,
13
+ active: 1,
14
+ planned: 2,
15
+ provisioning: 3,
16
+ offline: 4,
17
+ decommissioned: 5
18
+ }.freeze
19
+
20
+ id id: :id
21
+ deletable true
22
+ path 'circuits/circuits/:id.json'
23
+ creation_path 'circuits/circuits/'
24
+
25
+ object_fields(
26
+ provider: proc do |raw_data|
27
+ Provider.new raw_data['id']
28
+ end,
29
+ status: proc do |raw_status|
30
+ STATUS_VALUES.key(raw_status['value']) || raw_status['value']
31
+ end,
32
+ type: proc { |raw_data| CircuitType.new raw_data['id'] },
33
+ tenant: proc { |raw_data| Tenancy::Tenant.new raw_data['id'] }
34
+ )
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,23 @@
1
+ require 'netbox_client_ruby/entity'
2
+ require 'netbox_client_ruby/api/circuits/circuit'
3
+ require 'netbox_client_ruby/api/dcim/site'
4
+ require 'netbox_client_ruby/api/dcim/interface'
5
+
6
+ module NetboxClientRuby
7
+ module Circuits
8
+ class CircuitTermination
9
+ include Entity
10
+
11
+ id id: :id
12
+ deletable true
13
+ path 'circuits/circuit-terminations/:id.json'
14
+ creation_path 'circuits/circuit-terminations/'
15
+
16
+ object_fields(
17
+ circuit: proc { |raw_data| Circuit::Circuit.new raw_data['id'] },
18
+ site: proc { |raw_data| DCIM::Site.new raw_data['id'] },
19
+ interface: proc { |raw_data| DCIM::Interface.new raw_data['id'] }
20
+ )
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,21 @@
1
+ require 'netbox_client_ruby/entities'
2
+ require 'netbox_client_ruby/api/circuits/circuit_termination'
3
+
4
+ module NetboxClientRuby
5
+ module Circuits
6
+ class CircuitTerminations
7
+ include Entities
8
+
9
+ path 'circuits/circuit-terminations.json'
10
+ data_key 'results'
11
+ count_key 'count'
12
+ entity_creator :entity_creator
13
+
14
+ private
15
+
16
+ def entity_creator(raw_entity)
17
+ CircuitTermination.new raw_entity['id']
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,14 @@
1
+ require 'netbox_client_ruby/entity'
2
+
3
+ module NetboxClientRuby
4
+ module Circuits
5
+ class CircuitType
6
+ include Entity
7
+
8
+ id id: :id
9
+ deletable true
10
+ path 'circuits/circuit-types/:id.json'
11
+ creation_path 'circuits/circuit-types/'
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,21 @@
1
+ require 'netbox_client_ruby/entities'
2
+ require 'netbox_client_ruby/api/circuits/circuit_type'
3
+
4
+ module NetboxClientRuby
5
+ module Circuits
6
+ class CircuitTypes
7
+ include Entities
8
+
9
+ path 'circuits/circuit-types.json'
10
+ data_key 'results'
11
+ count_key 'count'
12
+ entity_creator :entity_creator
13
+
14
+ private
15
+
16
+ def entity_creator(raw_entity)
17
+ CircuitType.new raw_entity['id']
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,26 @@
1
+ require 'netbox_client_ruby/entities'
2
+ require 'netbox_client_ruby/api/circuits/circuit'
3
+
4
+ module NetboxClientRuby
5
+ module Circuits
6
+ ##
7
+ # This allows to access a list of Netbox Circuits.
8
+ #
9
+ # Normally, this class would be called `Circuits`.
10
+ # But this conflicts with the module of the same name.
11
+ class Circuits
12
+ include Entities
13
+
14
+ path 'circuits/circuits.json'
15
+ data_key 'results'
16
+ count_key 'count'
17
+ entity_creator :entity_creator
18
+
19
+ private
20
+
21
+ def entity_creator(raw_entity)
22
+ Circuit.new raw_entity['id']
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,14 @@
1
+ require 'netbox_client_ruby/entity'
2
+
3
+ module NetboxClientRuby
4
+ module Circuits
5
+ class Provider
6
+ include Entity
7
+
8
+ id id: :id
9
+ deletable true
10
+ path 'circuits/providers/:id.json'
11
+ creation_path 'circuits/providers/'
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,21 @@
1
+ require 'netbox_client_ruby/entities'
2
+ require 'netbox_client_ruby/api/circuits/provider'
3
+
4
+ module NetboxClientRuby
5
+ module Circuits
6
+ class Providers
7
+ include Entities
8
+
9
+ path 'circuits/providers.json'
10
+ data_key 'results'
11
+ count_key 'count'
12
+ entity_creator :entity_creator
13
+
14
+ private
15
+
16
+ def entity_creator(raw_entity)
17
+ Provider.new raw_entity['id']
18
+ end
19
+ end
20
+ end
21
+ end
@@ -1,3 +1,9 @@
1
+ require 'netbox_client_ruby/api/dcim/console_connection'
2
+ require 'netbox_client_ruby/api/dcim/console_connections'
3
+ require 'netbox_client_ruby/api/dcim/console_port'
4
+ require 'netbox_client_ruby/api/dcim/console_ports'
5
+ require 'netbox_client_ruby/api/dcim/console_server_port'
6
+ require 'netbox_client_ruby/api/dcim/console_server_ports'
1
7
  require 'netbox_client_ruby/api/dcim/device'
2
8
  require 'netbox_client_ruby/api/dcim/devices'
3
9
  require 'netbox_client_ruby/api/dcim/device_role'
@@ -5,6 +11,8 @@ require 'netbox_client_ruby/api/dcim/device_roles'
5
11
  require 'netbox_client_ruby/api/dcim/device_type'
6
12
  require 'netbox_client_ruby/api/dcim/device_types'
7
13
  require 'netbox_client_ruby/api/dcim/interface'
14
+ require 'netbox_client_ruby/api/dcim/interface_connection'
15
+ require 'netbox_client_ruby/api/dcim/interface_connections'
8
16
  require 'netbox_client_ruby/api/dcim/interfaces'
9
17
  require 'netbox_client_ruby/api/dcim/inventory_item'
10
18
  require 'netbox_client_ruby/api/dcim/inventory_items'
@@ -12,6 +20,8 @@ require 'netbox_client_ruby/api/dcim/manufacturer'
12
20
  require 'netbox_client_ruby/api/dcim/manufacturers'
13
21
  require 'netbox_client_ruby/api/dcim/platform'
14
22
  require 'netbox_client_ruby/api/dcim/platforms'
23
+ require 'netbox_client_ruby/api/dcim/power_connection'
24
+ require 'netbox_client_ruby/api/dcim/power_connections'
15
25
  require 'netbox_client_ruby/api/dcim/power_outlet'
16
26
  require 'netbox_client_ruby/api/dcim/power_outlets'
17
27
  require 'netbox_client_ruby/api/dcim/power_port'
@@ -19,6 +29,8 @@ require 'netbox_client_ruby/api/dcim/power_ports'
19
29
  require 'netbox_client_ruby/api/dcim/rack'
20
30
  require 'netbox_client_ruby/api/dcim/rack_group'
21
31
  require 'netbox_client_ruby/api/dcim/rack_groups'
32
+ require 'netbox_client_ruby/api/dcim/rack_reservation'
33
+ require 'netbox_client_ruby/api/dcim/rack_reservations'
22
34
  require 'netbox_client_ruby/api/dcim/rack_role'
23
35
  require 'netbox_client_ruby/api/dcim/rack_roles'
24
36
  require 'netbox_client_ruby/api/dcim/racks'
@@ -26,45 +38,61 @@ require 'netbox_client_ruby/api/dcim/region'
26
38
  require 'netbox_client_ruby/api/dcim/regions'
27
39
  require 'netbox_client_ruby/api/dcim/site'
28
40
  require 'netbox_client_ruby/api/dcim/sites'
41
+ require 'netbox_client_ruby/api/dcim/virtual_chassis'
42
+ require 'netbox_client_ruby/api/dcim/virtual_chassis_list'
29
43
  require 'netbox_client_ruby/communication'
30
44
 
31
45
  module NetboxClientRuby
32
46
  module DCIM
33
47
  {
48
+ console_connections: ConsoleConnections,
49
+ console_ports: ConsolePorts,
50
+ console_server_ports: ConsoleServerPorts,
34
51
  devices: Devices,
35
52
  device_roles: DeviceRoles,
36
53
  device_types: DeviceTypes,
37
54
  interfaces: Interfaces,
55
+ interface_connections: InterfaceConnections,
38
56
  inventory_items: InventoryItems,
39
57
  manufacturers: Manufacturers,
40
58
  platforms: Platforms,
59
+ power_connections: PowerConnections,
41
60
  power_outlets: PowerOutlets,
42
61
  power_ports: PowerPorts,
43
62
  racks: Racks,
44
63
  rack_groups: RackGroups,
64
+ rack_reservations: RackReservations,
45
65
  rack_roles: RackRoles,
46
66
  regions: Regions,
47
- sites: Sites
67
+ sites: Sites,
68
+ virtual_chassis_list: VirtualChassisList
48
69
  }.each_pair do |method_name, class_name|
49
70
  define_method(method_name) { class_name.new }
50
71
  module_function(method_name)
51
72
  end
52
73
 
53
74
  {
75
+ console_connection: ConsoleConnection,
76
+ console_port: ConsolePort,
77
+ console_server_port: ConsoleServerPort,
54
78
  device: Device,
55
79
  device_role: DeviceRole,
56
80
  device_type: DeviceType,
57
81
  interface: Interface,
82
+ interface_connection: InterfaceConnection,
58
83
  inventory_item: InventoryItem,
59
84
  manufacturer: Manufacturer,
60
85
  platform: Platform,
86
+ power_connection: PowerConnection,
61
87
  power_outlet: PowerOutlet,
62
88
  power_port: PowerPort,
63
89
  rack: Rack,
64
90
  rack_group: RackGroup,
91
+ rack_reservation: RackReservation,
65
92
  rack_role: RackRole,
66
93
  region: Region,
67
- site: Site
94
+ site: Site,
95
+ virtual_chassis: VirtualChassis
68
96
  }.each_pair do |method_name, class_name|
69
97
  define_method(method_name) { |id| class_name.new id }
70
98
  module_function(method_name)
@@ -0,0 +1,21 @@
1
+ require 'netbox_client_ruby/entity'
2
+ require 'netbox_client_ruby/api/dcim/device'
3
+ require 'netbox_client_ruby/api/dcim/console_server_port'
4
+
5
+ module NetboxClientRuby
6
+ module DCIM
7
+ class ConsoleConnection
8
+ include Entity
9
+
10
+ id id: :id
11
+ deletable true
12
+ path 'dcim/console-connections/:id.json'
13
+ creation_path 'dcim/console-connections/'
14
+
15
+ object_fields(
16
+ device: proc { |raw_data| Device.new raw_data['id'] },
17
+ cs_port: proc { |raw_data| ConsoleServerPort.new raw_data['id'] },
18
+ )
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ require 'netbox_client_ruby/entities'
2
+ require 'netbox_client_ruby/api/dcim/console_connection'
3
+
4
+ module NetboxClientRuby
5
+ module DCIM
6
+ class ConsoleConnections
7
+ include Entities
8
+
9
+ path 'dcim/console-connections.json'
10
+ data_key 'results'
11
+ count_key 'count'
12
+ entity_creator :entity_creator
13
+
14
+ private
15
+
16
+ def entity_creator(raw_entity)
17
+ ConsoleConnection.new raw_entity['id']
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ require 'netbox_client_ruby/entity'
2
+ require 'netbox_client_ruby/api/dcim/device'
3
+ require 'netbox_client_ruby/api/dcim/console_server_port'
4
+
5
+ module NetboxClientRuby
6
+ module DCIM
7
+ class ConsolePort
8
+ include Entity
9
+
10
+ id id: :id
11
+ deletable true
12
+ path 'dcim/console-ports/:id.json'
13
+ creation_path 'dcim/console-ports/'
14
+
15
+ object_fields(
16
+ device: proc { |raw_data| Device.new raw_data['id'] },
17
+ cs_port: proc { |raw_data| ConsoleServerPort.new raw_data['id'] },
18
+ )
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ require 'netbox_client_ruby/entities'
2
+ require 'netbox_client_ruby/api/dcim/console_port'
3
+
4
+ module NetboxClientRuby
5
+ module DCIM
6
+ class ConsolePorts
7
+ include Entities
8
+
9
+ path 'dcim/console-ports.json'
10
+ data_key 'results'
11
+ count_key 'count'
12
+ entity_creator :entity_creator
13
+
14
+ private
15
+
16
+ def entity_creator(raw_entity)
17
+ ConsolePort.new raw_entity['id']
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ require 'netbox_client_ruby/entity'
2
+ require 'netbox_client_ruby/api/dcim/device'
3
+ require 'netbox_client_ruby/api/dcim/console_port'
4
+
5
+ module NetboxClientRuby
6
+ module DCIM
7
+ class ConsoleServerPort
8
+ include Entity
9
+
10
+ id id: :id
11
+ deletable true
12
+ path 'dcim/console-server-ports/:id.json'
13
+ creation_path 'dcim/console-server-ports/'
14
+
15
+ object_fields(
16
+ device: proc { |raw_data| Device.new raw_data['id'] },
17
+ connected_console: proc { |raw_data| ConsolePort.new raw_data },
18
+ )
19
+ end
20
+ end
21
+ end