Evidently you have not understood the advice for which you are giving thanks, because it was to NOT DO THAT. Instead, do this:
file { 'bar':
# initial uppercase name components:
require => A::Foo['baz']
}
Note there that
- EACH name component in a resource reference must be capitalized (i.e. both the 'A' and the 'Foo'), and
- the name component separator is a double colon (::), not a single colon.
In addition, the actual names of modules, classes, and resource types should begin with
lowercase letters, so that resource references (which use capital letters) are distinguished from other uses of class and resource names. Thus, you should not have any module named "A"; rather, it should be named "a". Your definitions should thus have the form
# initial lowercase letters:
define a::foo(...) {
#...
}
The autoloader will expect to find that definition in <module path>/a/manifests/foo.pp, where in principle case matters, but in practice that depends on the filesystem.
John