On 09/08/17 01:10, ggun wrote:
Hi Experts,

I have a requirement as below.
I need to create a Hash from below hiera data.

was_data:
   hs3sourcepath: 'glic.binaries/websphere'
   hdaresponse_file: /opt/software/WAS8.5.5.10_Install.xml
hibmagentpath: /opt/software/agent.installer.linux.gtk.x86_64_1.8.2000.20150303_1526.zip
   hbase_dir: '/opt/was/was855'
   hinstance_name: WebSphere
   was_dmgr_data:
     esa-group-service:
       hgroup: websph
       hdmgr_profile: TST
       hdmgr_cell: CELL
       hcluster_name: CLUSTER
       hpptdmgrsrvport: 8080
     esa-user-profile-service:
       hdmgr_profile: ABC
       hdmgr_cell: PQS
       hcluster_name: IOP
       hpptdmgrsrvport: 0000


I need a hash of above data as
Hash 1 :
     esa-group-service:
       hgroup: websph
       hdmgr_profile: TST
       hdmgr_cell: CELL
       hcluster_name: CLUSTER
       hpptdmgrsrvport: 8080
       hs3sourcepath: 'glic.binaries/websphere'
       hdaresponse_file: /opt/software/WAS8.5.5.10_Install.xml
hibmagentpath: /opt/software/agent.installer.linux.gtk.x86_64_1.8.2000.20150303_1526.zip
       hbase_dir: '/opt/was/was855'
       hinstance_name: WebSphere

Hash 2
   esa-user-profile-service:
       hdmgr_profile: ABC
       hdmgr_cell: PQS
       hcluster_name: IOP
       hpptdmgrsrvport: 0000
       hs3sourcepath: 'glic.binaries/websphere'
       hdaresponse_file: /opt/software/WAS8.5.5.10_Install.xml
hibmagentpath: /opt/software/agent.installer.linux.gtk.x86_64_1.8.2000.20150303_1526.zip
       hbase_dir: '/opt/was/was855'
       hinstance_name: WebSphere

So I trying to merge the has of esa-group-service to was_data and esa-user-profile-service to was_data

Please let me know if there is a way


"There is always a way..." - question is if there is a good way ;-)
I take it that it is not feasible to rearrange how the data is organized in hiera in the first place - that would otherwise be the best.

The issue here is that you cannot simply both merge and split up the hash at the same time - you have one part that looks like a common part;
defaults for the other two parts if you like.

With hiera 5, if you change the data structure to consist of a defaults part - under one key, say "esa_default", and then store the other two under their respective keys 'esa_group_part', 'esa_user_part', then you have several options:

* write a hiera 5 backend function that returns the merged result for the two full keys for the group and user structures * write a class where you use APL to get the three parts, and then merge in that class, binding to a variable that you then use to get the merged result.

I would do the hiera backend function.

If you also need the original data structure (as shown in your example) then also merge a result that looks like that in your backend function.

The function would be simple - basically do something like:

lookup('esa_default') + lookup('esa_group_part')
or
lookup('esa_default') + lookup('esa_user_part')

to override defaults with more specific values (if that is what you want to do - or some variation on that if it is not defaults in the "common" part).

I choose the names "group_part" and "user_part" simply for illustration.
Hope this helps you.

You can read more about how to create a backend function here: https://docs.puppet.com/puppet/5.0/hiera_custom_lookup_key.html

- henrik

--

Visit my Blog "Puppet on the Edge"
http://puppet-on-the-edge.blogspot.se/

--
You received this message because you are subscribed to the Google Groups "Puppet 
Developers" 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-dev/omejnq%24j0t%241%40blaine.gmane.org.
For more options, visit https://groups.google.com/d/optout.

Reply via email to