The original proposal _was_ to remove the original implementation of definitions.It also contained a helper to write resource/providers even more concisely than the LWRP syntax today.Since the ticket originally at issue suggested definitions be rewritten to build on LWRPs, the conversation started with that frame. Clearly, we all agree that is a bad idea.Removing definitions without a "replacement" probably will just annoy people. It also creates work for community cookbook maintainers, because it's bad form to have those firing deprecation warnings.Also, an even simpler syntax for R/Ps would be useful, it is a little frustrating to have to create two files for a one-off LWRP.So if we can figure out a good way to describe the migration path, this can be a net win for the community. But done wrong, it'll just piss people off who aren't involved with contributing to chef (much like the ruby community grumbled about recent changes to rubygems). The deprecation warning should point to good docs explaining how to convert and why the change was made.在 星期日, 6月 10, 2012,20:24,Jay Feldblum 写道:
Avishai,I can see how the existing documentation on definitions can engender these types of confusions.Why not simply improve the documentation better to reflect that definitions are macros, not resources or providers, and to clarify the differences between them?Or why not get rid of definitions entirely, which at one stroke removes all of the complexity and all of the confusion?Cheers,JayOn Sun, Jun 10, 2012 at 7:58 AM, Avishai Ish-Shalom < " target="_blank"> > wrote:
See CHEF-422, CHEF-292, CHEF-778 for example. It seems users don't understand that definitions act as macros and how variables pass from recipe to definition.
resolving CHEF-1065 will make definitions act as thin wrapper around LWRP
Regards, Avishai
On 10/06/12 10:48, Jay Feldblum wrote:Avishai,
What are the issues confusing users originating from the block scope?
What do you mean by a wrapper for LWRP?
Cheers,
Jay
On Sun, Jun 10, 2012 at 3:44 AM, Avishai Ish-Shalom < " target="_blank"> > wrote:I tend to agree. However, if definitions are to remain we need to make them more coherent. Currently there are many issues confusing users originating from the block scoping in ruby.
We can make definitions work within a private scope by evaluating them in a "sub-recipe" object.
Also, if we leave definitions as they are (conceptually at least), then do we want a wrapper for LWRP? i for one think LWRPs are easy enough now.
Regards, Avishai
On 10/06/12 10:19, Jay Feldblum wrote:I think definitions need to remain, and need to remain as they are.
A definitions is essentially a macro, expanding to a list of resources which are added to the calling run-context's resources-collection. There is a place for this in Chef.
Resources something quite different: an abstract interface against an aspect of the system being configured, with one or more pure-Ruby opaque provider implementations which do not touch the calling run-context's resources-collection, and which are often implemented in lower-level Ruby code and not as simply expanding to a list of resources. There is a place for this in Chef as well.
Cheers,Jay
On Sun, Jun 10, 2012 at 2:59 AM, Akzhan Abdulin < " target="_blank"> > wrote:Agree with Joseph. We need new term in addition to definition. definition should be deprecated.
Let it be *generic_resource*, for example.
2012/6/9 Joseph Holsten < " target="_blank"> >Doesn't sound worth it to implement this and keep calling it a definition. I'd rather see definitions be deprecated in favor of this new feature than introduce such a breaking change.在 星期六, 6月 9, 2012,16:56,Avishai Ish-Shalom 写道:
http://tickets.opscode.com/browse/CHEF-1065
Fixing this ticket will resolve many issues and inconsistencies, will add the ability to notify/subscribe to a definition, use normal meta parameters (ignore_failure, not_if/only_if) and resolve scoping problems.
However: the fix for this ticket is a major and breaking change!!! Resource providers are evaluated at the converge stage while definition block (old implementation) are evaluated at recipe compile time (and recipe scope). Many cookbooks use this as a feature and use recipe DSL statements, e.g. include_recipe in runit_service definition.
The above patch will break some cookbooks so there is a decision to be made here. Do we resolve this ticket and fix cookbooks, implement a fallback to old behaviour or skip this feature altogether?
-- Regards, Avishai
Archive powered by MHonArc 2.6.16.