lex-nautobot 0.1.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.
@@ -0,0 +1,147 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'legion/extensions/nautobot/helpers/client'
4
+
5
+ module Legion
6
+ module Extensions
7
+ module Nautobot
8
+ module Runners
9
+ module Virtualization
10
+ include Legion::Extensions::Nautobot::Helpers::Client
11
+
12
+ # Cluster Types
13
+ def list_cluster_types(url: nil, token: nil, **params)
14
+ resp = connection(url: url, token: token).get('/api/virtualization/cluster-types/', params)
15
+ resp.body
16
+ end
17
+
18
+ def get_cluster_type(id:, url: nil, token: nil, **)
19
+ resp = connection(url: url, token: token).get("/api/virtualization/cluster-types/#{id}/")
20
+ resp.body
21
+ end
22
+
23
+ def create_cluster_type(url: nil, token: nil, read_only: false, **attrs)
24
+ raise ReadOnlyError, 'Write operations disabled (read_only mode)' if read_only
25
+
26
+ resp = connection(url: url, token: token).post('/api/virtualization/cluster-types/', attrs)
27
+ resp.body
28
+ end
29
+
30
+ # Cluster Groups
31
+ def list_cluster_groups(url: nil, token: nil, **params)
32
+ resp = connection(url: url, token: token).get('/api/virtualization/cluster-groups/', params)
33
+ resp.body
34
+ end
35
+
36
+ def get_cluster_group(id:, url: nil, token: nil, **)
37
+ resp = connection(url: url, token: token).get("/api/virtualization/cluster-groups/#{id}/")
38
+ resp.body
39
+ end
40
+
41
+ def create_cluster_group(url: nil, token: nil, read_only: false, **attrs)
42
+ raise ReadOnlyError, 'Write operations disabled (read_only mode)' if read_only
43
+
44
+ resp = connection(url: url, token: token).post('/api/virtualization/cluster-groups/', attrs)
45
+ resp.body
46
+ end
47
+
48
+ # Clusters
49
+ def list_clusters(url: nil, token: nil, **params)
50
+ resp = connection(url: url, token: token).get('/api/virtualization/clusters/', params)
51
+ resp.body
52
+ end
53
+
54
+ def get_cluster(id:, url: nil, token: nil, **)
55
+ resp = connection(url: url, token: token).get("/api/virtualization/clusters/#{id}/")
56
+ resp.body
57
+ end
58
+
59
+ def create_cluster(url: nil, token: nil, read_only: false, **attrs)
60
+ raise ReadOnlyError, 'Write operations disabled (read_only mode)' if read_only
61
+
62
+ resp = connection(url: url, token: token).post('/api/virtualization/clusters/', attrs)
63
+ resp.body
64
+ end
65
+
66
+ def update_cluster(id:, url: nil, token: nil, read_only: false, **attrs)
67
+ raise ReadOnlyError, 'Write operations disabled (read_only mode)' if read_only
68
+
69
+ resp = connection(url: url, token: token).patch("/api/virtualization/clusters/#{id}/", attrs)
70
+ resp.body
71
+ end
72
+
73
+ def delete_cluster(id:, url: nil, token: nil, read_only: false, **)
74
+ raise ReadOnlyError, 'Write operations disabled (read_only mode)' if read_only
75
+
76
+ connection(url: url, token: token).delete("/api/virtualization/clusters/#{id}/")
77
+ end
78
+
79
+ # Virtual Machines
80
+ def list_virtual_machines(url: nil, token: nil, **params)
81
+ resp = connection(url: url, token: token).get('/api/virtualization/virtual-machines/', params)
82
+ resp.body
83
+ end
84
+
85
+ def get_virtual_machine(id:, url: nil, token: nil, **)
86
+ resp = connection(url: url, token: token).get("/api/virtualization/virtual-machines/#{id}/")
87
+ resp.body
88
+ end
89
+
90
+ def create_virtual_machine(url: nil, token: nil, read_only: false, **attrs)
91
+ raise ReadOnlyError, 'Write operations disabled (read_only mode)' if read_only
92
+
93
+ resp = connection(url: url, token: token).post('/api/virtualization/virtual-machines/', attrs)
94
+ resp.body
95
+ end
96
+
97
+ def update_virtual_machine(id:, url: nil, token: nil, read_only: false, **attrs)
98
+ raise ReadOnlyError, 'Write operations disabled (read_only mode)' if read_only
99
+
100
+ resp = connection(url: url, token: token).patch("/api/virtualization/virtual-machines/#{id}/", attrs)
101
+ resp.body
102
+ end
103
+
104
+ def delete_virtual_machine(id:, url: nil, token: nil, read_only: false, **)
105
+ raise ReadOnlyError, 'Write operations disabled (read_only mode)' if read_only
106
+
107
+ connection(url: url, token: token).delete("/api/virtualization/virtual-machines/#{id}/")
108
+ end
109
+
110
+ # VM Interfaces
111
+ def list_vm_interfaces(url: nil, token: nil, **params)
112
+ resp = connection(url: url, token: token).get('/api/virtualization/interfaces/', params)
113
+ resp.body
114
+ end
115
+
116
+ def get_vm_interface(id:, url: nil, token: nil, **)
117
+ resp = connection(url: url, token: token).get("/api/virtualization/interfaces/#{id}/")
118
+ resp.body
119
+ end
120
+
121
+ def create_vm_interface(url: nil, token: nil, read_only: false, **attrs)
122
+ raise ReadOnlyError, 'Write operations disabled (read_only mode)' if read_only
123
+
124
+ resp = connection(url: url, token: token).post('/api/virtualization/interfaces/', attrs)
125
+ resp.body
126
+ end
127
+
128
+ def update_vm_interface(id:, url: nil, token: nil, read_only: false, **attrs)
129
+ raise ReadOnlyError, 'Write operations disabled (read_only mode)' if read_only
130
+
131
+ resp = connection(url: url, token: token).patch("/api/virtualization/interfaces/#{id}/", attrs)
132
+ resp.body
133
+ end
134
+
135
+ def delete_vm_interface(id:, url: nil, token: nil, read_only: false, **)
136
+ raise ReadOnlyError, 'Write operations disabled (read_only mode)' if read_only
137
+
138
+ connection(url: url, token: token).delete("/api/virtualization/interfaces/#{id}/")
139
+ end
140
+
141
+ include Legion::Extensions::Helpers::Lex if Legion::Extensions.const_defined?(:Helpers, false) &&
142
+ Legion::Extensions::Helpers.const_defined?(:Lex, false)
143
+ end
144
+ end
145
+ end
146
+ end
147
+ end
@@ -0,0 +1,120 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'legion/extensions/nautobot/helpers/client'
4
+
5
+ module Legion
6
+ module Extensions
7
+ module Nautobot
8
+ module Runners
9
+ module Vpn
10
+ include Legion::Extensions::Nautobot::Helpers::Client
11
+
12
+ # VPNs
13
+ def list_vpns(url: nil, token: nil, **params)
14
+ resp = connection(url: url, token: token).get('/api/vpn/vpns/', params)
15
+ resp.body
16
+ end
17
+
18
+ def get_vpn(id:, url: nil, token: nil, **)
19
+ resp = connection(url: url, token: token).get("/api/vpn/vpns/#{id}/")
20
+ resp.body
21
+ end
22
+
23
+ def create_vpn(url: nil, token: nil, read_only: false, **attrs)
24
+ raise ReadOnlyError, 'Write operations disabled (read_only mode)' if read_only
25
+
26
+ resp = connection(url: url, token: token).post('/api/vpn/vpns/', attrs)
27
+ resp.body
28
+ end
29
+
30
+ def update_vpn(id:, url: nil, token: nil, read_only: false, **attrs)
31
+ raise ReadOnlyError, 'Write operations disabled (read_only mode)' if read_only
32
+
33
+ resp = connection(url: url, token: token).patch("/api/vpn/vpns/#{id}/", attrs)
34
+ resp.body
35
+ end
36
+
37
+ def delete_vpn(id:, url: nil, token: nil, read_only: false, **)
38
+ raise ReadOnlyError, 'Write operations disabled (read_only mode)' if read_only
39
+
40
+ connection(url: url, token: token).delete("/api/vpn/vpns/#{id}/")
41
+ end
42
+
43
+ # VPN Tunnels
44
+ def list_vpn_tunnels(url: nil, token: nil, **params)
45
+ resp = connection(url: url, token: token).get('/api/vpn/vpn-tunnels/', params)
46
+ resp.body
47
+ end
48
+
49
+ def get_vpn_tunnel(id:, url: nil, token: nil, **)
50
+ resp = connection(url: url, token: token).get("/api/vpn/vpn-tunnels/#{id}/")
51
+ resp.body
52
+ end
53
+
54
+ def create_vpn_tunnel(url: nil, token: nil, read_only: false, **attrs)
55
+ raise ReadOnlyError, 'Write operations disabled (read_only mode)' if read_only
56
+
57
+ resp = connection(url: url, token: token).post('/api/vpn/vpn-tunnels/', attrs)
58
+ resp.body
59
+ end
60
+
61
+ def update_vpn_tunnel(id:, url: nil, token: nil, read_only: false, **attrs)
62
+ raise ReadOnlyError, 'Write operations disabled (read_only mode)' if read_only
63
+
64
+ resp = connection(url: url, token: token).patch("/api/vpn/vpn-tunnels/#{id}/", attrs)
65
+ resp.body
66
+ end
67
+
68
+ def delete_vpn_tunnel(id:, url: nil, token: nil, read_only: false, **)
69
+ raise ReadOnlyError, 'Write operations disabled (read_only mode)' if read_only
70
+
71
+ connection(url: url, token: token).delete("/api/vpn/vpn-tunnels/#{id}/")
72
+ end
73
+
74
+ # VPN Tunnel Endpoints
75
+ def list_vpn_tunnel_endpoints(url: nil, token: nil, **params)
76
+ resp = connection(url: url, token: token).get('/api/vpn/vpn-tunnel-endpoints/', params)
77
+ resp.body
78
+ end
79
+
80
+ def get_vpn_tunnel_endpoint(id:, url: nil, token: nil, **)
81
+ resp = connection(url: url, token: token).get("/api/vpn/vpn-tunnel-endpoints/#{id}/")
82
+ resp.body
83
+ end
84
+
85
+ # VPN Profiles
86
+ def list_vpn_profiles(url: nil, token: nil, **params)
87
+ resp = connection(url: url, token: token).get('/api/vpn/vpn-profiles/', params)
88
+ resp.body
89
+ end
90
+
91
+ def get_vpn_profile(id:, url: nil, token: nil, **)
92
+ resp = connection(url: url, token: token).get("/api/vpn/vpn-profiles/#{id}/")
93
+ resp.body
94
+ end
95
+
96
+ def create_vpn_profile(url: nil, token: nil, read_only: false, **attrs)
97
+ raise ReadOnlyError, 'Write operations disabled (read_only mode)' if read_only
98
+
99
+ resp = connection(url: url, token: token).post('/api/vpn/vpn-profiles/', attrs)
100
+ resp.body
101
+ end
102
+
103
+ # VPN Terminations
104
+ def list_vpn_terminations(url: nil, token: nil, **params)
105
+ resp = connection(url: url, token: token).get('/api/vpn/vpn-terminations/', params)
106
+ resp.body
107
+ end
108
+
109
+ def get_vpn_termination(id:, url: nil, token: nil, **)
110
+ resp = connection(url: url, token: token).get("/api/vpn/vpn-terminations/#{id}/")
111
+ resp.body
112
+ end
113
+
114
+ include Legion::Extensions::Helpers::Lex if Legion::Extensions.const_defined?(:Helpers, false) &&
115
+ Legion::Extensions::Helpers.const_defined?(:Lex, false)
116
+ end
117
+ end
118
+ end
119
+ end
120
+ end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'legion/extensions/nautobot/helpers/client'
4
+
5
+ module Legion
6
+ module Extensions
7
+ module Nautobot
8
+ module Runners
9
+ module Wireless
10
+ include Legion::Extensions::Nautobot::Helpers::Client
11
+
12
+ def list_radio_profiles(url: nil, token: nil, **params)
13
+ resp = connection(url: url, token: token).get('/api/wireless/radio-profiles/', params)
14
+ resp.body
15
+ end
16
+
17
+ def get_radio_profile(id:, url: nil, token: nil, **)
18
+ resp = connection(url: url, token: token).get("/api/wireless/radio-profiles/#{id}/")
19
+ resp.body
20
+ end
21
+
22
+ def create_radio_profile(url: nil, token: nil, read_only: false, **attrs)
23
+ raise ReadOnlyError, 'Write operations disabled (read_only mode)' if read_only
24
+
25
+ resp = connection(url: url, token: token).post('/api/wireless/radio-profiles/', attrs)
26
+ resp.body
27
+ end
28
+
29
+ def list_wireless_networks(url: nil, token: nil, **params)
30
+ resp = connection(url: url, token: token).get('/api/wireless/wireless-networks/', params)
31
+ resp.body
32
+ end
33
+
34
+ def get_wireless_network(id:, url: nil, token: nil, **)
35
+ resp = connection(url: url, token: token).get("/api/wireless/wireless-networks/#{id}/")
36
+ resp.body
37
+ end
38
+
39
+ def create_wireless_network(url: nil, token: nil, read_only: false, **attrs)
40
+ raise ReadOnlyError, 'Write operations disabled (read_only mode)' if read_only
41
+
42
+ resp = connection(url: url, token: token).post('/api/wireless/wireless-networks/', attrs)
43
+ resp.body
44
+ end
45
+
46
+ def list_supported_data_rates(url: nil, token: nil, **params)
47
+ resp = connection(url: url, token: token).get('/api/wireless/supported-data-rates/', params)
48
+ resp.body
49
+ end
50
+
51
+ include Legion::Extensions::Helpers::Lex if Legion::Extensions.const_defined?(:Helpers, false) &&
52
+ Legion::Extensions::Helpers.const_defined?(:Lex, false)
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Legion
4
+ module Extensions
5
+ module Nautobot
6
+ VERSION = '0.1.0'
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'legion/extensions/nautobot/version'
4
+ require 'legion/extensions/nautobot/errors'
5
+ require 'legion/extensions/nautobot/helpers/client'
6
+ require 'legion/extensions/nautobot/runners/dcim'
7
+ require 'legion/extensions/nautobot/runners/ipam'
8
+ require 'legion/extensions/nautobot/runners/circuits'
9
+ require 'legion/extensions/nautobot/runners/tenancy'
10
+ require 'legion/extensions/nautobot/runners/virtualization'
11
+ require 'legion/extensions/nautobot/runners/extras'
12
+ require 'legion/extensions/nautobot/runners/users'
13
+ require 'legion/extensions/nautobot/runners/cloud'
14
+ require 'legion/extensions/nautobot/runners/vpn'
15
+ require 'legion/extensions/nautobot/runners/wireless'
16
+ require 'legion/extensions/nautobot/client'
17
+
18
+ module Legion
19
+ module Extensions
20
+ module Nautobot
21
+ extend Legion::Extensions::Core if Legion::Extensions.const_defined? :Core, false
22
+ end
23
+ end
24
+ end
metadata ADDED
@@ -0,0 +1,187 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: lex-nautobot
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Matthew Iverson
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: faraday
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '2.0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '2.0'
26
+ - !ruby/object:Gem::Dependency
27
+ name: legion-cache
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.3.11
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: 1.3.11
40
+ - !ruby/object:Gem::Dependency
41
+ name: legion-crypt
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 1.4.9
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 1.4.9
54
+ - !ruby/object:Gem::Dependency
55
+ name: legion-data
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 1.4.17
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: 1.4.17
68
+ - !ruby/object:Gem::Dependency
69
+ name: legion-json
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: 1.2.1
75
+ type: :runtime
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: 1.2.1
82
+ - !ruby/object:Gem::Dependency
83
+ name: legion-logging
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: 1.3.2
89
+ type: :runtime
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: 1.3.2
96
+ - !ruby/object:Gem::Dependency
97
+ name: legion-settings
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: 1.3.14
103
+ type: :runtime
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: 1.3.14
110
+ - !ruby/object:Gem::Dependency
111
+ name: legion-transport
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: 1.3.9
117
+ type: :runtime
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: 1.3.9
124
+ description: Connects LegionIO to Nautobot network source of truth and automation
125
+ platform
126
+ email:
127
+ - matthewdiverson@gmail.com
128
+ executables: []
129
+ extensions: []
130
+ extra_rdoc_files: []
131
+ files:
132
+ - ".github/CODEOWNERS"
133
+ - ".github/dependabot.yml"
134
+ - ".github/workflows/ci.yml"
135
+ - ".gitignore"
136
+ - ".rspec"
137
+ - ".rspec_status"
138
+ - ".rubocop.yml"
139
+ - CHANGELOG.md
140
+ - CLAUDE.md
141
+ - Gemfile
142
+ - LICENSE
143
+ - README.md
144
+ - lex-nautobot.gemspec
145
+ - lib/legion/extensions/nautobot.rb
146
+ - lib/legion/extensions/nautobot/client.rb
147
+ - lib/legion/extensions/nautobot/errors.rb
148
+ - lib/legion/extensions/nautobot/helpers/client.rb
149
+ - lib/legion/extensions/nautobot/runners/circuits.rb
150
+ - lib/legion/extensions/nautobot/runners/cloud.rb
151
+ - lib/legion/extensions/nautobot/runners/dcim.rb
152
+ - lib/legion/extensions/nautobot/runners/extras.rb
153
+ - lib/legion/extensions/nautobot/runners/ipam.rb
154
+ - lib/legion/extensions/nautobot/runners/tenancy.rb
155
+ - lib/legion/extensions/nautobot/runners/users.rb
156
+ - lib/legion/extensions/nautobot/runners/virtualization.rb
157
+ - lib/legion/extensions/nautobot/runners/vpn.rb
158
+ - lib/legion/extensions/nautobot/runners/wireless.rb
159
+ - lib/legion/extensions/nautobot/version.rb
160
+ homepage: https://github.com/LegionIO/lex-nautobot
161
+ licenses:
162
+ - MIT
163
+ metadata:
164
+ homepage_uri: https://github.com/LegionIO/lex-nautobot
165
+ source_code_uri: https://github.com/LegionIO/lex-nautobot
166
+ documentation_uri: https://github.com/LegionIO/lex-nautobot
167
+ changelog_uri: https://github.com/LegionIO/lex-nautobot
168
+ bug_tracker_uri: https://github.com/LegionIO/lex-nautobot/issues
169
+ rubygems_mfa_required: 'true'
170
+ rdoc_options: []
171
+ require_paths:
172
+ - lib
173
+ required_ruby_version: !ruby/object:Gem::Requirement
174
+ requirements:
175
+ - - ">="
176
+ - !ruby/object:Gem::Version
177
+ version: '3.4'
178
+ required_rubygems_version: !ruby/object:Gem::Requirement
179
+ requirements:
180
+ - - ">="
181
+ - !ruby/object:Gem::Version
182
+ version: '0'
183
+ requirements: []
184
+ rubygems_version: 3.6.9
185
+ specification_version: 4
186
+ summary: LEX Nautobot
187
+ test_files: []