puppet-resource_api 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d1109f2b5351f7edd2125d6636807aa1792597d33e5c2ee13be26a9f95cfe3fd
4
- data.tar.gz: 90243f80c3466f014a86fd4c5c4e0fd83521147f173764f95b2163fc25ce67ca
3
+ metadata.gz: 8adaec9101c4bdf2bfaabfbb4ef87147d37c7360dd5008a8da7d0d653bd4071c
4
+ data.tar.gz: a81e2f4b6e643587b74e7ae4313e9b011f76aeec10b09abc292d9bb65083df2a
5
5
  SHA512:
6
- metadata.gz: 46eb1a5d01c9f75ba77c558c12415a73b9f9a153f922c7817b9f4efb8d313183e7def1dc79e1bba806aecc2e2436e5985f2896eaafcd4b286a900f784c8538f0
7
- data.tar.gz: 95930d409605838df56773c7c95be80f0124bb90a55bb841cb19f8621a486d48ee4b8872a12909bfccf9ce98986ac571493ac799cf0d12259f0de1aa00223161
6
+ metadata.gz: f910f226a69685dcdadd6391b5ad4f2b5064f1861fdc06c8a7ed36d84f4da49d850983550809eb7053959d94799946c8c6109e0c3c848dbe9649d2bbc23f4f20
7
+ data.tar.gz: 47ba949ac49e663add1eed1d9648d5b4642346ac4ecbf944447670352e9aa8f75813d5964cab7fd9f2793e1ae49b41153b24d54b0e9bb5884484284d101bb0ca
data/.travis.yml CHANGED
@@ -10,27 +10,38 @@ script:
10
10
  cache: bundler
11
11
  matrix:
12
12
  include:
13
- - rvm: 2.4.1
14
- env: PUPPET_GEM_VERSION='~> 5'
13
+ - rvm: 2.4.3
14
+ env: PUPPET_GEM_VERSION='~> 5' # 5.5
15
15
  - rvm: jruby-1.7.26
16
16
  env: PUPPET_GEM_VERSION='~> 5' JRUBY_OPTS="--debug"
17
17
  - rvm: jruby-9.1.9.0
18
18
  env: PUPPET_GEM_VERSION='~> 5' JRUBY_OPTS="--debug"
19
- - rvm: 2.4.1
19
+ - rvm: 2.4.3
20
20
  env: CHECK=rubocop
21
+ - rvm: 2.4.3
22
+ env: CHECK=license_finder
23
+ bundler_args: ""
24
+
25
+ - rvm: 2.4.3
26
+ env: PUPPET_GEM_VERSION='~> 5.4.0'
27
+ - rvm: 2.4.2
28
+ env: PUPPET_GEM_VERSION='~> 5.3.0'
29
+ - rvm: 2.4.1
30
+ env: PUPPET_GEM_VERSION='~> 5.2.0'
31
+ - rvm: 2.4.1
32
+ env: PUPPET_GEM_VERSION='~> 5.1.0'
21
33
  - rvm: 2.4.1
22
34
  env: PUPPET_GEM_VERSION='~> 5.0.0'
23
35
  - rvm: 2.1.9
24
- env: PUPPET_GEM_VERSION='~> 4'
36
+ env: PUPPET_GEM_VERSION='~> 4' # 4.10
25
37
  - rvm: 2.1.9
26
38
  env: PUPPET_GEM_VERSION='~> 4.9.0'
27
39
  - rvm: 2.1.9
28
40
  env: PUPPET_GEM_VERSION='~> 4.8.0'
29
41
  - rvm: 2.1.9
30
42
  env: PUPPET_GEM_VERSION='~> 4.7.0'
31
- - rvm: 2.4.1
32
- env: CHECK=license_finder
33
- bundler_args: ""
43
+ - rvm: 2.4.3
44
+ env: PUPPET_GEM_VERSION='https://github.com/puppetlabs/puppet.git#master'
34
45
  notifications:
35
46
  hipchat:
36
47
  rooms:
data/CHANGELOG.md CHANGED
@@ -3,6 +3,22 @@
3
3
  All significant changes to this repo will be summarized in this file.
4
4
 
5
5
 
6
+ ## [v1.0.2](https://github.com/puppetlabs/puppet-resource_api/tree/v1.0.2) (2018-03-26)
7
+ [Full Changelog](https://github.com/puppetlabs/puppet-resource_api/compare/v1.0.1...v1.0.2)
8
+
9
+ **Implemented enhancements:**
10
+
11
+ - \(PDK-875\) Validate behaviour values when registering a type [\#49](https://github.com/puppetlabs/puppet-resource_api/pull/49) ([da-ar](https://github.com/da-ar))
12
+
13
+ **Fixed bugs:**
14
+
15
+ - \(PDK-882,PDK-883\) validate only when needed [\#48](https://github.com/puppetlabs/puppet-resource_api/pull/48) ([DavidS](https://github.com/DavidS))
16
+ - \(PDK-884\) Handle missing namevars returned by providers [\#47](https://github.com/puppetlabs/puppet-resource_api/pull/47) ([da-ar](https://github.com/da-ar))
17
+
18
+ **Merged pull requests:**
19
+
20
+ - \(PDK-810\) run CI against all the versions [\#46](https://github.com/puppetlabs/puppet-resource_api/pull/46) ([DavidS](https://github.com/DavidS))
21
+
6
22
  ## [v1.0.1](https://github.com/puppetlabs/puppet-resource_api/tree/v1.0.1) (2018-03-23)
7
23
  [Full Changelog](https://github.com/puppetlabs/puppet-resource_api/compare/v1.0.0...v1.0.1)
8
24
 
@@ -12,6 +28,7 @@ All significant changes to this repo will be summarized in this file.
12
28
 
13
29
  **Merged pull requests:**
14
30
 
31
+ - Release prep for v1.0.1 [\#45](https://github.com/puppetlabs/puppet-resource_api/pull/45) ([DavidS](https://github.com/DavidS))
15
32
  - Release prep for v1.0.0 [\#43](https://github.com/puppetlabs/puppet-resource_api/pull/43) ([da-ar](https://github.com/da-ar))
16
33
 
17
34
  ## [v1.0.0](https://github.com/puppetlabs/puppet-resource_api/tree/v1.0.0) (2018-03-23)
data/Gemfile CHANGED
@@ -30,7 +30,7 @@ end
30
30
  # `git://somewhere.git#branch`. You can also use a file source location, which
31
31
  # is specified as `file://some/location/on/disk`.
32
32
  def location_for(place_or_version, fake_version = nil)
33
- if place_or_version =~ /^(git[:@][^#]*)#(.*)/
33
+ if place_or_version =~ /^((?:git|https)[:@][^#]*)#(.*)/
34
34
  [fake_version, { :git => $1, :branch => $2, :require => false }].compact
35
35
  elsif place_or_version =~ /^file:\/\/(.*)/
36
36
  ['>= 0', { :path => File.expand_path($1), :require => false }]
data/README.md CHANGED
@@ -198,10 +198,16 @@ Currently working:
198
198
 
199
199
  There are still a few notable gaps between the implementation and the specification:
200
200
  * Only a single runtime environment (the Puppet commands) is currently implemented.
201
+ * The `:init_only` behaviour is not yet implemented ([PDK-885](https://tickets.puppetlabs.com/browse/PDK-885))
201
202
 
202
203
  Restrictions of running under puppet:
203
204
  * `supports_noop` is not effective, as puppet doesn't call into the type under noop.
204
205
 
206
+ Future possibilities:
207
+ * [Composite Namevars](https://tickets.puppetlabs.com/browse/PDK-531)
208
+ * [Multiple Providers](https://tickets.puppetlabs.com/browse/PDK-530)
209
+ * [Commands API](https://tickets.puppetlabs.com/browse/PDK-847)
210
+
205
211
  ## Development
206
212
 
207
213
  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.
@@ -220,10 +226,10 @@ To cut a new release, from a current `master` checkout:
220
226
  * Update the CHANGELOG
221
227
  * Have a [CHANGELOG_GITHUB_TOKEN](https://github.com/skywinder/github-changelog-generator#github-token) set in your environment
222
228
  * run `rake changelog`
223
- * double check the PRs to make sure they're all tagged correctly
229
+ * double check the PRs to make sure they're all tagged correctly (using the new CHANGELOG for cross-checking)
224
230
  * Check README and other materials for up-to-date-ness
225
231
  * Commit changes with title "Release prep for v<VERSION>"
226
232
  * Upload and PR the release prep to github as normal
227
233
  * Check that CI is green and merge the PR
228
- * Run `rake release[upstream]` to release what just passed CI
229
- * make sure to use the name of the git remote to main repo instead of "upstream"
234
+ * Run `rake release[upstream]` to release from your checkout
235
+ * make sure to use the name of your git remote pointing to main repo instead of "upstream"
@@ -62,7 +62,11 @@ module Puppet::ResourceApi
62
62
 
63
63
  define_method(:initialize) do |attributes|
64
64
  # $stderr.puts "A: #{attributes.inspect}"
65
- attributes = attributes.to_hash if attributes.is_a? Puppet::Resource
65
+ if attributes.is_a? Puppet::Resource
66
+ attributes = attributes.to_hash
67
+ else
68
+ @called_from_resource = true
69
+ end
66
70
  # $stderr.puts "B: #{attributes.inspect}"
67
71
  if feature_support?('canonicalize')
68
72
  attributes = my_provider.canonicalize(context, [attributes])[0]
@@ -76,10 +80,21 @@ module Puppet::ResourceApi
76
80
  missing_attrs = []
77
81
  definition[:attributes].each do |name, options|
78
82
  type = Puppet::Pops::Types::TypeParser.singleton.parse(options[:type])
79
- unless [:read_only, :namevar].include? options[:behaviour]
80
- missing_attrs << name if value(name).nil? && !(type.instance_of? Puppet::Pops::Types::POptionalType)
83
+ # skip read only vars and the namevar
84
+ next if [:read_only, :namevar].include? options[:behaviour]
85
+
86
+ # skip properties if the resource is being deleted
87
+ next if definition[:attributes][:ensure] &&
88
+ value(:ensure) == :absent &&
89
+ options[:behaviour].nil?
90
+
91
+ if value(name).nil? && !(type.instance_of? Puppet::Pops::Types::POptionalType)
92
+ missing_attrs << name
81
93
  end
82
94
  end
95
+
96
+ missing_attrs -= [:ensure] if @called_from_resource
97
+
83
98
  if missing_attrs.any?
84
99
  error_msg = "The following mandatory attributes where not provided:\n * " + missing_attrs.join(", \n * ")
85
100
  raise Puppet::ResourceError, error_msg
@@ -89,6 +104,12 @@ module Puppet::ResourceApi
89
104
  definition[:attributes].each do |name, options|
90
105
  # puts "#{name}: #{options.inspect}"
91
106
 
107
+ if options[:behaviour]
108
+ unless [:read_only, :namevar, :parameter].include? options[:behaviour]
109
+ raise Puppet::ResourceError, "`#{options[:behaviour]}` is not a valid behaviour value"
110
+ end
111
+ end
112
+
92
113
  # TODO: using newparam everywhere would suppress change reporting
93
114
  # that would allow more fine-grained reporting through context,
94
115
  # but require more invest in hooking up the infrastructure to emulate existing data
@@ -200,6 +221,9 @@ module Puppet::ResourceApi
200
221
  property = definition[:attributes][key.first]
201
222
  attr_def[key.first] = property
202
223
  end
224
+ if resource_hash[namevar_name].nil?
225
+ raise Puppet::ResourceError, "`#{name}.get` did not return a value for the `#{namevar_name}` namevar attribute"
226
+ end
203
227
  Puppet::ResourceApi::TypeShim.new(resource_hash[namevar_name], resource_hash, name, namevar_name, attr_def)
204
228
  end
205
229
  end
@@ -1,5 +1,5 @@
1
1
  module Puppet
2
2
  module ResourceApi
3
- VERSION = '1.0.1'.freeze
3
+ VERSION = '1.0.2'.freeze
4
4
  end
5
5
  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.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Schmitt
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-03-23 00:00:00.000000000 Z
11
+ date: 2018-03-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hocon