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 puppet-dev+unsubscr...@googlegroups.com.
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