This way it's not possible to have *inherit B => true*, and *inherit C =>
false*. It's none or all, where we should be able to choose inheritance per
project.
On Tuesday, January 12, 2016 at 6:37:55 PM UTC+1, Peter Kristolaitis wrote:
>
> Why not just use arrays for the parent attribute?
>
> project { 'Z':
> ensure => present,
> parent => [ 'B', 'C' ],
> inherit => false,
> }
>
>
> On 01/12/2016 12:17 PM, Quaternaire wrote:
>
> Hi,
>
> I am creating a Module for Mantis Bug Tracker (an issue tracker,
> https://www.mantisbt.org/), and I need to create new resource types for
> Project and User.
>
> The idea is to have Projects which can inherit from other Projects. Each
> Project can have multiple parent and/or childs, such as:
>
> Project A
> > Project B
> >> Project Z
> > Project C
> >> Project Z
>
>
>
> Where B an C are child of A, and Z is child of both B and C.
> Also, project inheritance is parameterized (such a whether a child inherit
> parent properties).
>
> I have no issue implementing the types and providers themselves, it is
> more with the end-user usage. Lets say I want to write a manifest
> representing the example above. The first soluton that comes in mind could
> be:
>
> project { 'A':
> ensure => present,
> }
>
> project { 'B':
> ensure => present,
> parent => 'A',
> inherit => true,
> }
>
> project { 'C':
> ensure => present,
> parent => 'A',
> inherit => false,
> }
>
> project { 'Z':
> ensure => present,
> parent => 'B',
> inherit => false,
> }
> # Crap, how can Z have multiple parents?
> # Same problem if we use something like "child => 'B'" on A, how could A
> have multiple children?
>
>
> ... which is not viable.
>
> Another solution could be:
> project { 'A':
> ensure => present,
> }
>
> project { 'B':
> ensure => present,
> }
>
> project { 'C':
> ensure => present,
> }
>
> hierarchy { 'A>B':
> child => 'B',
> parent => 'A',
> inherit => true,
> }
>
> hierarchy { 'B>Z':
> child => 'Z',
> parent => 'B',
> inherit => false,
> }
>
> hierarchy { 'C>Z':
> child => 'Z',
> parent => 'C',
> inherit => true,
> }
>
>
>
> This way it works fine, but it is quite cumbersome to write and maintain.
>
> So another way would be using hashes to define children (of parents):
>
> project { 'A':
> ensure => present,
> child => {
> name => 'B',
> inherit => true,
> }
> }
>
> project { 'B':
> ensure => present,
> child => {
> name => 'Z',
> inherit => false,
> } # We may add more child in this hash...
> }
>
> project { 'C':
> ensure => present,
> child => {
> name => 'Z',
> inherit => true,
> } # We may add more child in this hash...
> }
>
>
>
> Which also works fine, is easier to read, but does it respects Puppet
> conventions? Users will be able to define whatever they want in these
> hashes, and the Puppet mechanism of param/property linked to methods would
> be broken.
>
> What do you think would be the best possibility? Having a Project type and
> using a Hierarchy type to link it together, granting the possibility to use
> hashes, or another solution?
>
> A final note: a similar problem is posed for users. How can we define a
> user resource, and manage user specific parameters for each projects? I
> think answering for projects will solve it for users.
>
> Thanks by advance for your ideas or advices!
> --
> You received this message because you are subscribed to the Google Groups
> "Puppet Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected] <javascript:>.
> To view this discussion on the web visit
> <https://groups.google.com/d/msgid/puppet-users/c0de16c7-4e56-4dae-a123-058651acc22e%40googlegroups.com?utm_medium=email&utm_source=footer>
> https://groups.google.com/d/msgid/puppet-users/c0de16c7-4e56-4dae-a123-058651acc22e%40googlegroups.com
> .
> For more options, visit https://groups.google.com/d/optout.
>
>
>
--
You received this message because you are subscribed to the Google Groups
"Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/puppet-users/631ee4a4-4507-4286-bb6a-75b0d30a4508%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.