Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

(SERVER-2470) list_all_transports implementation for puppetserver #187

Merged
merged 2 commits into from
Jun 28, 2019

Conversation

DavidS
Copy link
Contributor

@DavidS DavidS commented Jun 17, 2019

To test out, run rake spec_prep and use the following setup in pry:

require 'puppet'
require 'puppet/resource_api/transport'
require 'puppet/settings'

Puppet.initialize_settings
Puppet[:modulepath] = 'spec/fixtures/modules'

# env = Puppet.lookup(:environments).get!('production')
# files = Puppet::Util::Autoload.files_to_load('puppet/transport/schema', env)

Puppet::ResourceApi::Transport.list_all_transports('production')

@DavidS
Copy link
Contributor Author

DavidS commented Jun 17, 2019

created draft PR to not lose this code.

@DavidS DavidS force-pushed the SERVER-2470-list_all_transports branch from ebadc5a to 68b38be Compare June 26, 2019 11:29
@DavidS DavidS changed the title (SERVER-2470) Draft implementation for list_all_transports (SERVER-2470) list_all_transports implementation for puppetserver Jun 26, 2019
@DavidS
Copy link
Contributor Author

DavidS commented Jun 26, 2019

The tests pass if the loads all transports example runs first:

david@davids:~/git/puppet-resource_api$ bundle exec rspec spec/integration/resource_api/transport_spec.rb 

Randomized with seed 35430
/home/david/git/puppet-resource_api/spec/fixtures/modules

Resource API Transport integration tests:
  #list_all_transports
{"test_device"=>#<Puppet::ResourceApi::TransportSchemaDef:0x0000564a43283e60 @data_type_cache={"String"=>#<Puppet::Pops::Types::PStringType:0x0000564a43283d98 @size_type_or_value=nil>, "Optional[String]"=>#<Puppet::Pops::Types::POptionalType:0x0000564a43283cf8 @type=#<Puppet::Pops::Types::PStringType:0x0000564a43283d98 @size_type_or_value=nil>>, "Optional[Array[String]]"=>#<Puppet::Pops::Types::POptionalType:0x0000564a43283c80 @type=#<Puppet::Pops::Types::PArrayType:0x0000564a43283c30 @size_type=nil, @element_type=#<Puppet::Pops::Types::PStringType:0x0000564a43283d98 @size_type_or_value=nil>>>, "Optional[Variant[Array[String], Integer]]"=>#<Puppet::Pops::Types::POptionalType:0x0000564a43283b90 @type=#<Puppet::Pops::Types::PVariantType:0x0000564a43283b40 @types=[#<Puppet::Pops::Types::PArrayType:0x0000564a43283ac8 @size_type=nil, @element_type=#<Puppet::Pops::Types::PStringType:0x0000564a43283d98 @size_type_or_value=nil>>, #<Puppet::Pops::Types::PIntegerType:0x0000564a43283a78 @from=-Infinity, @to=Infinity>]>>}, @attributes={:username=>{:type=>"String", :desc=>"The name of the resource you want to manage."}, :secret=>{:type=>"String", :desc=>"A secret to protect.", :sensitive=>true}, :optional_secret=>{:type=>"Optional[String]", :desc=>"An optional secret to protect.", :sensitive=>true}, :array_secret=>{:type=>"Optional[Array[String]]", :desc=>"An array secret to protect.", :sensitive=>true}, :variant_secret=>{:type=>"Optional[Variant[Array[String], Integer]]", :desc=>"An array secret to protect.", :sensitive=>true}}, @definition={:name=>"test_device", :desc=>"Connects to a device", :connection_info=>{:username=>{:type=>"String", :desc=>"The name of the resource you want to manage."}, :secret=>{:type=>"String", :desc=>"A secret to protect.", :sensitive=>true}, :optional_secret=>{:type=>"Optional[String]", :desc=>"An optional secret to protect.", :sensitive=>true}, :array_secret=>{:type=>"Optional[Array[String]]", :desc=>"An array secret to protect.", :sensitive=>true}, :variant_secret=>{:type=>"Optional[Variant[Array[String], Integer]]", :desc=>"An array secret to protect.", :sensitive=>true}}}>, "test_device_sensitive"=>#<Puppet::ResourceApi::TransportSchemaDef:0x0000564a432834b0 @data_type_cache={"String"=>#<Puppet::Pops::Types::PStringType:0x0000564a43283d98 @size_type_or_value=nil>, "Optional[String]"=>#<Puppet::Pops::Types::POptionalType:0x0000564a43283cf8 @type=#<Puppet::Pops::Types::PStringType:0x0000564a43283d98 @size_type_or_value=nil>>, "Optional[Array[String]]"=>#<Puppet::Pops::Types::POptionalType:0x0000564a43283438 @type=#<Puppet::Pops::Types::PArrayType:0x0000564a43283410 @size_type=nil, @element_type=#<Puppet::Pops::Types::PStringType:0x0000564a43283d98 @size_type_or_value=nil>>>, "Optional[Variant[Array[String], Integer]]"=>#<Puppet::Pops::Types::POptionalType:0x0000564a432833c0 @type=#<Puppet::Pops::Types::PVariantType:0x0000564a43283398 @types=[#<Puppet::Pops::Types::PArrayType:0x0000564a43283348 @size_type=nil, @element_type=#<Puppet::Pops::Types::PStringType:0x0000564a43283d98 @size_type_or_value=nil>>, #<Puppet::Pops::Types::PIntegerType:0x0000564a43283a78 @from=-Infinity, @to=Infinity>]>>}, @attributes={:username=>{:type=>"String", :desc=>"The name of the resource you want to manage."}, :secret_string=>{:type=>"String", :desc=>"A secret to protect.", :sensitive=>true}, :optional_secret=>{:type=>"Optional[String]", :desc=>"An optional secret to protect.", :sensitive=>true}, :array_secret=>{:type=>"Optional[Array[String]]", :desc=>"An array secret to protect.", :sensitive=>true}, :variant_secret=>{:type=>"Optional[Variant[Array[String], Integer]]", :desc=>"An array secret to protect.", :sensitive=>true}}, @definition={:name=>"test_device_sensitive", :desc=>"Connects to a device", :connection_info=>{:username=>{:type=>"String", :desc=>"The name of the resource you want to manage."}, :secret_string=>{:type=>"String", :desc=>"A secret to protect.", :sensitive=>true}, :optional_secret=>{:type=>"Optional[String]", :desc=>"An optional secret to protect.", :sensitive=>true}, :array_secret=>{:type=>"Optional[Array[String]]", :desc=>"An array secret to protect.", :sensitive=>true}, :variant_secret=>{:type=>"Optional[Variant[Array[String], Integer]]", :desc=>"An array secret to protect.", :sensitive=>true}}}>}
    loads all transports
    can be called twice

Finished in 0.05998 seconds (files took 1.05 seconds to load)
2 examples, 0 failures

Randomized with seed 35430

david@davids:~/git/puppet-resource_api$ 

still need to find a way to reset the autoloader

@justinstoller
Copy link
Member

Does this need to implement a custom Loader to pick up the EnvironmentCache handling?

@DavidS DavidS mentioned this pull request Jun 27, 2019
@DavidS DavidS force-pushed the SERVER-2470-list_all_transports branch from 68b38be to e04f7a0 Compare June 27, 2019 13:18
@DavidS DavidS marked this pull request as ready for review June 27, 2019 13:19
@DavidS
Copy link
Contributor Author

DavidS commented Jun 27, 2019

Does this need to implement a custom Loader to pick up the EnvironmentCache handling?

There is follow-up work for cache scoping ticketed up in https://tickets.puppetlabs.com/browse/FM-8092 . For now this is only aiming at unblocking the dumpling team to move forward with their tasks.

@DavidS DavidS force-pushed the SERVER-2470-list_all_transports branch from 3cb4900 to bdd555c Compare June 27, 2019 14:16
@justinstoller
Copy link
Member

Gotcha, sorry, thought this was for that ticket.

This change implements a `list_all_transports(env)` method that loads
all available transports from a specified environment.

To test out, run `rake spec_prep` and use the following setup in pry:

```
require 'puppet'
require 'puppet/resource_api/transport'
require 'puppet/settings'

Puppet.initialize_settings
Puppet[:modulepath] = 'spec/fixtures/modules'

Puppet::ResourceApi::Transport.list_all_transports('production')
```
This might have been uncovered by the autoloader reset and random order
testing. To make sure it does not recur, this change moves the autoloader
reset to the top and runs it after each example.
@DavidS DavidS force-pushed the SERVER-2470-list_all_transports branch from bdd555c to ad55367 Compare June 28, 2019 12:14
@da-ar da-ar merged commit 8c3d83f into puppetlabs:master Jun 28, 2019
@DavidS DavidS deleted the SERVER-2470-list_all_transports branch June 28, 2019 16:39
DavidS added a commit to puppetlabs/puppetserver that referenced this pull request Sep 20, 2019
puppetlabs/puppet-resource_api#187 implemented a dedicated function in the Resource API to load and return all transport schemas. Use it here now.
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Mar 24, 2020
Update ruby-puppet-resource_api to 1.8.12.

## [1.8.7](https://github.com/puppetlabs/puppet-resource_api/tree/1.8.7) (2019-09-11)
[Full Changelog](puppetlabs/puppet-resource_api@1.8.6...1.8.7)

**Fixed bugs:**

- \(FM-8092\) Fix caching scope of transport schemas [\#200](puppetlabs/puppet-resource_api#200) ([DavidS](https://github.com/DavidS))

**Merged pull requests:**

- \(FM-8485\) - Addition of CODEOWNERS file [\#203](puppetlabs/puppet-resource_api#203) ([david22swan](https://github.com/david22swan))
- \(MODULES-9258\) Improve referencing and add summary [\#199](puppetlabs/puppet-resource_api#199) ([MaxMagill](https://github.com/MaxMagill))
- \(maint\) Pin both Jruby cells to use `dist: trusty` [\#197](puppetlabs/puppet-resource_api#197) ([da-ar](https://github.com/da-ar))

## [v1.8.6](https://github.com/puppetlabs/puppet-resource_api/tree/v1.8.6) (2019-07-01)
[Full Changelog](puppetlabs/puppet-resource_api@1.8.5...v1.8.6)

**Implemented enhancements:**

- \(SERVER-2470\) list\_all\_transports implementation for puppetserver [\#187](puppetlabs/puppet-resource_api#187) ([DavidS](https://github.com/DavidS))

**Fixed bugs:**

- \(MODULES-9428\) make the composite namevar implementation usable [\#174](puppetlabs/puppet-resource_api#174) ([DavidS](https://github.com/DavidS))

**Merged pull requests:**

- Merge 1.6.x [\#194](puppetlabs/puppet-resource_api#194) ([da-ar](https://github.com/da-ar))
- \(maint\) test fixes [\#193](puppetlabs/puppet-resource_api#193) ([DavidS](https://github.com/DavidS))
- \(packaging\) Revert to version '1.8.5' \[no-promote\] [\#192](puppetlabs/puppet-resource_api#192) ([gimmyxd](https://github.com/gimmyxd))
- \(packaging\) Bump to version '1.9.0' \[no-promote\] [\#191](puppetlabs/puppet-resource_api#191) ([gimmyxd](https://github.com/gimmyxd))

## [1.8.5](https://github.com/puppetlabs/puppet-resource_api/tree/1.8.5) (2019-06-24)
[Full Changelog](puppetlabs/puppet-resource_api@1.8.4...1.8.5)

**Fixed bugs:**

- \(maint\) Mergeup 1.6.x: FM-7839, desc/docs cleanup [\#186](puppetlabs/puppet-resource_api#186) ([DavidS](https://github.com/DavidS))

**Merged pull requests:**

- \(maint\) reduce debug noise caused by `feature?` [\#189](puppetlabs/puppet-resource_api#189) ([da-ar](https://github.com/da-ar))
- \(FM-8265\) Merge branch '1.6.x' into master [\#188](puppetlabs/puppet-resource_api#188) ([da-ar](https://github.com/da-ar))
- \(maint\) test fixes [\#185](puppetlabs/puppet-resource_api#185) ([DavidS](https://github.com/DavidS))
- \(maint\) make test order really random [\#175](puppetlabs/puppet-resource_api#175) ([DavidS](https://github.com/DavidS))
- \(packaging\) Update reported version to 1.8.4 \[no-promote\] [\#171](puppetlabs/puppet-resource_api#171) ([gimmyxd](https://github.com/gimmyxd))

## [1.8.4](https://github.com/puppetlabs/puppet-resource_api/tree/1.8.4) (2019-06-12)
[Full Changelog](puppetlabs/puppet-resource_api@1.8.3...1.8.4)

**Implemented enhancements:**

- \(FM-7839\) Implement `to\_json` method for ResourceShim [\#168](puppetlabs/puppet-resource_api#168) ([da-ar](https://github.com/da-ar))

**Fixed bugs:**

- \(maint\) backport minor fixes from master to 1.6.x [\#184](puppetlabs/puppet-resource_api#184) ([DavidS](https://github.com/DavidS))
- \(PUP-9747\) Relax validation for bolt [\#182](puppetlabs/puppet-resource_api#182) ([DavidS](https://github.com/DavidS))
- \(maint\) Add to\_hash function to resourceShim for compatibility [\#180](puppetlabs/puppet-resource_api#180) ([da-ar](https://github.com/da-ar))
- \(maint\) implement `desc`/`docs` fallback [\#177](puppetlabs/puppet-resource_api#177) ([DavidS](https://github.com/DavidS))

**Closed issues:**

- ResourceShim should respond to to\_hash [\#179](puppetlabs/puppet-resource_api#179)

**Merged pull requests:**

- \(maint\) Merge 1.6.x to master  [\#183](puppetlabs/puppet-resource_api#183) ([mihaibuzgau](https://github.com/mihaibuzgau))
- \(maint\) Fixup Gemfile for JRuby 1.7 installs [\#173](puppetlabs/puppet-resource_api#173) ([da-ar](https://github.com/da-ar))
- \(maint\) test cleanups [\#172](puppetlabs/puppet-resource_api#172) ([DavidS](https://github.com/DavidS))

## [1.8.3](https://github.com/puppetlabs/puppet-resource_api/tree/1.8.3) (2019-04-12)
[Full Changelog](puppetlabs/puppet-resource_api@1.8.2...1.8.3)

**Fixed bugs:**

- \(FM-7867\) Always throw when transport schema validation fails [\#169](puppetlabs/puppet-resource_api#169) ([da-ar](https://github.com/da-ar))

**Merged pull requests:**

- \(PA-2496\) Bump version and remove v from version number [\#170](puppetlabs/puppet-resource_api#170) ([mihaibuzgau](https://github.com/mihaibuzgau))

## [1.8.2](https://github.com/puppetlabs/puppet-resource_api/tree/1.8.2) (2019-04-10)
[Full Changelog](puppetlabs/puppet-resource_api@v1.6.4...1.8.2)

**Merged pull requests:**

- \(packaging\) Update reported version to 1.8.2 \[no-promote\] [\#167](puppetlabs/puppet-resource_api#167) ([mihaibuzgau](https://github.com/mihaibuzgau))

## [v1.6.4](https://github.com/puppetlabs/puppet-resource_api/tree/v1.6.4) (2019-03-25)
[Full Changelog](puppetlabs/puppet-resource_api@v1.8.1...v1.6.4)

**Merged pull requests:**

- Add `implementations` to reserved bolt keywords [\#165](puppetlabs/puppet-resource_api#165) ([DavidS](https://github.com/DavidS))
- \(MAINT\) Bump version [\#164](puppetlabs/puppet-resource_api#164) ([sebastian-miclea](https://github.com/sebastian-miclea))
- Release prep for v1.8.1 [\#163](puppetlabs/puppet-resource_api#163) ([DavidS](https://github.com/DavidS))

# Changelog

All significant changes to this repo will be summarized in this file.


## [v1.8.1](https://github.com/puppetlabs/puppet-resource_api/tree/v1.8.1) (2019-03-13)
[Full Changelog](puppetlabs/puppet-resource_api@v1.8.0...v1.8.1)

**Fixed bugs:**

- \(maint\) Fixes sensitive transport values where absent keys are wrapped [\#161](puppetlabs/puppet-resource_api#161) ([da-ar](https://github.com/da-ar))

**Merged pull requests:**

- 1.6.x mergeup [\#162](puppetlabs/puppet-resource_api#162) ([DavidS](https://github.com/DavidS))
- \(FM-7829\) Update README with transports examples [\#160](puppetlabs/puppet-resource_api#160) ([willmeek](https://github.com/willmeek))
- \(maint\) update release docs [\#159](puppetlabs/puppet-resource_api#159) ([DavidS](https://github.com/DavidS))
- Improve travis cells and testing [\#145](puppetlabs/puppet-resource_api#145) ([DavidS](https://github.com/DavidS))

## [v1.8.0](https://github.com/puppetlabs/puppet-resource_api/tree/v1.8.0) (2019-02-26)
[Full Changelog](puppetlabs/puppet-resource_api@v1.7.0...v1.8.0)

**Implemented enhancements:**

- \(FM-7695\) Transports - the remote content framework [\#157](puppetlabs/puppet-resource_api#157) ([DavidS](https://github.com/DavidS))
- \(FM-7698\) implement `sensitive:true` handling [\#156](puppetlabs/puppet-resource_api#156) ([da-ar](https://github.com/da-ar))
- \(PDK-1271\) Allow a transport to be wrapped and used like a device [\#155](puppetlabs/puppet-resource_api#155) ([da-ar](https://github.com/da-ar))
- \(FM-7701\) Support device providers when using Transport Wrapper [\#154](puppetlabs/puppet-resource_api#154) ([da-ar](https://github.com/da-ar))
- \(FM-7726\) implement `context.transport` to provide access [\#152](puppetlabs/puppet-resource_api#152) ([DavidS](https://github.com/DavidS))
- \(FM-7674\) Allow wrapping a Transport in a legacy Device [\#149](puppetlabs/puppet-resource_api#149) ([da-ar](https://github.com/da-ar))
- \(FM-7600\) Add Transport.connect method [\#148](puppetlabs/puppet-resource_api#148) ([da-ar](https://github.com/da-ar))

**Fixed bugs:**

- \(FM-7690\) Fix transports cache to be environment aware [\#151](puppetlabs/puppet-resource_api#151) ([da-ar](https://github.com/da-ar))

**Merged pull requests:**

- \(FM-7726\) cleanups for the transport  [\#153](puppetlabs/puppet-resource_api#153) ([DavidS](https://github.com/DavidS))
- \(FM-7691,FM-7696\) refactoring definition handling in contexts [\#150](puppetlabs/puppet-resource_api#150) ([DavidS](https://github.com/DavidS))

## [v1.7.0](https://github.com/puppetlabs/puppet-resource_api/tree/v1.7.0) (2019-01-07)
[Full Changelog](puppetlabs/puppet-resource_api@v1.6.3...v1.7.0)

**Implemented enhancements:**

- \(maint\) Validate Type Schema [\#142](puppetlabs/puppet-resource_api#142) ([da-ar](https://github.com/da-ar))

**Merged pull requests:**

- \(maint\) Bundler 2.0 dropped support for Ruby versions \< 2.2 [\#147](puppetlabs/puppet-resource_api#147) ([da-ar](https://github.com/da-ar))
-  \(FM-7597\) RSAPI Transport register function [\#146](puppetlabs/puppet-resource_api#146) ([da-ar](https://github.com/da-ar))
- \(packaging\) Update version to 1.7.0 [\#144](puppetlabs/puppet-resource_api#144) ([branan](https://github.com/branan))

## [v1.6.3](https://github.com/puppetlabs/puppet-resource_api/tree/v1.6.3) (2018-12-11)
[Full Changelog](puppetlabs/puppet-resource_api@v1.6.2...v1.6.3)

**Closed issues:**

- Trying to understand stubbing in the examples [\#136](puppetlabs/puppet-resource_api#136)

**Merged pull requests:**

- \(packaging\) Update version to 1.6.3 [\#143](puppetlabs/puppet-resource_api#143) ([branan](https://github.com/branan))
- Move parameter and property logic to separate classes [\#140](puppetlabs/puppet-resource_api#140) ([bpietraga](https://github.com/bpietraga))
- \(maint\) Predeclare Puppet module before ResourceApi [\#139](puppetlabs/puppet-resource_api#139) ([caseywilliams](https://github.com/caseywilliams))
- \(maint\) minor fix to make data\_type\_handling change work [\#138](puppetlabs/puppet-resource_api#138) ([DavidS](https://github.com/DavidS))
- \(maint\) extract data type handling code [\#137](puppetlabs/puppet-resource_api#137) ([bpietraga](https://github.com/bpietraga))
- Release prep for v1.6.2 [\#135](puppetlabs/puppet-resource_api#135) ([DavidS](https://github.com/DavidS))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants