Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
-
3
-
Week 2014-5-21 to 2014-5-28, Week 2014-5-28 to 2014-6-4, Week 2014-6-4 to 2014-6-11, Week 2014-6-11 to 2014-6-18
Description
This is the issue where `include apache` actually means “try to declare class `<current namespace>::apache`, class `<parent of current namespace>::apache`, and so on, eventually declaring `apache` as a last resort."
This bites people in the wild frequently, and seem to be getting a steady stream of customer complaints about it.
We seem to have nearly universal agreement that this isn't how Puppet should work, but fixing it will break code in the wild. In redmine #2053, I suggested a deprecation plan:
- In a mid-stream 3.x release, we start logging warnings when relative namespacing finds a class that doesn't match the provided name, and provide a setting to turn on a "strict mode" that kills relative namespacing completely.
- In 4.0, we make the strict mode the only mode.
Attachments
Issue Links
- is duplicated by
-
PUP-1983 contain causes edges with nil targets to be added to the catalog
-
- Closed
-
-
PUP-993 Class namespace declaration appears to be dynamically scoped
-
- Closed
-
- relates to
-
PUP-4818 PUP-121 (relative namespacing) was never fully resolved in 3.x future parser
-
- Closed
-
-
PUP-659 Qualified variable lookups are very slow under Puppet 2.7+ unless prefixed with ::
-
- Closed
-
-
PUP-1205 Relative namespacing of class/define names results in big surprises
-
- Closed
-
-
PUP-481 Make variable references strict by default
-
- Closed
-
-
PUP-3054 Class inheritance behaving incorrectly in the future parser
-
- Closed
-
-
PUP-1852 deprecate the 'search' function
-
- Closed
-
-
PUP-2741 remove the 'search' function
-
- Closed
-
- links to