puppet-resource_api 1.8.13 → 1.8.14

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5413e02d045402f7d15951366174c814df1c910853b7496666ff118cb5ec0be1
4
- data.tar.gz: c08cf96dc16809a09c25240c7566cebf96e0e5dc2c012e34bb81e3e2b3f45ec9
3
+ metadata.gz: 535559ec94778cea613ca61f7fd96309506730c7a79b7b081e198cea19739db0
4
+ data.tar.gz: afc626bed3349a334d7a25df3950f56ce997f6a607e8bdbe156c38b631c98d4a
5
5
  SHA512:
6
- metadata.gz: ed1d3489b89572098e0295ec6b18cc5806d6baca319bde52e3f2b6727af965ec304ca25828c0de902cb5ee8c2b400bd06c0ef824d81b0697328676503d712034
7
- data.tar.gz: 86cefc9bd04982603b80e15217a2074c45dc1e8c462e886bd403d16dcf8e08282e1e82aac2dfeadcc9459c4fae1e5c66e60379d909428a01172ece42a04b8d57
6
+ metadata.gz: c587b8c92ed10ec5329cb80c00968003b8f0a95f51e62002b26c4b446f48f517754ebf2344542806411e81a239f3f1bc56d56574652ad34624076726ed9880b8
7
+ data.tar.gz: b2fd76ef2a2cf6ae5e1f9f18022a318012ec29dbfbc4af6232b7bdb6481e5affeeb9f77c471fd0195e6401427656f854ac4c4083202b742c3be5772bbe9ba1fb
@@ -0,0 +1,12 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: bundler
4
+ directory: "/"
5
+ schedule:
6
+ interval: daily
7
+ time: "13:00"
8
+ open-pull-requests-limit: 10
9
+ ignore:
10
+ - dependency-name: rubocop
11
+ versions:
12
+ - "> 0.57.0"
data/.rubocop.yml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  require: rubocop-rspec
3
3
  AllCops:
4
- TargetRubyVersion: '2.1'
4
+ TargetRubyVersion: '2.5'
5
5
  Include:
6
6
  - "**/*.rb"
7
7
  Exclude:
data/.travis.yml CHANGED
@@ -15,13 +15,6 @@ jobs:
15
15
  include:
16
16
  - rvm: 2.4.3
17
17
  env: PUPPET_GEM_VERSION='~> 5' SIMPLECOV=yes # 5.5
18
- - env: RVM="jruby-1.7.26" PUPPET_GEM_VERSION='~> 5' JRUBY_OPTS="--debug" SIMPLECOV=yes
19
- dist: trusty
20
- before_cache: pushd ~/.rvm && rm -rf archives rubies/ruby-2.2.7 rubies/ruby-2.3.4 && popd
21
- cache:
22
- bundler: true
23
- directories: [~/.rvm]
24
- before_install: rvm use jruby-1.7.26 --install --binary --fuzzy && gem install bundler -v '~> 1.7.0'
25
18
  # disable coverage on jruby9k as this confuses codecov
26
19
  - env: RVM="jruby-9.1.9.0" PUPPET_GEM_VERSION='~> 5' JRUBY_OPTS="--debug"
27
20
  dist: trusty
@@ -35,45 +28,16 @@ jobs:
35
28
  - rvm: 2.5.1
36
29
  env: CHECK=license_finder
37
30
  bundler_args: ""
38
-
39
- - rvm: 2.4.3
40
- env: PUPPET_GEM_VERSION='~> 5.4.0'
41
- - rvm: 2.4.2
42
- env: PUPPET_GEM_VERSION='~> 5.3.0'
43
- - rvm: 2.4.1
44
- env: PUPPET_GEM_VERSION='~> 5.2.0'
45
- - rvm: 2.4.1
46
- env: PUPPET_GEM_VERSION='~> 5.1.0'
47
- - rvm: 2.4.1
48
- env: PUPPET_GEM_VERSION='~> 5.0.0'
49
- - rvm: 2.1.9
50
- env: PUPPET_GEM_VERSION='~> 4' SIMPLECOV=yes # 4.10
51
- before_install:
52
- - gem install bundler -v '< 2'
53
- - rvm: 2.1.9
54
- env: PUPPET_GEM_VERSION='~> 4.9.0'
55
- before_install:
56
- - gem install bundler -v '< 2'
57
- - rvm: 2.1.9
58
- env: PUPPET_GEM_VERSION='~> 4.8.0'
59
- before_install:
60
- - gem install bundler -v '< 2'
61
- - rvm: 2.1.9
62
- env: PUPPET_GEM_VERSION='~> 4.7.0'
63
- before_install:
64
- - gem install bundler -v '< 2'
65
- - rvm: 2.5.1
66
- env: PUPPET_GEM_VERSION='~> 6' # 6.0, soon 6.1
67
- - rvm: 2.5.1
68
- env: PUPPET_GEM_VERSION='~> 6.0'
69
- - rvm: 2.5.1
70
- env: PUPPET_GEM_VERSION='https://github.com/puppetlabs/puppet.git#master'
71
- - rvm: 2.5.1
72
- env: PUPPET_GEM_VERSION='https://github.com/puppetlabs/puppet.git#6.0.x'
31
+ - rvm: 2.5.7
32
+ env: PUPPET_GEM_VERSION='~> 6' SIMPLECOV=yes # latest 6 release
33
+ - rvm: 2.5.7
34
+ env: PUPPET_GEM_VERSION='~> 6.14.0'
35
+ - rvm: 2.5.7
36
+ env: PUPPET_GEM_VERSION='https://github.com/puppetlabs/puppet.git#main'
37
+ - rvm: 2.7
38
+ env: PUPPET_GEM_VERSION='https://github.com/puppetlabs/puppet.git#main'
73
39
  - rvm: 2.4.3
74
40
  env: PUPPET_GEM_VERSION='https://github.com/puppetlabs/puppet.git#5.5.x'
75
- - rvm: 2.1.9
76
- env: PUPPET_GEM_VERSION='https://github.com/puppetlabs/puppet.git#4.10.x'
77
41
  notifications:
78
42
  slack:
79
43
  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,47 @@
3
3
  All significant changes to this repo will be summarized in this file.
4
4
 
5
5
 
6
+ ## [v1.8.14](https://github.com/puppetlabs/puppet-resource_api/tree/v1.8.14) (2021-06-09)
7
+
8
+ [Full Changelog](https://github.com/puppetlabs/puppet-resource_api/compare/1.8.13...v1.8.14)
9
+
10
+ **Implemented enhancements:**
11
+
12
+ - \(GH-225\) Add support for custom insync [\#285](https://github.com/puppetlabs/puppet-resource_api/pull/285) ([michaeltlombardi](https://github.com/michaeltlombardi))
13
+ - Improve type validation error messages to show expected types [\#279](https://github.com/puppetlabs/puppet-resource_api/pull/279) ([timidri](https://github.com/timidri))
14
+ - Support `puppet device --resource ... --to_yaml` invocation; drop puppet4 and jruby 1.7 testing [\#278](https://github.com/puppetlabs/puppet-resource_api/pull/278) ([timidri](https://github.com/timidri))
15
+
16
+ **Fixed bugs:**
17
+
18
+ - Git tag 1.8.13 exists, but missing on rubygems.org / in CHANGELOG.md [\#266](https://github.com/puppetlabs/puppet-resource_api/issues/266)
19
+
20
+ **Closed issues:**
21
+
22
+ - CHANGELOG.md entries are missing for latest releases? [\#258](https://github.com/puppetlabs/puppet-resource_api/issues/258)
23
+
24
+ **Merged pull requests:**
25
+
26
+ - Upgrade to GitHub-native Dependabot [\#287](https://github.com/puppetlabs/puppet-resource_api/pull/287) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
27
+ - \(IAC-1455\) - Removal of Inappropriate Terminology [\#283](https://github.com/puppetlabs/puppet-resource_api/pull/283) ([david22swan](https://github.com/david22swan))
28
+ - Update puppetlabs\_spec\_helper requirement from ~\> 2.7 to ~\> 3.0 [\#281](https://github.com/puppetlabs/puppet-resource_api/pull/281) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
29
+ - \(maint\) Update Puppet VS Code Extension ID [\#277](https://github.com/puppetlabs/puppet-resource_api/pull/277) ([jpogran](https://github.com/jpogran))
30
+ - \(IAC-859\) Add ruby 2.7 to test matrix [\#276](https://github.com/puppetlabs/puppet-resource_api/pull/276) ([DavidS](https://github.com/DavidS))
31
+ - \(maint\) Cleanup gemfile and fix codecov dependency [\#275](https://github.com/puppetlabs/puppet-resource_api/pull/275) ([DavidS](https://github.com/DavidS))
32
+ - Language correction [\#270](https://github.com/puppetlabs/puppet-resource_api/pull/270) ([epackorigan](https://github.com/epackorigan))
33
+ - \(maint\) Update CHANGELOG [\#268](https://github.com/puppetlabs/puppet-resource_api/pull/268) ([DavidS](https://github.com/DavidS))
34
+ - \(maint\) update test matrix for current supported versions; remove older versions to cut down on resource usage [\#265](https://github.com/puppetlabs/puppet-resource_api/pull/265) ([DavidS](https://github.com/DavidS))
35
+ - \(maint\) Mock Hocon.load\(...\) [\#263](https://github.com/puppetlabs/puppet-resource_api/pull/263) ([IrimieBogdan](https://github.com/IrimieBogdan))
36
+ - Update rake requirement from ~\> 10.0 to ~\> 13.0 [\#262](https://github.com/puppetlabs/puppet-resource_api/pull/262) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
37
+ - \(maint\) update Gemfile to allow use of non-vulnerable rake version 12.3.3 [\#260](https://github.com/puppetlabs/puppet-resource_api/pull/260) ([DavidS](https://github.com/DavidS))
38
+
39
+ ## [1.8.13](https://github.com/puppetlabs/puppet-resource_api/tree/1.8.13) (2020-02-19)
40
+
41
+ [Full Changelog](https://github.com/puppetlabs/puppet-resource_api/compare/1.8.12...1.8.13)
42
+
43
+ **Merged pull requests:**
44
+
45
+ - \(IAC-274\) update CHANGELOG [\#259](https://github.com/puppetlabs/puppet-resource_api/pull/259) ([DavidS](https://github.com/DavidS))
46
+
6
47
  ## [1.8.12](https://github.com/puppetlabs/puppet-resource_api/tree/1.8.12) (2020-02-03)
7
48
 
8
49
  [Full Changelog](https://github.com/puppetlabs/puppet-resource_api/compare/1.8.11...1.8.12)
@@ -48,7 +89,7 @@ All significant changes to this repo will be summarized in this file.
48
89
 
49
90
  **Merged pull requests:**
50
91
 
51
- - \(FM-8740\): Documentation tweaks based on most recent walkthrough [\#246](https://github.com/puppetlabs/puppet-resource_api/pull/246) ([cmccrisken-puppet](https://github.com/cmccrisken-puppet))
92
+ - \(FM-8740\): Documentation tweaks based on most recent walkthrough [\#246](https://github.com/puppetlabs/puppet-resource_api/pull/246) ([sanfrancrisko](https://github.com/sanfrancrisko))
52
93
 
53
94
  ## [1.8.9](https://github.com/puppetlabs/puppet-resource_api/tree/1.8.9) (2019-10-03)
54
95
 
@@ -86,19 +127,28 @@ All significant changes to this repo will be summarized in this file.
86
127
  **Merged pull requests:**
87
128
 
88
129
  - \(FM-8485\) - Addition of CODEOWNERS file [\#203](https://github.com/puppetlabs/puppet-resource_api/pull/203) ([david22swan](https://github.com/david22swan))
89
- - \(MODULES-9258\) Improve referencing and add summary [\#199](https://github.com/puppetlabs/puppet-resource_api/pull/199) ([MaxMagill](https://github.com/MaxMagill))
130
+ - \(MODULES-9258\) Improve referencing and add summary [\#199](https://github.com/puppetlabs/puppet-resource_api/pull/199) ([maxiegit](https://github.com/maxiegit))
90
131
  - \(maint\) Pin both Jruby cells to use `dist: trusty` [\#197](https://github.com/puppetlabs/puppet-resource_api/pull/197) ([da-ar](https://github.com/da-ar))
91
132
 
92
133
  ## [1.8.6](https://github.com/puppetlabs/puppet-resource_api/tree/1.8.6) (2019-07-04)
93
- [Full Changelog](https://github.com/puppetlabs/puppet-resource_api/compare/1.6.5...1.8.6)
94
134
 
95
- ## [1.6.5](https://github.com/puppetlabs/puppet-resource_api/tree/1.6.5) (2019-07-04)
96
- [Full Changelog](https://github.com/puppetlabs/puppet-resource_api/compare/1.8.5...1.6.5)
135
+ [Full Changelog](https://github.com/puppetlabs/puppet-resource_api/compare/1.6.5...1.8.6)
97
136
 
98
137
  **Implemented enhancements:**
99
138
 
100
139
  - \(SERVER-2470\) list\_all\_transports implementation for puppetserver [\#187](https://github.com/puppetlabs/puppet-resource_api/pull/187) ([DavidS](https://github.com/DavidS))
101
140
 
141
+ **Merged pull requests:**
142
+
143
+ - Merge 1.6.x [\#194](https://github.com/puppetlabs/puppet-resource_api/pull/194) ([da-ar](https://github.com/da-ar))
144
+ - \(packaging\) Revert to version '1.8.5' \[no-promote\] [\#192](https://github.com/puppetlabs/puppet-resource_api/pull/192) ([gimmyxd](https://github.com/gimmyxd))
145
+ - \(packaging\) Bump to version '1.9.0' \[no-promote\] [\#191](https://github.com/puppetlabs/puppet-resource_api/pull/191) ([gimmyxd](https://github.com/gimmyxd))
146
+ - \(maint\) retrofitting changelog for the last couple of releases [\#190](https://github.com/puppetlabs/puppet-resource_api/pull/190) ([DavidS](https://github.com/DavidS))
147
+
148
+ ## [1.6.5](https://github.com/puppetlabs/puppet-resource_api/tree/1.6.5) (2019-07-04)
149
+
150
+ [Full Changelog](https://github.com/puppetlabs/puppet-resource_api/compare/1.8.5...1.6.5)
151
+
102
152
  **Fixed bugs:**
103
153
 
104
154
  - \(MODULES-9428\) make the composite namevar implementation usable [\#174](https://github.com/puppetlabs/puppet-resource_api/pull/174) ([DavidS](https://github.com/DavidS))
@@ -106,18 +156,17 @@ All significant changes to this repo will be summarized in this file.
106
156
  **Merged pull requests:**
107
157
 
108
158
  - \(packaging\) Bump to 1.6.5 [\#196](https://github.com/puppetlabs/puppet-resource_api/pull/196) ([gimmyxd](https://github.com/gimmyxd))
109
- - Merge 1.6.x [\#194](https://github.com/puppetlabs/puppet-resource_api/pull/194) ([da-ar](https://github.com/da-ar))
110
159
  - \(maint\) test fixes [\#193](https://github.com/puppetlabs/puppet-resource_api/pull/193) ([DavidS](https://github.com/DavidS))
111
- - \(packaging\) Revert to version '1.8.5' \[no-promote\] [\#192](https://github.com/puppetlabs/puppet-resource_api/pull/192) ([gimmyxd](https://github.com/gimmyxd))
112
- - \(packaging\) Bump to version '1.9.0' \[no-promote\] [\#191](https://github.com/puppetlabs/puppet-resource_api/pull/191) ([gimmyxd](https://github.com/gimmyxd))
113
- - \(maint\) retrofitting changelog for the last couple of releases [\#190](https://github.com/puppetlabs/puppet-resource_api/pull/190) ([DavidS](https://github.com/DavidS))
114
160
 
115
161
  ## [1.8.5](https://github.com/puppetlabs/puppet-resource_api/tree/1.8.5) (2019-06-24)
162
+
116
163
  [Full Changelog](https://github.com/puppetlabs/puppet-resource_api/compare/1.8.4...1.8.5)
117
164
 
118
165
  **Fixed bugs:**
119
166
 
120
167
  - \(maint\) Mergeup 1.6.x: FM-7839, desc/docs cleanup [\#186](https://github.com/puppetlabs/puppet-resource_api/pull/186) ([DavidS](https://github.com/DavidS))
168
+ - \(maint\) backport minor fixes from master to 1.6.x [\#184](https://github.com/puppetlabs/puppet-resource_api/pull/184) ([DavidS](https://github.com/DavidS))
169
+ - \(maint\) implement `desc`/`docs` fallback [\#177](https://github.com/puppetlabs/puppet-resource_api/pull/177) ([DavidS](https://github.com/DavidS))
121
170
 
122
171
  **Merged pull requests:**
123
172
 
@@ -127,18 +176,17 @@ All significant changes to this repo will be summarized in this file.
127
176
  - \(maint\) make test order really random [\#175](https://github.com/puppetlabs/puppet-resource_api/pull/175) ([DavidS](https://github.com/DavidS))
128
177
 
129
178
  ## [1.8.4](https://github.com/puppetlabs/puppet-resource_api/tree/1.8.4) (2019-06-12)
179
+
130
180
  [Full Changelog](https://github.com/puppetlabs/puppet-resource_api/compare/1.8.3...1.8.4)
131
181
 
132
182
  **Implemented enhancements:**
133
183
 
134
- - \(FM-7839\) Implement `to\_json` method for ResourceShim [\#168](https://github.com/puppetlabs/puppet-resource_api/pull/168) ([da-ar](https://github.com/da-ar))
184
+ - \(FM-7839\) Implement `to_json` method for ResourceShim [\#168](https://github.com/puppetlabs/puppet-resource_api/pull/168) ([da-ar](https://github.com/da-ar))
135
185
 
136
186
  **Fixed bugs:**
137
187
 
138
- - \(maint\) backport minor fixes from master to 1.6.x [\#184](https://github.com/puppetlabs/puppet-resource_api/pull/184) ([DavidS](https://github.com/DavidS))
139
188
  - \(PUP-9747\) Relax validation for bolt [\#182](https://github.com/puppetlabs/puppet-resource_api/pull/182) ([DavidS](https://github.com/DavidS))
140
189
  - \(maint\) Add to\_hash function to resourceShim for compatibility [\#180](https://github.com/puppetlabs/puppet-resource_api/pull/180) ([da-ar](https://github.com/da-ar))
141
- - \(maint\) implement `desc`/`docs` fallback [\#177](https://github.com/puppetlabs/puppet-resource_api/pull/177) ([DavidS](https://github.com/DavidS))
142
190
 
143
191
  **Closed issues:**
144
192
 
@@ -152,6 +200,7 @@ All significant changes to this repo will be summarized in this file.
152
200
  - \(packaging\) Update reported version to 1.8.4 \[no-promote\] [\#171](https://github.com/puppetlabs/puppet-resource_api/pull/171) ([gimmyxd](https://github.com/gimmyxd))
153
201
 
154
202
  ## [1.8.3](https://github.com/puppetlabs/puppet-resource_api/tree/1.8.3) (2019-04-12)
203
+
155
204
  [Full Changelog](https://github.com/puppetlabs/puppet-resource_api/compare/1.8.2...1.8.3)
156
205
 
157
206
  **Fixed bugs:**
@@ -163,30 +212,22 @@ All significant changes to this repo will be summarized in this file.
163
212
  - \(PA-2496\) Bump version and remove v from version number [\#170](https://github.com/puppetlabs/puppet-resource_api/pull/170) ([mihaibuzgau](https://github.com/mihaibuzgau))
164
213
 
165
214
  ## [1.8.2](https://github.com/puppetlabs/puppet-resource_api/tree/1.8.2) (2019-04-10)
215
+
166
216
  [Full Changelog](https://github.com/puppetlabs/puppet-resource_api/compare/v1.6.4...1.8.2)
167
217
 
168
218
  **Merged pull requests:**
169
219
 
170
220
  - \(packaging\) Update reported version to 1.8.2 \[no-promote\] [\#167](https://github.com/puppetlabs/puppet-resource_api/pull/167) ([mihaibuzgau](https://github.com/mihaibuzgau))
221
+ - Add `implementations` to reserved bolt keywords [\#165](https://github.com/puppetlabs/puppet-resource_api/pull/165) ([DavidS](https://github.com/DavidS))
222
+ - Release prep for v1.8.1 [\#163](https://github.com/puppetlabs/puppet-resource_api/pull/163) ([DavidS](https://github.com/DavidS))
171
223
 
172
224
  ## [v1.6.4](https://github.com/puppetlabs/puppet-resource_api/tree/v1.6.4) (2019-03-25)
173
- [Full Changelog](https://github.com/puppetlabs/puppet-resource_api/compare/v1.8.1...v1.6.4)
174
-
175
- **Implemented enhancements:**
176
225
 
177
- - \(PDK-1271\) Allow a transport to be wrapped and used like a device [\#155](https://github.com/puppetlabs/puppet-resource_api/pull/155) ([da-ar](https://github.com/da-ar))
226
+ [Full Changelog](https://github.com/puppetlabs/puppet-resource_api/compare/v1.8.1...v1.6.4)
178
227
 
179
228
  **Merged pull requests:**
180
229
 
181
- - Add `implementations` to reserved bolt keywords [\#165](https://github.com/puppetlabs/puppet-resource_api/pull/165) ([DavidS](https://github.com/DavidS))
182
230
  - \(MAINT\) Bump version [\#164](https://github.com/puppetlabs/puppet-resource_api/pull/164) ([sebastian-miclea](https://github.com/sebastian-miclea))
183
- - Release prep for v1.8.1 [\#163](https://github.com/puppetlabs/puppet-resource_api/pull/163) ([DavidS](https://github.com/DavidS))
184
- - 1.6.x mergeup [\#162](https://github.com/puppetlabs/puppet-resource_api/pull/162) ([DavidS](https://github.com/DavidS))
185
-
186
- # Changelog
187
-
188
- All significant changes to this repo will be summarized in this file.
189
-
190
231
 
191
232
  ## [v1.8.1](https://github.com/puppetlabs/puppet-resource_api/tree/v1.8.1) (2019-03-13)
192
233
  [Full Changelog](https://github.com/puppetlabs/puppet-resource_api/compare/v1.8.0...v1.8.1)
@@ -598,4 +639,4 @@ All significant changes to this repo will be summarized in this file.
598
639
  - Workaround missing report back from here to flush\(\) [\#1](https://github.com/puppetlabs/puppet-resource_api/pull/1) ([james-stocks](https://github.com/james-stocks))
599
640
 
600
641
 
601
- \* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
642
+ \* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)*
data/Gemfile CHANGED
@@ -1,46 +1,66 @@
1
- source "https://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
 
3
- git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
3
+ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
4
4
 
5
5
  # Specify your gem's dependencies in puppet-resource_api.gemspec
6
6
  gemspec
7
7
 
8
8
  group :tests do
9
- gem 'codecov'
10
- gem 'rake', '~> 10.0'
9
+ gem 'CFPropertyList'
11
10
  gem 'rspec', '~> 3.0'
12
- # rubocop 0.58 throws when testing against ruby 2.1, so pin to the latest,
13
- # unless we're dealing with jruby...
11
+ gem 'simplecov-console'
12
+
13
+ # the test gems required for module testing
14
+ gem 'puppetlabs_spec_helper', '~> 3.0'
15
+ gem 'rspec-puppet'
16
+
17
+ # since the Resource API runs inside the puppetserver, test against the JRuby versions we ship
18
+ # these require special dependencies to have everything load properly
19
+
20
+ # `codecov` 0.1.17 introduced usage of %i[] which is not recognised by JRuby 1.7
21
+ if RUBY_PLATFORM == 'java' && Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.3.0')
22
+ gem 'codecov', '= 0.1.16'
23
+ else
24
+ gem 'codecov'
25
+ end
26
+
27
+ # `rake` dropped support for older versions of ruby a while back
28
+ if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.1.0')
29
+ gem 'rake', '11.3.0'
30
+ elsif Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.2.0')
31
+ gem 'rake', '12.3.3'
32
+ else
33
+ gem 'rake', '~> 13.0'
34
+ end
35
+
36
+ # rubocop is special, as usual
14
37
  if RUBY_PLATFORM == 'java'
15
38
  # load a rubocop version that works on java for the Rakefile
16
39
  gem 'parser', '2.3.3.1'
17
40
  gem 'rubocop', '0.41.2'
18
- # JRuby 1.7 does not like json 2.3.0, jruby 9.1.9.0 has RUBY_VERSION == '2.3.3'
19
- gem 'json', '2.2.0' if Gem::Version.new(RUBY_VERSION) <= Gem::Version.new('2.3.0')
20
41
  elsif Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.2.0')
42
+ # rubocop 0.58 throws when testing against ruby 2.1, so pin to the latest version that works
21
43
  gem 'rubocop', '0.57.2'
22
- # the last version of parallel to support ruby 2.1
23
- gem 'parallel', '1.13.0'
24
44
  gem 'rubocop-rspec'
25
45
  else
26
46
  # 2.1-compatible analysis was dropped after version 0.58
27
47
  # This needs to be removed once we drop puppet4 support.
28
48
  gem 'rubocop', '~> 0.57.0'
29
49
  gem 'rubocop-rspec'
30
- # license_finder does not install on windows using older versions of rubygems.
31
- # ruby 2.4 is confirmed working on appveyor.
32
- gem 'license_finder' if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.4.0')
33
50
  end
34
- gem 'simplecov-console'
35
- # the test gems required for module testing
36
- gem 'puppetlabs_spec_helper', '~> 2.7'
37
- gem 'rspec-puppet'
38
51
 
39
- gem 'CFPropertyList'
52
+ # JRuby 1.7 does not like json 2.3.0, jruby 9.1.9.0 has RUBY_VERSION == '2.3.3'
53
+ gem 'json', '2.2.0' if RUBY_PLATFORM == 'java' && Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.3.0')
54
+ # the last version of parallel to support ruby 2.1
55
+ gem 'parallel', '1.13.0' if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.2.0')
56
+
57
+ # license_finder does not install on windows using older versions of rubygems.
58
+ # ruby 2.4 is confirmed working on appveyor and we only need to run it on the newest gemset anyways
59
+ gem 'license_finder' if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.4.0')
40
60
  end
41
61
 
42
62
  group :development do
43
- gem 'github_changelog_generator', '~> 1.14'
63
+ gem 'github_changelog_generator', '~> 1.15' if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.3.0')
44
64
  gem 'pry-byebug'
45
65
  end
46
66
 
data/HISTORY.md CHANGED
@@ -1,8 +1,3 @@
1
- # Changelog
2
-
3
- All significant changes to this repo will be summarized in this file.
4
-
5
-
6
1
  ## [v1.8.1](https://github.com/puppetlabs/puppet-resource_api/tree/v1.8.1) (2019-03-13)
7
2
  [Full Changelog](https://github.com/puppetlabs/puppet-resource_api/compare/v1.8.0...v1.8.1)
8
3
 
data/README.md CHANGED
@@ -1,12 +1,12 @@
1
- # Puppet::ResourceApi [![TravisCI Build Status](https://travis-ci.org/puppetlabs/puppet-resource_api.svg?branch=master)](https://travis-ci.org/puppetlabs/puppet-resource_api) [![Appveyor Build status](https://ci.appveyor.com/api/projects/status/8o9s1ax0hs8lm5fd/branch/master?svg=true)](https://ci.appveyor.com/project/puppetlabs/puppet-resource-api/branch/master) [![codecov](https://codecov.io/gh/puppetlabs/puppet-resource_api/branch/master/graph/badge.svg)](https://codecov.io/gh/puppetlabs/puppet-resource_api)
1
+ # Puppet::ResourceApi [![TravisCI Build Status](https://travis-ci.org/puppetlabs/puppet-resource_api.svg?branch=main)](https://travis-ci.org/puppetlabs/puppet-resource_api) [![Appveyor Build status](https://ci.appveyor.com/api/projects/status/8o9s1ax0hs8lm5fd/branch/main?svg=true)](https://ci.appveyor.com/project/puppetlabs/puppet-resource-api/branch/main) [![codecov](https://codecov.io/gh/puppetlabs/puppet-resource_api/branch/main/graph/badge.svg)](https://codecov.io/gh/puppetlabs/puppet-resource_api)
2
2
 
3
- This is an implementation of the [Resource API specification](https://github.com/puppetlabs/puppet-specifications/blob/master/language/resource-api/README.md).
3
+ This is an implementation of the [Resource API specification](https://github.com/puppetlabs/puppet-specifications/blob/main/language/resource-api/README.md).
4
4
 
5
5
  Find a working example of a new-style providers in the [Palo Alto Firewall module](https://github.com/puppetlabs/puppetlabs-panos/):
6
- * [Type](https://github.com/puppetlabs/puppetlabs-panos/blob/master/lib/puppet/type/panos_address.rb)
7
- * [Base provider](https://github.com/puppetlabs/puppetlabs-panos/blob/master/lib/puppet/provider/panos_provider.rb)
8
- * [Actual provider with validation and xml processing](https://github.com/puppetlabs/puppetlabs-panos/blob/master/lib/puppet/provider/panos_address/panos_address.rb)
9
- * [New unit tests](https://github.com/puppetlabs/puppetlabs-panos/blob/master/spec/unit/puppet/provider/panos_provider_spec.rb) for 100% coverage.
6
+ * [Type](https://github.com/puppetlabs/puppetlabs-panos/blob/main/lib/puppet/type/panos_address.rb)
7
+ * [Base provider](https://github.com/puppetlabs/puppetlabs-panos/blob/main/lib/puppet/provider/panos_provider.rb)
8
+ * [Actual provider with validation and xml processing](https://github.com/puppetlabs/puppetlabs-panos/blob/main/lib/puppet/provider/panos_address/panos_address.rb)
9
+ * [New unit tests](https://github.com/puppetlabs/puppetlabs-panos/blob/main/spec/unit/puppet/provider/panos_provider_spec.rb) for 100% coverage.
10
10
 
11
11
  ## [Find the full Resource API documentation here](https://puppet.com/docs/puppet/latest/custom_resources.html)
12
12
 
data/appveyor.yml CHANGED
@@ -6,9 +6,9 @@ branches:
6
6
 
7
7
  environment:
8
8
  matrix:
9
- - RUBY_VERSION: 24-x64
10
- - PUPPET_GEM_VERSION: '~> 4.0'
11
- RUBY_VERSION: 21-x64
9
+ - RUBY_VERSION: 25-x64
10
+ - PUPPET_GEM_VERSION: '~> 5.0'
11
+ RUBY_VERSION: 24-x64
12
12
 
13
13
  install:
14
14
  - set PATH=C:\Ruby%RUBY_VERSION%\bin;C:\mingw-w64\x86_64-6.3.0-posix-seh-rt_v5-rev1\mingw64\bin;%PATH%
data/contrib/pre-commit CHANGED
@@ -1,4 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
2
4
  # Code modified from: https://gist.github.com/hanloong/9849098
3
5
  require 'English'
4
6
 
data/docs/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Resource API hands-on lab
2
2
 
3
- The Resource API hands-on lab walks you through creating a native integration with Puppet. After completely this lab, you will have a fully functioning module to manage Philips HUE lights.
3
+ The Resource API hands-on lab walks you through creating a native integration with Puppet. After completing this lab, you will have a fully functioning module to manage Philips HUE lights.
4
4
 
5
5
  >Note: These labs are intended for both new and experienced developers. If you have any feedback or suggestions for improvement, post it in the [issues section](https://github.com/puppetlabs/puppet-resource_api/issues).
6
6
 
@@ -6,7 +6,7 @@ To start, install Puppet Development Kit (PDK), which provides all the necessary
6
6
 
7
7
  2. If you do not have a Philips HUE hub and bulbs available, you can download the [Hue-Emulator](https://github.com/SteveyO/Hue-Emulator/raw/master/HueEmulator-v0.8.jar). You need to have Java installed to run this.
8
8
 
9
- 3. To edit code, we recommend the cross-platform editor [VSCode](https://code.visualstudio.com/download), with the [Ruby](https://marketplace.visualstudio.com/items?itemName=rebornix.Ruby) and [Puppet](https://marketplace.visualstudio.com/items?itemName=jpogran.puppet-vscode) extensions. There are lots of other extensions that can help you with your development workflow.
9
+ 3. To edit code, we recommend the cross-platform editor [VS Code](https://code.visualstudio.com/download), with the [Ruby](https://marketplace.visualstudio.com/items?itemName=rebornix.Ruby) and [Puppet](https://marketplace.visualstudio.com/items?itemName=puppet.puppet-vscode) extensions. There are lots of other extensions that can help you with your development workflow.
10
10
 
11
11
  4. Git is a version control system that helps you keep track of changes and collaborate with others. As we go through hands-on lab, we will show you some integrations with cloud services. If you have never used git before, ignore this and all related steps.
12
12
 
@@ -87,7 +87,7 @@ david@davids:~/tmp/hue$ git init
87
87
  Initialized empty Git repository in ~/tmp/hue/.git/
88
88
  david@davids:~/tmp/hue$ git add -A
89
89
  david@davids:~/tmp/hue$ git commit -m 'initial commit'
90
- [master (root-commit) 67951dd] initial commit
90
+ [main (root-commit) 67951dd] initial commit
91
91
  26 files changed, 887 insertions(+)
92
92
  create mode 100644 .fixtures.yml
93
93
  create mode 100644 .gitattributes
@@ -84,7 +84,7 @@ I, [2019-06-04T13:43:58.577944 #9390] INFO -- : Creating symlink from spec/fixt
84
84
  david@davids:~/tmp/hue_workshop$
85
85
  ```
86
86
 
87
- * `pdk new task` based on https://github.com/puppetlabs/puppetlabs-panos/blob/master/tasks/apikey.rb
87
+ * `pdk new task` based on https://github.com/puppetlabs/puppetlabs-panos/blob/main/tasks/apikey.rb
88
88
 
89
89
  ```
90
90
  david@davids:~/tmp/hue_workshop$ pdk new task alarm
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'pathname'
2
4
  require 'puppet/resource_api/data_type_handling'
3
5
  require 'puppet/resource_api/glue'
@@ -123,6 +125,22 @@ module Puppet::ResourceApi
123
125
  @rsapi_title
124
126
  end
125
127
 
128
+ def rsapi_canonicalized_target_state
129
+ @rsapi_canonicalized_target_state ||= begin
130
+ # skip puppet's injected metaparams
131
+ actual_params = @parameters.select { |k, _v| type_definition.attributes.key? k }
132
+ target_state = Hash[actual_params.map { |k, v| [k, v.rs_value] }]
133
+ target_state = my_provider.canonicalize(context, [target_state]).first if type_definition.feature?('canonicalize')
134
+ target_state
135
+ end
136
+ @rsapi_canonicalized_target_state
137
+ end
138
+
139
+ def rsapi_current_state
140
+ refresh_current_state unless @rsapi_current_state
141
+ @rsapi_current_state
142
+ end
143
+
126
144
  def to_resource
127
145
  to_resource_shim(super)
128
146
  end
@@ -166,6 +184,21 @@ module Puppet::ResourceApi
166
184
  raise_missing_params if @missing_params.any?
167
185
  end
168
186
 
187
+ # If the custom_insync feature is specified but no insyncable attributes are included
188
+ # in the definition, add the hidden rsapi_custom_insync_trigger property.
189
+ # This property exists *only* to allow a resource without properties to still execute an
190
+ # insync check; there's no point in specifying it in a manifest as it can only have one
191
+ # value; it cannot be specified in a type definition as it should only exist in this case.
192
+ if type_definition.feature?('custom_insync') && type_definition.insyncable_attributes.empty?
193
+ custom_insync_trigger_options = {
194
+ type: 'Enum[do_not_specify_in_manifest]',
195
+ desc: 'A hidden property which enables a type with custom insync to perform an insync check without specifying any insyncable properties',
196
+ default: 'do_not_specify_in_manifest',
197
+ }
198
+
199
+ type_definition.create_attribute_in(self, :rsapi_custom_insync_trigger, :newproperty, Puppet::ResourceApi::Property, custom_insync_trigger_options)
200
+ end
201
+
169
202
  definition[:attributes].each do |name, options|
170
203
  # puts "#{name}: #{options.inspect}"
171
204
 
@@ -189,43 +222,7 @@ module Puppet::ResourceApi
189
222
  parent = Puppet::ResourceApi::Property
190
223
  end
191
224
 
192
- # This call creates a new parameter or property with all work-arounds or
193
- # customizations required by the Resource API applied. Under the hood,
194
- # this maps to the relevant DSL methods in Puppet::Type. See
195
- # https://puppet.com/docs/puppet/6.0/custom_types.html#reference-5883
196
- # for details.
197
- send(param_or_property, name.to_sym, parent: parent) do
198
- if options[:desc]
199
- desc "#{options[:desc]} (a #{options[:type]})"
200
- end
201
-
202
- # The initialize method is called when puppet core starts building up
203
- # type objects. The core passes in a hash of shape { resource:
204
- # #<Puppet::Type::TypeName> }. We use this to pass through the
205
- # required configuration data to the parent (see
206
- # Puppet::ResourceApi::Property, Puppet::ResourceApi::Parameter and
207
- # Puppet::ResourceApi::ReadOnlyParameter).
208
- define_method(:initialize) do |resource_hash|
209
- super(definition[:name], self.class.data_type, name, resource_hash)
210
- end
211
-
212
- # get pops data type object for this parameter or property
213
- define_singleton_method(:data_type) do
214
- @rsapi_data_type ||= Puppet::ResourceApi::DataTypeHandling.parse_puppet_type(
215
- name,
216
- options[:type],
217
- )
218
- end
219
-
220
- # from ValueCreator call create_values which makes alias values and
221
- # default values for properties and params
222
- Puppet::ResourceApi::ValueCreator.create_values(
223
- self,
224
- data_type,
225
- param_or_property,
226
- options,
227
- )
228
- end
225
+ type_definition.create_attribute_in(self, name, param_or_property, parent, options)
229
226
  end
230
227
 
231
228
  def self.instances
@@ -279,11 +276,9 @@ module Puppet::ResourceApi
279
276
  end
280
277
 
281
278
  def retrieve
282
- refresh_current_state unless @rsapi_current_state
283
-
284
- Puppet.debug("Current State: #{@rsapi_current_state.inspect}")
279
+ Puppet.debug("Current State: #{rsapi_current_state.inspect}")
285
280
 
286
- result = Puppet::Resource.new(self.class, title, parameters: @rsapi_current_state)
281
+ result = Puppet::Resource.new(self.class, title, parameters: rsapi_current_state)
287
282
  # puppet needs ensure to be a symbol
288
283
  result[:ensure] = result[:ensure].to_sym if type_definition.ensurable? && result[:ensure].is_a?(String)
289
284
 
@@ -302,10 +297,7 @@ module Puppet::ResourceApi
302
297
  raise_missing_attrs
303
298
 
304
299
  # puts 'flush'
305
- # skip puppet's injected metaparams
306
- actual_params = @parameters.select { |k, _v| type_definition.attributes.key? k }
307
- target_state = Hash[actual_params.map { |k, v| [k, v.rs_value] }]
308
- target_state = my_provider.canonicalize(context, [target_state]).first if type_definition.feature?('canonicalize')
300
+ target_state = rsapi_canonicalized_target_state
309
301
 
310
302
  retrieve unless @rsapi_current_state
311
303
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'puppet/resource_api/type_definition'
2
4
 
3
5
  # rubocop:disable Style/Documentation
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Puppet; module ResourceApi; end; end # predeclare the main module # rubocop:disable Style/Documentation,Style/ClassAndModuleChildren
2
4
 
3
5
  # This module is used to handle data inside types, contains methods for munging
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yaml'
2
4
 
3
5
  module Puppet; end # rubocop:disable Style/Documentation
@@ -35,6 +37,11 @@ module Puppet::ResourceApi
35
37
  end + ['}']).compact.join("\n")
36
38
  end
37
39
 
40
+ # Required to enable `puppet device --resource ... --to_yaml` workflow
41
+ def to_hiera_hash
42
+ to_hierayaml
43
+ end
44
+
38
45
  # Convert our resource to yaml for Hiera purposes.
39
46
  def to_hierayaml
40
47
  attributes = Hash[filtered_keys.map { |k| [k.to_s, values[k]] }]
@@ -52,9 +59,9 @@ module Puppet::ResourceApi
52
59
  values
53
60
  end
54
61
 
55
- # attribute names that are not title or namevars
62
+ # attribute names that are not title, namevars, or rsapi_custom_insync_trigger
56
63
  def filtered_keys
57
- values.keys.reject { |k| k == :title || !attr_def[k] || (attr_def[k][:behaviour] == :namevar && @namevars.size == 1) }
64
+ values.keys.reject { |k| k == :title || k == :rsapi_custom_insync_trigger || !attr_def[k] || (attr_def[k][:behaviour] == :namevar && @namevars.size == 1) }
58
65
  end
59
66
  end
60
67
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'puppet/resource_api/base_context'
2
4
 
3
5
  # Implement Resource API Conext to log through an IO object, defaulting to `$stderr`.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'puppet/util'
2
4
  require 'puppet/parameter'
3
5
 
@@ -13,11 +15,11 @@ class Puppet::ResourceApi::Parameter < Puppet::Parameter
13
15
  # @param attribute_name the name of attribue of the parameter
14
16
  # @param resource_hash the resource hash instance which is passed to the
15
17
  # parent class.
16
- def initialize(type_name, data_type, attribute_name, resource_hash)
18
+ def initialize(type_name, data_type, attribute_name, resource_hash, _referrable_type = nil)
17
19
  @type_name = type_name
18
20
  @data_type = data_type
19
21
  @attribute_name = attribute_name
20
- super(resource_hash) # Pass resource to parent Puppet class.
22
+ super(**resource_hash) # Pass resource to parent Puppet class.
21
23
  end
22
24
 
23
25
  # This method assigns value to the parameter and cleans value.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'puppet/util'
2
4
  require 'puppet/property'
3
5
 
@@ -11,14 +13,31 @@ class Puppet::ResourceApi::Property < Puppet::Property
11
13
  # @param attribute_name the name of attribue of the property
12
14
  # @param resource_hash the resource hash instance which is passed to the
13
15
  # parent class.
14
- def initialize(type_name, data_type, attribute_name, resource_hash)
16
+ def initialize(type_name, data_type, attribute_name, resource_hash, referrable_type = nil)
15
17
  @type_name = type_name
16
18
  @data_type = data_type
17
19
  @attribute_name = attribute_name
18
- # Define class method insync?(is) if the name is :ensure
19
- def_insync? if @attribute_name == :ensure && self.class != Puppet::ResourceApi::Property
20
+ @resource = resource_hash[:resource]
21
+ @referrable_type = referrable_type
22
+
23
+ # Do not want to define insync on the base class because
24
+ # this overrides for everything instead of only for the
25
+ # appropriate instance/class of the property.
26
+ if self.class != Puppet::ResourceApi::Property
27
+ # Define class method insync?(is) if the custom_insync feature flag is set
28
+ if referrable_type&.type_definition&.feature?('custom_insync')
29
+ def_custom_insync?
30
+ if @attribute_name == :rsapi_custom_insync_trigger
31
+ @change_to_s_value = 'Custom insync logic determined that this resource is out of sync'
32
+ end
33
+ # Define class method insync?(is) if the name is :ensure and custom_insync feature flag is not set
34
+ elsif @attribute_name == :ensure
35
+ def_ensure_insync?
36
+ end
37
+ end
38
+
20
39
  # Pass resource to parent Puppet class.
21
- super(resource_hash)
40
+ super(**resource_hash)
22
41
  end
23
42
 
24
43
  # This method returns value of the property.
@@ -69,10 +88,51 @@ class Puppet::ResourceApi::Property < Puppet::Property
69
88
  # method overloaded only for the :ensure property, add option to check if the
70
89
  # rs_value matches is. Only if the class is child of
71
90
  # Puppet::ResourceApi::Property.
72
- def def_insync?
91
+ def def_ensure_insync?
73
92
  define_singleton_method(:insync?) { |is| rs_value.to_s == is.to_s }
74
93
  end
75
94
 
95
+ def def_custom_insync?
96
+ define_singleton_method(:insync?) do |is|
97
+ provider = @referrable_type.my_provider
98
+ context = @referrable_type.context
99
+ should_hash = @resource.rsapi_canonicalized_target_state
100
+ is_hash = @resource.rsapi_current_state
101
+ title = @resource.rsapi_title
102
+
103
+ raise(Puppet::DevError, 'No insync? method defined in the provider; an insync? method must be defined if the custom_insync feature is defined for the type') unless provider.respond_to?(:insync?)
104
+
105
+ provider_insync_result, change_message = provider.insync?(context, title, @attribute_name, is_hash, should_hash)
106
+
107
+ unless provider_insync_result.nil? || change_message.nil? || change_message.empty?
108
+ @change_to_s_value = change_message
109
+ end
110
+
111
+ case provider_insync_result
112
+ when nil
113
+ # If validating ensure and no custom insync was used, check if rs_value matches is.
114
+ return rs_value.to_s == is.to_s if @attribute_name == :ensure
115
+ # Otherwise, super and rely on Puppet::Property.insync?
116
+ super(is)
117
+ when TrueClass, FalseClass
118
+ return provider_insync_result
119
+ else
120
+ # When returning anything else, raise a DevError for a non-idiomatic return
121
+ raise(Puppet::DevError, "Custom insync for #{@attribute_name} returned a #{provider_insync_result.class} with a value of #{provider_insync_result.inspect} instead of true/false; insync? MUST return nil or the boolean true or false") # rubocop:disable Metrics/LineLength
122
+ end
123
+ end
124
+
125
+ define_singleton_method(:change_to_s) do |current_value, newvalue|
126
+ # As defined in the custom insync? method, it is sometimes useful to overwrite the default change messaging;
127
+ # The enables a user to return a more useful change report than a strict "is to should" report.
128
+ # If @change_to_s_value is not set, Puppet writes a generic change notification, like:
129
+ # Notice: /Stage[main]/Main/<type_name>[<name_hash>]/<property name>: <property name> changed <is value> to <should value>
130
+ # If #change_to_s_value is *nil* Puppet writes a weird empty message like:
131
+ # Notice: /Stage[main]/Main/<type_name>[<name_hash>]/<property name>:
132
+ @change_to_s_value || super(current_value, newvalue)
133
+ end
134
+ end
135
+
76
136
  # puppet symbolizes some values through puppet/parameter/value.rb
77
137
  # (see .convert()), but (especially) Enums are strings. specifying a
78
138
  # munge block here skips the value_collection fallback in
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'puppet/resource_api/base_context'
2
4
  require 'puppet/util/logging'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'puppet/util'
2
4
  require 'puppet/resource_api/parameter'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Puppet; end # rubocop:disable Style/Documentation
2
4
 
3
5
  module Puppet::ResourceApi
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Puppet::ResourceApi; end # rubocop:disable Style/Documentation
2
4
 
3
5
  # Remote target transport API
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'puppet/resource_api/transport'
2
4
  require 'hocon'
3
5
  require 'hocon/config_syntax'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Provides accessor methods for the type being provided
2
4
  module Puppet::ResourceApi
3
5
  # pre-declare class
@@ -15,7 +17,7 @@ module Puppet::ResourceApi
15
17
 
16
18
  # rubocop complains when this is named has_feature?
17
19
  def feature?(feature)
18
- (definition[:features] && definition[:features].include?(feature))
20
+ definition[:features]&.include?(feature)
19
21
  end
20
22
 
21
23
  def title_patterns
@@ -34,10 +36,56 @@ module Puppet::ResourceApi
34
36
  Puppet::ResourceApi::DataTypeHandling.validate_ensure(definition)
35
37
 
36
38
  definition[:features] ||= []
37
- supported_features = %w[supports_noop canonicalize remote_resource simple_get_filter].freeze
39
+ supported_features = %w[supports_noop canonicalize custom_insync remote_resource simple_get_filter].freeze
38
40
  unknown_features = definition[:features] - supported_features
39
41
  Puppet.warning("Unknown feature detected: #{unknown_features.inspect}") unless unknown_features.empty?
40
42
  end
43
+
44
+ # This call creates a new parameter or property with all work-arounds or
45
+ # customizations required by the Resource API applied. Under the hood,
46
+ # this maps to the relevant DSL methods in Puppet::Type. See
47
+ # https://puppet.com/docs/puppet/6.0/custom_types.html#reference-5883
48
+ # for details.
49
+ #
50
+ # type: the Resource API Type the attribute is being created in
51
+ # attribute_name: the name of the attribute being created
52
+ # param_or_property: Whether to call the :newparam or :newproperty method
53
+ # parent: The type of attribute to create: Property, ReadOnly, or Parameter
54
+ # options: The hash of attribute options, including type, desc, default, and behaviour
55
+ def create_attribute_in(type, attribute_name, param_or_property, parent, options)
56
+ type.send(param_or_property, attribute_name.to_sym, parent: parent) do
57
+ if options[:desc]
58
+ desc "#{options[:desc]} (a #{options[:type]})"
59
+ end
60
+
61
+ # The initialize method is called when puppet core starts building up
62
+ # type objects. The core passes in a hash of shape { resource:
63
+ # #<Puppet::Type::TypeName> }. We use this to pass through the
64
+ # required configuration data to the parent (see
65
+ # Puppet::ResourceApi::Property, Puppet::ResourceApi::Parameter and
66
+ # Puppet::ResourceApi::ReadOnlyParameter).
67
+ define_method(:initialize) do |resource_hash|
68
+ super(type.name, self.class.data_type, attribute_name, resource_hash, type)
69
+ end
70
+
71
+ # get pops data type object for this parameter or property
72
+ define_singleton_method(:data_type) do
73
+ @rsapi_data_type ||= Puppet::ResourceApi::DataTypeHandling.parse_puppet_type(
74
+ attribute_name,
75
+ options[:type],
76
+ )
77
+ end
78
+
79
+ # from ValueCreator call create_values which makes alias values and
80
+ # default values for properties and params
81
+ Puppet::ResourceApi::ValueCreator.create_values(
82
+ self,
83
+ data_type,
84
+ param_or_property,
85
+ options,
86
+ )
87
+ end
88
+ end
41
89
  end
42
90
 
43
91
  # RSAPI Transport schema
@@ -88,6 +136,13 @@ module Puppet::ResourceApi
88
136
  }.keys
89
137
  end
90
138
 
139
+ def insyncable_attributes
140
+ @insyncable_attributes ||= attributes.reject { |_name, options|
141
+ # Only attributes without any behavior are normal Puppet Properties and get insynced
142
+ options.key?(:behaviour)
143
+ }.keys
144
+ end
145
+
91
146
  def validate_schema(definition, attr_key)
92
147
  raise Puppet::DevError, '%{type_class} must be a Hash, not `%{other_type}`' % { type_class: self.class.name, other_type: definition.class } unless definition.is_a?(Hash)
93
148
  @attributes = definition[attr_key]
@@ -110,6 +165,7 @@ module Puppet::ResourceApi
110
165
  Puppet.warning('`%{name}` has no documentation, add it using a `desc` key' % { name: definition[:name] }) unless definition.key? :desc
111
166
 
112
167
  attributes.each do |key, attr|
168
+ raise Puppet::DevError, '`rsapi_custom_insync_trigger` cannot be specified as an attribute; it is reserved for propertyless types with the custom_insync feature' if key == :rsapi_custom_insync_trigger # rubocop:disable Metrics/LineLength
113
169
  raise Puppet::DevError, "`#{definition[:name]}.#{key}` must be a Hash, not a #{attr.class}" unless attr.is_a? Hash
114
170
  raise Puppet::DevError, "`#{definition[:name]}.#{key}` has no type" unless attr.key? :type
115
171
  Puppet.warning('`%{name}.%{key}` has no documentation, add it using a `desc` key' % { name: definition[:name], key: key }) unless attr.key? :desc
@@ -194,7 +250,7 @@ module Puppet::ResourceApi
194
250
  if is_sensitive
195
251
  bad_vals[key] = '<< redacted value >> ' + error_message unless error_message.nil?
196
252
  else
197
- bad_vals[key] = value unless error_message.nil?
253
+ bad_vals[key] = "#{value} (#{error_message})" unless error_message.nil?
198
254
  end
199
255
  end
200
256
  bad_vals
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Puppet; module ResourceApi; end; end # predeclare the main module # rubocop:disable Style/Documentation,Style/ClassAndModuleChildren
2
4
 
3
5
  # This module is responsible for setting default and alias values for the
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Puppet
2
4
  module ResourceApi
3
- VERSION = '1.8.13'.freeze
5
+ VERSION = '1.8.14'
4
6
  end
5
7
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'hocon'
2
4
  require 'hocon/config_syntax'
3
5
 
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.13
4
+ version: 1.8.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Schmitt
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-04-21 00:00:00.000000000 Z
11
+ date: 2021-06-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hocon
@@ -33,6 +33,7 @@ extra_rdoc_files: []
33
33
  files:
34
34
  - ".dependency_decisions.yml"
35
35
  - ".fixtures.yml"
36
+ - ".github/dependabot.yml"
36
37
  - ".gitignore"
37
38
  - ".rspec"
38
39
  - ".rubocop.yml"
@@ -99,7 +100,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
99
100
  - !ruby/object:Gem::Version
100
101
  version: '0'
101
102
  requirements: []
102
- rubygems_version: 3.0.0
103
+ rubygems_version: 3.2.5
103
104
  signing_key:
104
105
  specification_version: 4
105
106
  summary: This library provides a simple way to write new native resources for puppet.