puppet-resource_api 1.8.0 → 1.8.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +10 -2
- data/CHANGELOG.md +15 -0
- data/README.md +120 -14
- data/lib/puppet/resource_api/transport.rb +1 -1
- data/lib/puppet/resource_api/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e1490074420a43833ba41869aa9ccfe401126dd773292d8ab1998d4769c72104
|
4
|
+
data.tar.gz: 54c027ce51ab65c46b30522ff1d92a7292a1e3288ab81307c410e1edefbf3d30
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e1cabe1b8a956dcfc9e4193ee5d28ef90046972b8b503e647e1a0e96fa99371092fbd13c7d3e4caf2fe78415cbc8e568b2aebc2ae5e7e1b488bc5056227c522c
|
7
|
+
data.tar.gz: 6ddb5982af07a32271a4198b29d12c1f25492f6bb45c3f431dfdf548513a4c7be11f552c7c8f8ebc660af8296b437fe60f928629a992103117b920b04387192a
|
data/.travis.yml
CHANGED
@@ -28,9 +28,9 @@ matrix:
|
|
28
28
|
bundler: false
|
29
29
|
directories: ~/.rvm
|
30
30
|
before_install: rvm use jruby-9.1.9.0 --install --binary --fuzzy
|
31
|
-
- rvm: 2.
|
31
|
+
- rvm: 2.5.1
|
32
32
|
env: CHECK=rubocop
|
33
|
-
- rvm: 2.
|
33
|
+
- rvm: 2.5.1
|
34
34
|
env: CHECK=license_finder
|
35
35
|
bundler_args: ""
|
36
36
|
|
@@ -60,10 +60,18 @@ matrix:
|
|
60
60
|
env: PUPPET_GEM_VERSION='~> 4.7.0'
|
61
61
|
before_install:
|
62
62
|
- gem install bundler -v '< 2'
|
63
|
+
- rvm: 2.5.1
|
64
|
+
env: PUPPET_GEM_VERSION='~> 6' # 6.0, soon 6.1
|
65
|
+
- rvm: 2.5.1
|
66
|
+
env: PUPPET_GEM_VERSION='~> 6.0'
|
63
67
|
- rvm: 2.5.1
|
64
68
|
env: PUPPET_GEM_VERSION='https://github.com/puppetlabs/puppet.git#master'
|
65
69
|
- rvm: 2.5.1
|
66
70
|
env: PUPPET_GEM_VERSION='https://github.com/puppetlabs/puppet.git#6.0.x'
|
71
|
+
- rvm: 2.4.3
|
72
|
+
env: PUPPET_GEM_VERSION='https://github.com/puppetlabs/puppet.git#5.5.x'
|
73
|
+
- rvm: 2.1.9
|
74
|
+
env: PUPPET_GEM_VERSION='https://github.com/puppetlabs/puppet.git#4.10.x'
|
67
75
|
notifications:
|
68
76
|
slack:
|
69
77
|
secure: aPXZYNow8LsmmlS8PQU3FjL0bc7FqUUA95d++wZfIu7YAjGboIUiekxYouQ0XnY+Aig8InvbTOIgBHgGNheyr/YFbFS90/jtulbF8oW7BitW+imgjeAHDCwlQZTCc4FFYde/2pI7QTT8H5NpLR9mKxlTU77Sqr8gFAIybuPdHcKMYQZdEZS07ma2pUp7+GyKS6PDQpzW2+mDCz/wfi3/JdsUvc0mclCZ8vxySc66j5P1E6nFDMzuakBOjwJHpgeDpreapbmSUQLAX0a3ZsFP+N+SNduLotlV2BWnJK2gcO6rGFP4Fz1D0bGXuBnYYdIiB+9OgI3wtXg9y1SifNHUG3IrOBAA8CGNyrebTGKtH0TS2O+HZLbaNX2g6udD5e3156vys9wScmJuQ/rSkVtQfXf1qUm5eijvlXI+DIbssbZHqm6QQGyM4p3NoULmNmF1C85bQoZ4GF7b1P/8mstsVE/HUfnzRPNbwD0r6j1aE/ck3PKMi7ZAhIi0Ja9RnAgP3wi0t62uERYcJGGYEycWohMWnrf2w6GFwGeuoiwAkASdHOLX0/AOMPc4mBOjlc621o8uYMrrZqfF5CrOAvJ151USSsWn2AhXaibIvnHo6X91paNvvNpU/GYu3CUAl6q8OhYovvjtRVPVnhs2DrpgoRB+6NWHnzjRG/wr6Z9U+vA=
|
data/CHANGELOG.md
CHANGED
@@ -3,6 +3,20 @@
|
|
3
3
|
All significant changes to this repo will be summarized in this file.
|
4
4
|
|
5
5
|
|
6
|
+
## [v1.8.1](https://github.com/puppetlabs/puppet-resource_api/tree/v1.8.1) (2019-03-13)
|
7
|
+
[Full Changelog](https://github.com/puppetlabs/puppet-resource_api/compare/v1.8.0...v1.8.1)
|
8
|
+
|
9
|
+
**Fixed bugs:**
|
10
|
+
|
11
|
+
- \(maint\) Fixes sensitive transport values where absent keys are wrapped [\#161](https://github.com/puppetlabs/puppet-resource_api/pull/161) ([da-ar](https://github.com/da-ar))
|
12
|
+
|
13
|
+
**Merged pull requests:**
|
14
|
+
|
15
|
+
- 1.6.x mergeup [\#162](https://github.com/puppetlabs/puppet-resource_api/pull/162) ([DavidS](https://github.com/DavidS))
|
16
|
+
- \(FM-7829\) Update README with transports examples [\#160](https://github.com/puppetlabs/puppet-resource_api/pull/160) ([willmeek](https://github.com/willmeek))
|
17
|
+
- \(maint\) update release docs [\#159](https://github.com/puppetlabs/puppet-resource_api/pull/159) ([DavidS](https://github.com/DavidS))
|
18
|
+
- Improve travis cells and testing [\#145](https://github.com/puppetlabs/puppet-resource_api/pull/145) ([DavidS](https://github.com/DavidS))
|
19
|
+
|
6
20
|
## [v1.8.0](https://github.com/puppetlabs/puppet-resource_api/tree/v1.8.0) (2019-02-26)
|
7
21
|
[Full Changelog](https://github.com/puppetlabs/puppet-resource_api/compare/v1.7.0...v1.8.0)
|
8
22
|
|
@@ -22,6 +36,7 @@ All significant changes to this repo will be summarized in this file.
|
|
22
36
|
|
23
37
|
**Merged pull requests:**
|
24
38
|
|
39
|
+
- Release prep for v1.8.0 [\#158](https://github.com/puppetlabs/puppet-resource_api/pull/158) ([DavidS](https://github.com/DavidS))
|
25
40
|
- \(FM-7726\) cleanups for the transport [\#153](https://github.com/puppetlabs/puppet-resource_api/pull/153) ([DavidS](https://github.com/DavidS))
|
26
41
|
- \(FM-7691,FM-7696\) refactoring definition handling in contexts [\#150](https://github.com/puppetlabs/puppet-resource_api/pull/150) ([DavidS](https://github.com/DavidS))
|
27
42
|
|
data/README.md
CHANGED
@@ -172,19 +172,128 @@ The `create`/`update`/`delete` methods get called by the `SimpleProvider` base-c
|
|
172
172
|
|
173
173
|
The generated unit tests in `spec/unit/puppet/provider/foo_spec.rb` get automatically evaluated with `pdk test unit`.
|
174
174
|
|
175
|
-
|
175
|
+
## Remote resources
|
176
176
|
|
177
|
-
|
177
|
+
Support for remote resources is enabled through a `transport` class. A transport class contains the code for managing connections and processing information to and from the remote resource. For information on how to create a transport class, see the [Resource API specification](https://github.com/puppetlabs/puppet-specifications/tree/master/language/resource-api#transport).
|
178
178
|
|
179
|
-
|
179
|
+
An example of a transport class:
|
180
180
|
|
181
|
-
|
181
|
+
```ruby
|
182
|
+
# lib/puppet/transport/device_type.rb
|
183
|
+
module Puppet::Transport
|
184
|
+
# The main connection class to a PAN-OS API endpoint
|
185
|
+
class DeviceType
|
186
|
+
def initialize(context, connection_info)
|
187
|
+
# Initialization eg. validate connection_info
|
188
|
+
end
|
189
|
+
|
190
|
+
def verify(context)
|
191
|
+
# Test that transport can talk to the remote target
|
192
|
+
end
|
193
|
+
|
194
|
+
def facts(context)
|
195
|
+
# Access target, return a Facter facts hash
|
196
|
+
end
|
197
|
+
|
198
|
+
def close(context)
|
199
|
+
# Close connection, free up resources
|
200
|
+
end
|
201
|
+
end
|
202
|
+
end
|
203
|
+
```
|
204
|
+
|
205
|
+
An example of a corresponding schema:
|
206
|
+
|
207
|
+
```ruby
|
208
|
+
# lib/puppet/transport/device_type.rb
|
209
|
+
Puppet::ResourceAPI.register_transport(
|
210
|
+
name: 'device_type', # points at class Puppet::Transport::DeviceType
|
211
|
+
desc: 'Connects to a device_type',
|
212
|
+
# features: [], # future extension points
|
213
|
+
connection_info: {
|
214
|
+
host: {
|
215
|
+
type: 'String',
|
216
|
+
desc: 'The host to connect to.',
|
217
|
+
},
|
218
|
+
user: {
|
219
|
+
type: 'String',
|
220
|
+
desc: 'The user.',
|
221
|
+
},
|
222
|
+
password: {
|
223
|
+
type: 'String',
|
224
|
+
sensitive: true,
|
225
|
+
desc: 'The password to connect.',
|
226
|
+
},
|
227
|
+
enable_password: {
|
228
|
+
type: 'String',
|
229
|
+
sensitive: true,
|
230
|
+
desc: 'The password escalate to enable access.',
|
231
|
+
},
|
232
|
+
port: {
|
233
|
+
type: 'Integer',
|
234
|
+
desc: 'The port to connect to.',
|
235
|
+
},
|
236
|
+
},
|
237
|
+
)
|
238
|
+
```
|
239
|
+
|
240
|
+
### Transport Schema keywords
|
241
|
+
|
242
|
+
Please note that within the transport schema, the following keywords are reserved words:
|
243
|
+
|
244
|
+
#### Usable within the schema
|
245
|
+
|
246
|
+
The following keywords are encouraged within the Transport schema:
|
182
247
|
|
183
|
-
|
248
|
+
* `uri` - Use when you need to specify a specific URL to connect to. All of the following keys will be computed from the `uri` if possible. In the future more url parts may be computed from the URI as well.
|
249
|
+
* `host` - Use to specify and IP or address to connect to.
|
250
|
+
* `protocol` - Use to specify which protocol the transport should use for example `http`, `https`, `ssh` or `tcp`
|
251
|
+
* `user` - The user the transport should connect as.
|
252
|
+
* `port` - The port the transport should connect to.
|
184
253
|
|
185
|
-
|
254
|
+
#### Non-Usable within the schema
|
186
255
|
|
187
|
-
|
256
|
+
The following keywords are keywords that must not be used by the transport schema:
|
257
|
+
|
258
|
+
* `name` - transports should use `uri` instead of name.
|
259
|
+
* `path` - reserved as a uri part
|
260
|
+
* `query` - reserved as a uri part
|
261
|
+
* `run-on` - This is used by bolt to determine which target to proxy to. Transports should not rely on this key.
|
262
|
+
* `remote-transport` - This is used to determine which transport to load. It should always be the transport class name "declassified".
|
263
|
+
* `remote-*` Any key starting with `remote-` is reserved for future use.
|
264
|
+
|
265
|
+
Note: Currently bolt inventory requires that a name be set for every target and always uses that name as the URI. This means there is no way to specify `host` separately from the host section of the `name` when parsed as a URI.
|
266
|
+
|
267
|
+
After the device class, transport class and transport schema have been implemented, `puppet device` will be able to use the new provider, and supply it (through the device class) with the URL specified in the [`device.conf`](https://puppet.com/docs/puppet/5.3/config_file_device.html).
|
268
|
+
|
269
|
+
#### Transport/device specific providers
|
270
|
+
|
271
|
+
To allow modules to deal with different backends independently, the Resource API implements a mechanism to use different API providers side by side. For a given transport/device class (see above), the Resource API will first try to load a `Puppet::Provider::TypeName::<DeviceType>` class from `lib/puppet/provider/type_name/device_type.rb`, before falling back to the regular provider at `Puppet::Provider::TypeName::TypeName`.
|
272
|
+
|
273
|
+
### Puppet backwards compatibility
|
274
|
+
|
275
|
+
To connect to a remote resource through `puppet device`, you must provide a device shim to maintain compatibility with Puppet. The device shim needs to interface the transport to puppet's config and runtime expectations.
|
276
|
+
|
277
|
+
In the simplest case you can use the provided `Puppet::ResourceApi::Transport::Wrapper` like this:
|
278
|
+
|
279
|
+
```ruby
|
280
|
+
# lib/puppet/util/network_device/device_type/device.rb
|
281
|
+
|
282
|
+
require 'puppet'
|
283
|
+
require 'puppet/resource_api/transport/wrapper'
|
284
|
+
# force registering the transport schema
|
285
|
+
require 'puppet/transport/schema/device_type'
|
286
|
+
|
287
|
+
module Puppet::Util::NetworkDevice::Device_type
|
288
|
+
class Device < Puppet::ResourceApi::Transport::Wrapper
|
289
|
+
def initialize(url_or_config, _options = {})
|
290
|
+
super('device_type', url_or_config)
|
291
|
+
end
|
292
|
+
end
|
293
|
+
end
|
294
|
+
```
|
295
|
+
|
296
|
+
## Further reading
|
188
297
|
|
189
298
|
The [Resource API](https://github.com/puppetlabs/puppet-specifications/blob/master/language/resource-api/README.md) describes details of all the capabilities of this gem.
|
190
299
|
|
@@ -231,19 +340,16 @@ Future possibilities:
|
|
231
340
|
* [Multiple Providers](https://tickets.puppetlabs.com/browse/PDK-530)
|
232
341
|
* [Commands API](https://tickets.puppetlabs.com/browse/PDK-847)
|
233
342
|
|
234
|
-
## Development
|
235
|
-
|
236
|
-
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
237
|
-
|
238
|
-
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
239
|
-
|
240
343
|
## Contributing
|
241
344
|
|
242
345
|
Bug reports and pull requests are welcome on GitHub at https://github.com/puppetlabs/puppet-resource_api.
|
243
346
|
|
244
347
|
### Cutting a release
|
245
348
|
|
246
|
-
|
349
|
+
In some cases we need to manually cut a release outside of the regular puppet
|
350
|
+
agent process.
|
351
|
+
|
352
|
+
To do so, follow these instructions from a current `master` checkout:
|
247
353
|
|
248
354
|
* Start the release branch with `git checkout -b release-prep`
|
249
355
|
* Update `lib/puppet/resource_api/version.rb` to the new version
|
@@ -84,7 +84,7 @@ module Puppet::ResourceApi::Transport
|
|
84
84
|
transport_schema = @transports[@environment][name]
|
85
85
|
if transport_schema
|
86
86
|
transport_schema.definition[:connection_info].each do |attr_name, options|
|
87
|
-
if options.key?(:sensitive) && (options[:sensitive] == true)
|
87
|
+
if options.key?(:sensitive) && (options[:sensitive] == true) && connection_info.key?(attr_name)
|
88
88
|
connection_info[attr_name] = Puppet::Pops::Types::PSensitiveType::Sensitive.new(connection_info[attr_name])
|
89
89
|
end
|
90
90
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: puppet-resource_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.8.
|
4
|
+
version: 1.8.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Schmitt
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-03-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hocon
|