If you use the Resource API (official docs:
https://puppet.com/docs/puppet/6.3/custom_resources.html, github:
https://github.com/puppetlabs/puppet-resource_api ), adding a canonical
internal representation is as easy as adding the `canonicalize` feature,
and define the required change on the provider:

  def canonicalize(context, resources)
    resources.each do |r|
      r[:array_prop] = r[:array_prop].sort
    end
  end


The resource api also makes a lot of other pain of developing types and
providers go away, and supports all puppet versions from 4.7


Regard, David

On Fri, Mar 15, 2019 at 6:54 AM Dirk Heinrichs <[email protected]>
wrote:

> Hi,
>
> I've written a custom type that has an array property. I quickly found out
> that it isn't idempotent unless the array is sorted. Turned out that it was
> easy to sort the current values in the provider but I couldn't find out how
> to properly sort the input values w/o putting that burden on the user of
> the type. I tried with munge like this:
>
> newproperty(:array_prop, :array_matching => :all) do
> munge do |value|
> value.sort
> end
> end
> but it seems that just gets the first array element as string, which is
> neither obvious nor intuitive.
>
> Is there any other way than having to use
>
> mytype { 'title':
> ...
> array_prop => sort($array),
> ...
> }
>
> ?
>
> Thanks...
>
> Dirk
>
> --
>
> *Dirk Heinrichs*
> Senior Systems Engineer, Delivery Pipeline
> OpenText ™ Discovery | Recommind
> *Phone*: +49 2226 15966 18 <+49%202226%201596618>
> *Email*: [email protected]
> *Website*: www.recommind.de
> Recommind GmbH, Von-Liebig-Straße 1, 53359 Rheinbach
> <https://maps.google.com/?q=Von-Liebig-Stra%C3%9Fe+1,+53359+Rheinbach&entry=gmail&source=g>
> Vertretungsberechtigte Geschäftsführer Gordon Davies, Madhu Ranganathan,
> Christian Waida, Registergericht Amtsgericht Bonn, Registernummer HRB 10646
> This e-mail may contain confidential and/or privileged information. If you
> are not the intended recipient (or have received this e-mail in error)
> please notify the sender immediately and destroy this e-mail. Any
> unauthorized copying, disclosure or distribution of the material in this
> e-mail is strictly forbidden
> Diese E-Mail enthält vertrauliche und/oder rechtlich geschützte
> Informationen. Wenn Sie nicht der richtige Adressat sind oder diese E-Mail
> irrtümlich erhalten haben, informieren Sie bitte sofort den Absender und
> vernichten Sie diese Mail. Das unerlaubte Kopieren sowie die unbefugte
> Weitergabe dieser Mail sind nicht gestattet.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Puppet Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/puppet-users/b50e9e0461472e2300db026f567a8ddec77d5cfc.camel%40opentext.com
> <https://groups.google.com/d/msgid/puppet-users/b50e9e0461472e2300db026f567a8ddec77d5cfc.camel%40opentext.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>
-- 
Cheers, David

https://twitter.com/dev_el_ops

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/CALF7fHb-mnL%2BSPa3rNBeoMVvxZDneu9bMYNv6Hgk5-cjPCn_aw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to