netbox-client-ruby 0.1.0 → 0.1.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4db0c7461a73226465cf363e1d36a4a0ae09e312
4
- data.tar.gz: 57a277a47aae7aa4b061fda4c9a30621ef3957f5
3
+ metadata.gz: b850829d19608cfc66a7952bee146baede04e39a
4
+ data.tar.gz: 4ace9252566509c6a674d136e3210f927a2d9e44
5
5
  SHA512:
6
- metadata.gz: fb67919777abcd7de549a6477dde74f309c3942e31929896c739bd58a6c6e484f929ab73a888e15664af7fced94dbd7aa5fe6288718b55b9145ee2ea3eafeec4
7
- data.tar.gz: 81ac1560d1839a15c74a6a4398fa782b8bf8edf83267e18235ef115cadc8fb3559b809a19449d786b6483fe99d974259aa39fb39a9b401edf18e4dba05c04b7b
6
+ metadata.gz: 83da2f33336ec64d82a7dbd9fef0e6486a0f3f4912cfa9d6c5fbf07debf7b2b6bebc7fe9bc8aad0dcddd42c3666197b4e8f6651cbfcb412c228be8070ac53219
7
+ data.tar.gz: d46c1ed8e28580ffe57973f31dc789197359dd3a0140719455508a6699b69ca1d8147f316a2e85a5e6746526edba69b707bfe15f4e7d2be521db623c167007b3
data/.dockerignore ADDED
@@ -0,0 +1,17 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+
10
+ # rspec failure tracking
11
+ .rspec_status
12
+
13
+ quickstart.rb
14
+ *.gz
15
+
16
+ /vendor/
17
+ /.git/
data/Dockerfile CHANGED
@@ -1,11 +1,15 @@
1
- FROM ruby:2.3.4-alpine
1
+ ARG RUBY_VERSION=2.3.4
2
+ FROM ruby:${RUBY_VERSION}-alpine
2
3
 
3
- RUN apk add --no-cache git
4
+ RUN apk add --no-cache git openssl-dev build-base
4
5
 
5
6
  RUN mkdir /app
6
7
  WORKDIR /app
7
8
 
9
+ COPY Gemfile Gemfile.lock netbox-client-ruby.gemspec VERSION ./
10
+ RUN bundle install --jobs 4 --deployment --quiet
11
+
8
12
  COPY . ./
9
- RUN bundle install --jobs 4 --quiet --deployment
13
+
10
14
 
11
15
  CMD docker/start.sh
data/Gemfile.lock CHANGED
@@ -1,12 +1,13 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- netbox-client-ruby (0.0.4)
4
+ netbox-client-ruby (0.1.1)
5
5
  dry-configurable (~> 0.1)
6
- faraday (>= 0.11)
6
+ faraday (>= 0.11, <= 0.12.1)
7
7
  faraday-detailed_logger (~> 2.1)
8
8
  faraday_middleware (~> 0.11.0)
9
9
  ipaddress (>= 0.8.3)
10
+ openssl (>= 2.0.5)
10
11
 
11
12
  GEM
12
13
  remote: https://rubygems.org/
@@ -26,6 +27,7 @@ GEM
26
27
  ipaddress (0.8.3)
27
28
  method_source (0.8.2)
28
29
  multipart-post (2.0.0)
30
+ openssl (2.0.5)
29
31
  parser (2.4.0.0)
30
32
  ast (~> 2.2)
31
33
  powerpack (0.1.1)
@@ -74,4 +76,4 @@ DEPENDENCIES
74
76
  rubocop-rspec (~> 1.15)
75
77
 
76
78
  BUNDLED WITH
77
- 1.14.6
79
+ 1.15.3
data/README.md CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  [![Build Status](https://travis-ci.org/ninech/netbox-client-ruby.svg?branch=master)](https://travis-ci.org/ninech/netbox-client-ruby)
4
4
  [![Gem Version](https://badge.fury.io/rb/netbox-client-ruby.svg)](https://badge.fury.io/rb/netbox-client-ruby)
5
+ [![Code Climate](https://codeclimate.com/github/ninech/netbox-client-ruby/badges/gpa.svg)](https://codeclimate.com/github/ninech/netbox-client-ruby)
5
6
 
6
7
  This is a gem to pragmatically access your [Netbox instance](https://github.com/digitalocean/netbox)
7
8
  via it's API from Ruby. This gem is currently only compatible with Netbox v2.
@@ -36,6 +37,8 @@ NetboxClientRuby.configure do |config|
36
37
  config.netbox.api_base_url = 'http://netbox.local/api/'
37
38
 
38
39
  # these are optional:
40
+ config.netbox.auth.rsa_private_key.path = '~/.ssh/netbox_rsa'
41
+ config.netbox.auth.rsa_private_key.password = ''
39
42
  config.netbox.pagination.default_limit = 50
40
43
  config.faraday.adapter = Faraday.default_adapter
41
44
  config.faraday.request_options = { open_timeout: 1, timeout: 5 }
@@ -57,6 +60,7 @@ So if the URL is `/api/dcim/sites.json`, then the corresponding Ruby code would
57
60
  NetboxClientRuby.configure do |c|
58
61
  c.netbox.auth.token = '2e35594ec8710e9922d14365a1ea66f27ea69450'
59
62
  c.netbox.api_base_url = 'http://netbox.local/api/'
63
+ c.netbox.auth.rsa_private_key.path = '~/.ssh/netbox_rsa'
60
64
  end
61
65
 
62
66
  # get all sites
@@ -71,6 +75,23 @@ puts "The first site is called #{first_site.name}."
71
75
  # Note that Netbox filters by *slug*
72
76
  devices_of_site = NetboxClientRuby.dcim.devices.filter(site: first_site.slug)
73
77
  puts "#{devices_of_site.total} devices belong to the site. #{devices_of_site}.length devices have been fetched."
78
+
79
+ # working with secrets
80
+ secrets = NetboxClientRuby.secrets.secrets
81
+ puts "#{secrets.total} secrets are in your Netbox."
82
+ secrets[0].plaintext # => nil, because you have not yet defined a session_key
83
+ NetboxClientRuby.secrets.get_session_key # now get a session_key
84
+ secrets = NetboxClientRuby.secrets.secrets # you must reload the data from the server
85
+ secrets[0].plaintext # => 'super secret password'
86
+
87
+ # optionally, you can persist the session_key:
88
+ session_key = NetboxClientRuby.secrets.get_session_key.session_key
89
+ FILE_NAME = File.expand_path('~/.netbox_session_key').freeze
90
+ File.write(FILE_NAME, session_key)
91
+
92
+ # later on, you can restore the persisted session_key:
93
+ persisted_session_key = File.read(FILE_NAME)
94
+ NetboxClientRuby.secrets.session_key = persisted_session_key
74
95
  ```
75
96
 
76
97
  ## Available Objects
@@ -97,6 +118,11 @@ Not all objects which the Netbox API exposes are currently implemented. Implemen
97
118
  * VLANs
98
119
  * VLAN Groups
99
120
  * VRFs
121
+ * Secrets:
122
+ * Secrets
123
+ * Secret Roles
124
+ * get-session-key
125
+ * generate-rsa-key-pair
100
126
  * Tenancy:
101
127
  * Tenant
102
128
  * Tenant Groups
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
@@ -1,5 +1,16 @@
1
1
  version: '2'
2
2
  services:
3
3
  app:
4
- build: .
4
+ build:
5
+ context: .
6
+ args:
7
+ RUBY_VERSION: 2.3.4
8
+ image: netbox-client-ruby:2.3.4
9
+ command: 'docker/start.test.sh'
10
+ app24:
11
+ build:
12
+ context: .
13
+ args:
14
+ RUBY_VERSION: 2.4.1
15
+ image: netbox-client-ruby:2.4.1
5
16
  command: 'docker/start.test.sh'
data/docker-compose.yml CHANGED
@@ -1,7 +1,21 @@
1
1
  version: '2'
2
2
  services:
3
3
  app:
4
- build: .
4
+ build:
5
+ context: .
6
+ args:
7
+ RUBY_VERSION: 2.3.4
8
+ image: netbox-client-ruby:2.3.4
9
+ depends_on:
10
+ - nginx
11
+ volumes:
12
+ - .:/app
13
+ app24:
14
+ build:
15
+ context: .
16
+ args:
17
+ RUBY_VERSION: 2.4.1
18
+ image: netbox-client-ruby:2.4.1
5
19
  depends_on:
6
20
  - nginx
7
21
  volumes:
@@ -10,6 +10,12 @@ module NetboxClientRuby
10
10
  setting :api_base_url
11
11
  setting :auth do
12
12
  setting :token
13
+ setting :rsa_private_key do
14
+ # the default is intentionally not `~/.ssh/id_rsa`,
15
+ # to not accidentally leak someone's main rsa private key
16
+ setting :path, '~/.ssh/netbox_rsa'
17
+ setting :password
18
+ end
13
19
  end
14
20
  setting :pagination do
15
21
  setting :default_limit, 50
@@ -1,18 +1,23 @@
1
1
  require 'netbox_client_ruby/api/dcim'
2
2
  require 'netbox_client_ruby/api/ipam'
3
+ require 'netbox_client_ruby/api/secrets'
3
4
  require 'netbox_client_ruby/api/tenancy'
4
5
  require 'netbox_client_ruby/communication'
5
6
 
6
7
  module NetboxClientRuby
7
8
  def self.dcim
8
- @dcim ||= NetboxClientRuby::DCIM
9
+ NetboxClientRuby::DCIM
9
10
  end
10
11
 
11
- def self.tenancy
12
- @tenancy ||= NetboxClientRuby::Tenancy
12
+ def self.ipam
13
+ NetboxClientRuby::IPAM
13
14
  end
14
15
 
15
- def self.ipam
16
- @ipam ||= NetboxClientRuby::IPAM
16
+ def self.secrets
17
+ NetboxClientRuby::Secrets
18
+ end
19
+
20
+ def self.tenancy
21
+ NetboxClientRuby::Tenancy
17
22
  end
18
23
  end
@@ -0,0 +1,39 @@
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'
6
+
7
+ module NetboxClientRuby
8
+ module Secrets
9
+ {
10
+ secret_roles: SecretRoles,
11
+ secrets: Secrets,
12
+ generate_rsa_key_pair: RSAKeyPair,
13
+ get_session_key: SessionKey
14
+ }.each_pair do |method_name, class_name|
15
+ define_method(method_name) { class_name.new }
16
+ module_function(method_name)
17
+ end
18
+
19
+ {
20
+ secret_role: SecretRole,
21
+ secret: Secret
22
+ }.each_pair do |method_name, class_name|
23
+ define_method(method_name) { |id| class_name.new id }
24
+ module_function(method_name)
25
+ end
26
+
27
+ def session_key=(session_key)
28
+ @session_key = session_key
29
+ end
30
+
31
+ module_function(:session_key=)
32
+
33
+ def session_key
34
+ @session_key
35
+ end
36
+
37
+ module_function(:session_key)
38
+ end
39
+ end
@@ -0,0 +1,48 @@
1
+ require 'netbox_client_ruby/entity'
2
+ require 'netbox_client_ruby/api/dcim/device'
3
+ require 'netbox_client_ruby/api/secrets/secret_role'
4
+
5
+ module NetboxClientRuby
6
+ module Secrets
7
+ class RSAKeyPair
8
+ include Communication
9
+
10
+ PATH = '/api/secrets/generate-rsa-key-pair/'.freeze
11
+
12
+ def public_key
13
+ get['public_key']
14
+ end
15
+
16
+ def private_key
17
+ get['private_key']
18
+ end
19
+
20
+ def reload
21
+ @response = nil
22
+ end
23
+
24
+ private
25
+
26
+ def get
27
+ if authorization_token
28
+ @response ||= response connection.get(PATH)
29
+ else
30
+ raise LocalError,
31
+ "The authorization_token has not been configured, but it's required for get-session-key."
32
+ end
33
+ end
34
+
35
+ def authorization_token
36
+ auth_config.token
37
+ end
38
+
39
+ def auth_config
40
+ netbox_config.auth
41
+ end
42
+
43
+ def netbox_config
44
+ NetboxClientRuby.config.netbox
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,18 @@
1
+ require 'netbox_client_ruby/entity'
2
+ require 'netbox_client_ruby/api/dcim/device'
3
+ require 'netbox_client_ruby/api/secrets/secret_role'
4
+
5
+ module NetboxClientRuby
6
+ module Secrets
7
+ class Secret
8
+ include Entity
9
+
10
+ id id: :id
11
+ deletable true
12
+ path 'secrets/secrets/:id.json'
13
+ creation_path 'secrets/secrets/'
14
+ object_fields device: proc { |raw_data| Device.new raw_data['id'] },
15
+ role: proc { |raw_data| SecretRole.new raw_data['id'] }
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,16 @@
1
+ require 'netbox_client_ruby/entity'
2
+ require 'netbox_client_ruby/api/dcim/device'
3
+ require 'netbox_client_ruby/api/secrets/secret_role'
4
+
5
+ module NetboxClientRuby
6
+ module Secrets
7
+ class SecretRole
8
+ include Entity
9
+
10
+ id id: :id
11
+ deletable true
12
+ path 'secrets/secret-roles/:id.json'
13
+ creation_path 'secrets/secret-roles/'
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,21 @@
1
+ require 'netbox_client_ruby/entities'
2
+ require 'netbox_client_ruby/api/secrets/secret_role'
3
+
4
+ module NetboxClientRuby
5
+ module Secrets
6
+ class SecretRoles
7
+ include Entities
8
+
9
+ path 'secrets/secret-roles.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
+ SecretRole.new raw_entity['id']
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ require 'netbox_client_ruby/entities'
2
+ require 'netbox_client_ruby/api/secrets/secret'
3
+
4
+ module NetboxClientRuby
5
+ module Secrets
6
+ class Secrets
7
+ include Entities
8
+
9
+ path 'secrets/secrets.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
+ Secret.new raw_entity['id']
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,114 @@
1
+ require 'openssl/pkey'
2
+ require 'netbox_client_ruby/entity'
3
+ require 'netbox_client_ruby/api/dcim/device'
4
+ require 'netbox_client_ruby/api/secrets/secret_role'
5
+
6
+ module NetboxClientRuby
7
+ module Secrets
8
+ class SessionKey
9
+ include Communication
10
+
11
+ PATH = '/api/secrets/get-session-key/'.freeze
12
+
13
+ def initialize
14
+ session_key
15
+ end
16
+
17
+ def session_key
18
+ NetboxClientRuby::Secrets.session_key ||= request['session_key']
19
+ end
20
+
21
+ def reload
22
+ NetboxClientRuby::Secrets.session_key = request['session_key']
23
+ end
24
+
25
+ private
26
+
27
+ def request
28
+ if authorization_token
29
+ response(post)
30
+ else
31
+ raise LocalError,
32
+ "The authorization_token has not been configured, but it's required for get-session-key."
33
+ end
34
+ end
35
+
36
+ def post
37
+ connection.post PATH, private_key: private_key
38
+ end
39
+
40
+ def connection
41
+ NetboxClientRuby::Connection.new(request_encoding: :url_encoded)
42
+ end
43
+
44
+ def authorization_token
45
+ auth_config.token
46
+ end
47
+
48
+ def private_key
49
+ key_file = open_private_key_file
50
+ encoded_private_key = read_private_key_file(key_file)
51
+ private_key = decode_private_key(encoded_private_key)
52
+ private_key.to_pem
53
+ end
54
+
55
+ def decode_private_key(encoded_private_key)
56
+ begin
57
+ private_key = OpenSSL::PKey::RSA.new encoded_private_key, rsa_private_key_password
58
+
59
+ return private_key if private_key.private?
60
+ rescue OpenSSL::PKey::RSAError
61
+ if rsa_private_key_password.empty?
62
+ raise LocalError,
63
+ "The private key at '#{rsa_private_key_path}' requires a password, but none was given, or the key data is corrupted. (The corresponding configuration is 'netbox.auth.rsa_private_key.password'.)"
64
+ else
65
+ raise LocalError,
66
+ "The password given for the private key at '#{rsa_private_key_path}' is not valid or the key data is corrupted. (The corresponding configuration is 'netbox.auth.rsa_private_key.password'.)"
67
+ end
68
+ end
69
+
70
+ raise LocalError,
71
+ "The file at '#{rsa_private_key_path}' is not a private key, but a private key is required for get-session-key. (The corresponding configuration is 'netbox.auth.rsa_private_key.path'.)"
72
+ end
73
+
74
+ def rsa_private_key_password
75
+ pwd = rsa_private_key_config.password
76
+ # If nil is not converted to '', then OpenSSL will block and ask on console for the password.
77
+ # We really don't want that.
78
+ return '' if pwd.nil?
79
+ pwd
80
+ end
81
+
82
+ def read_private_key_file(key_file)
83
+ encoded_private_key = key_file.read
84
+ return encoded_private_key unless encoded_private_key.nil? || encoded_private_key.empty?
85
+
86
+ raise LocalError,
87
+ "The file at '#{rsa_private_key_path}' is empty, but a private key is required for get-session-key. (The corresponding configuration is 'netbox.auth.rsa_private_key.path'.)"
88
+ end
89
+
90
+ def open_private_key_file
91
+ return File.new rsa_private_key_path if File.exist? rsa_private_key_path
92
+
93
+ raise LocalError,
94
+ "No file exists at the given path '#{rsa_private_key_path}', but it's required for get-session-key. (The corresponding configuration is 'netbox.auth.rsa_private_key.path'.)"
95
+ end
96
+
97
+ def rsa_private_key_path
98
+ @rsa_private_key_path ||= File.expand_path(rsa_private_key_config.path)
99
+ end
100
+
101
+ def rsa_private_key_config
102
+ auth_config.rsa_private_key
103
+ end
104
+
105
+ def auth_config
106
+ netbox_config.auth
107
+ end
108
+
109
+ def netbox_config
110
+ NetboxClientRuby.config.netbox
111
+ end
112
+ end
113
+ end
114
+ end
@@ -5,24 +5,34 @@ require 'netbox_client_ruby/error/local_error'
5
5
 
6
6
  module NetboxClientRuby
7
7
  class Connection
8
- def self.new
9
- build_faraday
8
+ DEFAULT_OPTIONS = {
9
+ request_encoding: :json
10
+ }.freeze
11
+
12
+ def self.new(options = {})
13
+ build_faraday(DEFAULT_OPTIONS.merge(options))
10
14
  end
11
15
 
12
16
  def self.headers
13
17
  headers = {}
14
- netbox_auth_config = NetboxClientRuby.config.netbox.auth
18
+ auth_token = auth_config.token
19
+ headers['Authorization'] = "Token #{auth_token}".freeze if auth_token
20
+ headers['X-Session-Key'] = NetboxClientRuby::Secrets.session_key if NetboxClientRuby::Secrets.session_key
21
+ headers
22
+ end
15
23
 
16
- raise LocalError, 'The authorization_token has not been configured.' unless netbox_auth_config.token
24
+ def self.auth_config
25
+ netbox_config.auth
26
+ end
17
27
 
18
- headers['Authorization'] = "Token #{netbox_auth_config.token}"
19
- headers
28
+ def self.netbox_config
29
+ NetboxClientRuby.config.netbox
20
30
  end
21
31
 
22
- private_class_method def self.build_faraday
32
+ private_class_method def self.build_faraday(request_encoding: :json)
23
33
  config = NetboxClientRuby.config
24
34
  Faraday.new(url: config.netbox.api_base_url, headers: headers) do |faraday|
25
- faraday.request :json
35
+ faraday.request request_encoding
26
36
  faraday.response config.faraday.logger if config.faraday.logger
27
37
  faraday.response :json, content_type: /\bjson$/
28
38
  faraday.adapter config.faraday.adapter || Faraday.default_adapter
@@ -30,10 +30,12 @@ Gem::Specification.new do |spec|
30
30
  spec.require_paths = ['lib']
31
31
 
32
32
  spec.add_runtime_dependency 'dry-configurable', '~> 0.1'
33
- spec.add_runtime_dependency 'faraday', '>= 0.11'
33
+ # see https://github.com/lostisland/faraday/issues/717
34
+ spec.add_runtime_dependency 'faraday', '>= 0.11', '<= 0.12.1'
34
35
  spec.add_runtime_dependency 'faraday_middleware', '~> 0.11.0'
35
36
  spec.add_runtime_dependency 'faraday-detailed_logger', '~> 2.1'
36
37
  spec.add_runtime_dependency 'ipaddress', '>= 0.8.3'
38
+ spec.add_runtime_dependency 'openssl', '>= 2.0.5'
37
39
 
38
40
  spec.add_development_dependency 'bundler', '~> 1.14'
39
41
  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.1.0
4
+ version: 0.1.1
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-08-02 00:00:00.000000000 Z
11
+ date: 2017-08-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-configurable
@@ -31,6 +31,9 @@ dependencies:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0.11'
34
+ - - "<="
35
+ - !ruby/object:Gem::Version
36
+ version: 0.12.1
34
37
  type: :runtime
35
38
  prerelease: false
36
39
  version_requirements: !ruby/object:Gem::Requirement
@@ -38,6 +41,9 @@ dependencies:
38
41
  - - ">="
39
42
  - !ruby/object:Gem::Version
40
43
  version: '0.11'
44
+ - - "<="
45
+ - !ruby/object:Gem::Version
46
+ version: 0.12.1
41
47
  - !ruby/object:Gem::Dependency
42
48
  name: faraday_middleware
43
49
  requirement: !ruby/object:Gem::Requirement
@@ -80,6 +86,20 @@ dependencies:
80
86
  - - ">="
81
87
  - !ruby/object:Gem::Version
82
88
  version: 0.8.3
89
+ - !ruby/object:Gem::Dependency
90
+ name: openssl
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: 2.0.5
96
+ type: :runtime
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: 2.0.5
83
103
  - !ruby/object:Gem::Dependency
84
104
  name: bundler
85
105
  requirement: !ruby/object:Gem::Requirement
@@ -171,6 +191,7 @@ executables: []
171
191
  extensions: []
172
192
  extra_rdoc_files: []
173
193
  files:
194
+ - ".dockerignore"
174
195
  - ".gitignore"
175
196
  - ".rspec"
176
197
  - ".ruby-version"
@@ -230,6 +251,13 @@ files:
230
251
  - lib/netbox_client_ruby/api/ipam/vlans.rb
231
252
  - lib/netbox_client_ruby/api/ipam/vrf.rb
232
253
  - lib/netbox_client_ruby/api/ipam/vrfs.rb
254
+ - lib/netbox_client_ruby/api/secrets.rb
255
+ - lib/netbox_client_ruby/api/secrets/rsa_key_pair.rb
256
+ - lib/netbox_client_ruby/api/secrets/secret.rb
257
+ - lib/netbox_client_ruby/api/secrets/secret_role.rb
258
+ - lib/netbox_client_ruby/api/secrets/secret_roles.rb
259
+ - lib/netbox_client_ruby/api/secrets/secrets.rb
260
+ - lib/netbox_client_ruby/api/secrets/session_key.rb
233
261
  - lib/netbox_client_ruby/api/tenancy.rb
234
262
  - lib/netbox_client_ruby/api/tenancy/tenant.rb
235
263
  - lib/netbox_client_ruby/api/tenancy/tenant_group.rb