- From: AJ Christensen <
>
- To:
- Subject: [chef] Re: Re: Re: Re: Re: Re: Re: Re: Deep merge in 0.10.10 and 10.12.0
- Date: Wed, 5 Sep 2012 11:13:35 +1200
Conversely, a work-around may be to perform all of your !merge
knockouts in Roles instead of via supplemental node JSON data on the
CLI..
You can easily temporarily allocate a role to a node via supplemental
JSON data (triggering attribute-merge-knockout semantics)
--AJ
On 5 September 2012 11:12, AJ Christensen
<
>
wrote:
>
Is supplemental JSON node data deep-merged to the node? The code I
>
posted was re: Roles, not supplemental JSON data loaded via CLI.
>
>
https://github.com/opscode/chef/blob/master/chef/lib/chef/application/client.rb#L271
>
https://github.com/opscode/chef/blob/master/chef/lib/chef/client.rb#L249-253
>
https://github.com/opscode/chef/blob/master/chef/lib/chef/node.rb#L378-388
>
>
Ah, and here's the deep merge! Interesting stuff:
>
https://github.com/opscode/chef/blob/master/chef/lib/chef/node.rb#L391-396
>
>
As you can see, it doesn't use the role_merge, just the standard
>
#merge method from the mixin:
>
https://github.com/opscode/chef/blob/master/chef/lib/chef/mixin/deep_merge.rb#L31-36
>
>
So, it doesn't allow the !merge knockout prefix for JSON node data
>
attributes supplied via CLI. Hope this helps. Should be an easy patch.
>
>
--AJ
>
>
On 5 September 2012 11:02, Michael Glenney
>
<
>
>
wrote:
>
> Hmm. You're running 10.12.0? I just tested again. Started with the
>
> following:
>
>
>
> Node data (with 'knife node show <nodename> -Fj'):
>
>
>
> "haproxy": {
>
> "config": "classroom.cfg.erb",
>
> "nodes": {
>
> "portal_api": [
>
> "2.2.2.2",
>
> "3.3.3.3"
>
> ]
>
> }
>
>
>
> haproxy config:
>
>
>
> server portal_api-2.2.2.2 2.2.2.2:443 check port 443 inter 10s rise 4
>
> fall
>
> 4
>
> server portal_api-3.3.3.3 3.3.3.3:443 check port 443 inter 10s rise 4
>
> fall
>
> 4
>
>
>
> I ran 'chef-client -j /etc/chef/routing_rules.json' with the following in
>
> "routing_rules.json":
>
>
>
> { "haproxy": { "nodes": { "portal_api": [ "!merge:", "10.10.10.10",
>
> "11.11.11.11" ] } } }
>
>
>
>
>
> This is what I ended up with:
>
>
>
> Node data:
>
>
>
> "haproxy": {
>
> "config": "classroom.cfg.erb",
>
> "nodes": {
>
> "portal_api": [
>
> "2.2.2.2",
>
> "3.3.3.3",
>
> "!merge:",
>
> "10.10.10.10",
>
> "11.11.11.11"
>
> ]
>
> }
>
>
>
> haproxy config:
>
>
>
> server portal_api-2.2.2.2 2.2.2.2:443 check port 443 inter 10s rise 4
>
> fall
>
> 4
>
> server portal_api-3.3.3.3 3.3.3.3:443 check port 443 inter 10s rise 4
>
> fall
>
> 4
>
>
>
> server portal_api-!merge: !merge::443 check port 443 inter 10s rise 4
>
> fall
>
> 4
>
> server portal_api-10.10.10.10 10.10.10.10:443 check port 443 inter 10s
>
> rise 4 fall 4
>
> server portal_api-11.11.11.11 11.11.11.11:443 check port 443 inter 10s
>
> rise 4 fall 4
>
>
>
> The docs say you can run without the colon now but I'm not seeing a
>
> difference. Doesn't work either way.
>
>
>
> MG
>
>
>
>
>
> On Tue, Sep 4, 2012 at 3:41 PM, Juanje Ojeda Croissier
>
> <
>
>
> wrote:
>
>>
>
>> I believe the issue here is the " (without the colon) ". I had some
>
>> troubles here as well, but it's now working with the colon
>
>> ("!merge:").
>
>>
>
>> Could you test it with colon, please?
>
>>
>
>> On Tue, Sep 4, 2012 at 8:27 PM, Michael Glenney
>
>> <
>
>
>> wrote:
>
>> > I have now verified that putting !merge does not work in 10.12.0 I'll
>
>> > go
>
>> > back an read over the link AJ sent again but it appears as if deep merge
>
>> > is
>
>> > gone or broken.
>
>> >
>
>> > Here's the json I passed to the chef-client run:
>
>> >
>
>> > { "haproxy": { "nodes": { "portal_api": [ "!merge", "4.4.4.4", "5.5.5.5"
>
>> > ] }
>
>> > } }
>
>> >
>
>> > Here's the resulting haproxy config:
>
>> >
>
>> > server portal_api-!merge !merge:443 check port 443 inter 10s rise 4
>
>> > fall 4
>
>> > server portal_api-4.4.4.4 4.4.4.4:443 check port 443 inter 10s rise 4
>
>> > fall
>
>> > 4
>
>> > server portal_api-5.5.5.5 5.5.5.5:443 check port 443 inter 10s rise 4
>
>> > fall
>
>> > 4
>
>> >
>
>> > Not what I was going for obviously.
>
>> >
>
>> > MG
>
>> >
>
>> >
>
>> > On Sun, Sep 2, 2012 at 6:46 PM, Michael Glenney
>
>> > <
>
>
>> > wrote:
>
>> >>
>
>> >> Yeah. Looking at your link it looks like using "!merge" (without the
>
>> >> colon) will probably work. just need to test it. That goes along with
>
>> >> what
>
>> >> it says in the wiki except for the fact that the wiki says it "can" be
>
>> >> used
>
>> >> instead of saying it must.
>
>> >>
>
>> >> MG
>
>> >>
>
>> >> On Sun, Sep 2, 2012 at 3:11 PM, AJ Christensen
>
>> >> <
>
>
>> >> wrote:
>
>> >>>
>
>> >>> From DeepMerge mixin class:
>
>> >>>
>
>> >>> # Inherited roles use the knockout_prefix array subtraction
>
>> >>> functionality
>
>> >>> # This is likely to go away in Chef >= 0.11
>
>> >>> def role_merge(first, second)
>
>> >>> first = Mash.new(first) unless first.kind_of?(Mash)
>
>> >>> second = Mash.new(second) unless second.kind_of?(Mash)
>
>> >>>
>
>> >>> DeepMerge.deep_merge(second, first, {:knockout_prefix =>
>
>> >>> "!merge", :preserve_unmergeables => false})
>
>> >>> end
>
>> >>>
>
>> >>>
>
>> >>>
>
>> >>> https://github.com/opscode/chef/blob/master/chef/lib/chef/mixin/deep_merge.rb#L44
>
>> >>>
>
>> >>> Maybe there's something useful for you here.
>
>> >>>
>
>> >>> I've only once used the attribute knockout functionality -- what is
>
>> >>> your use case? There may be another simple solution.
>
>> >>>
>
>> >>> --AJ
>
>> >>>
>
>> >>> On 3 September 2012 09:08, Michael Glenney
>
>> >>> <
>
>
>> >>> wrote:
>
>> >>> > Weird. For some reason it's not sending me my own. Oh well. Have
>
>> >>> > there
>
>> >>> > been any responses to my question? Because I dont see any of those
>
>> >>> > either
>
>> >>> >
>
>> >>> > Michael Glenney
>
>> >>> > Sent from my iPhone
>
>> >>> >
>
>> >>> > On Sep 2, 2012, at 11:43 AM, Adam Jacob
>
>> >>> > <
>
>
>> >>> > wrote:
>
>> >>> >
>
>> >>> >> Nope - I saw it two days ago.
>
>> >>> >>
>
>> >>> >> Adam
>
>> >>> >>
>
>> >>> >> On Sun, Sep 2, 2012 at 10:04 AM, Michael Glenney
>
>> >>> >> <
>
>
>> >>> >> wrote:
>
>> >>> >>> I sent this on friday. Still hasn't made it to my inbox. Am I
>
>> >>> >>> getting
>
>> >>> >>> moderated?
>
>> >>> >>>
>
>> >>> >>> Michael Glenney
>
>> >>> >>> Sent from my iPhone
>
>> >>> >>>
>
>> >>> >>> On Aug 31, 2012, at 4:08 PM, Michael Glenney
>
>> >>> >>> <
>
>
>> >>> >>> wrote:
>
>> >>> >>>
>
>> >>> >>> I had a problem with deep merge not working properly in 10.12.0.
>
>> >>> >>> Tested in
>
>> >>> >>> 0.10.10 and it didn't work there either. Instead of replacing my
>
>> >>> >>> array it
>
>> >>> >>> was actually putting "!merge:" into my array.
>
>> >>> >>>
>
>> >>> >>> After I reverted to 0.10.4 to get my deployment completed I
>
>> >>> >>> stumbled
>
>> >>> >>> on this
>
>> >>> >>> line from http://wiki.opscode.com/display/chef/Deep+Merge:
>
>> >>> >>>
>
>> >>> >>> "!merge (without the colon) can be used in Chef >= 0.10.10"
>
>> >>> >>>
>
>> >>> >>> I haven't had a chance to go back and test. Will have to wait
>
>> >>> >>> until
>
>> >>> >>> Monday.
>
>> >>> >>> But should that line read:
>
>> >>> >>>
>
>> >>> >>> "!merge (without the colon) MUST be used in Chef >= 0.10.10"
>
>> >>> >>>
>
>> >>> >>> Thanks,
>
>> >>> >>>
>
>> >>> >>> MG
>
>> >>> >>
>
>> >>> >>
>
>> >>> >>
>
>> >>> >> --
>
>> >>> >> Opscode, Inc.
>
>> >>> >> Adam Jacob, Chief Customer Officer
>
>> >>> >> T: (206) 619-7151 E:
>
>> >>> >>
>
>> >>
>
>> >>
>
>> >
>
>>
>
>>
>
>>
>
>> --
>
>> Juanje
>
>>
>
>> http://about.me/juanje
>
>
>
>
- [chef] Re: Deep merge in 0.10.10 and 10.12.0, Michael Glenney, 09/02/2012
- [chef] Re: Re: Deep merge in 0.10.10 and 10.12.0, Adam Jacob, 09/02/2012
- [chef] Re: Re: Re: Deep merge in 0.10.10 and 10.12.0, Michael Glenney, 09/02/2012
- [chef] Re: Re: Re: Re: Deep merge in 0.10.10 and 10.12.0, AJ Christensen, 09/02/2012
- [chef] Re: Re: Re: Re: Re: Deep merge in 0.10.10 and 10.12.0, Michael Glenney, 09/02/2012
- [chef] Re: Re: Re: Re: Re: Deep merge in 0.10.10 and 10.12.0, Michael Glenney, 09/02/2012
- [chef] Re: Re: Re: Re: Re: Deep merge in 0.10.10 and 10.12.0, Michael Glenney, 09/04/2012
- [chef] Re: Re: Re: Re: Re: Re: Deep merge in 0.10.10 and 10.12.0, Juanje Ojeda Croissier, 09/04/2012
- [chef] Re: Re: Re: Re: Re: Re: Re: Re: Deep merge in 0.10.10 and 10.12.0, Juanje Ojeda Croissier, 09/04/2012
- [chef] Re: Re: Re: Re: Re: Re: Re: Re: Re: Deep merge in 0.10.10 and 10.12.0, Daniel DeLeo, 09/04/2012
- [chef] Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Deep merge in 0.10.10 and 10.12.0, Michael Glenney, 09/04/2012
- [chef] Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Deep merge in 0.10.10 and 10.12.0, AJ Christensen, 09/04/2012
- [chef] Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Deep merge in 0.10.10 and 10.12.0, Michael Glenney, 09/05/2012
Archive powered by MHonArc 2.6.16.