Hi guys

I've asked around on the IRC on the channel to no avail, partly cause
of difficulty collating all the information required, so hopefully I
can do a better job here.

At a very high level the crux of my question is thus:

http://analytical-labs.com/cycles.png

When I add the require dependency for Saiku::Tomcat to the
Saiku::Instance resource I get a cyclical dependency.

I have my 2 defines here:

define saiku::instance($ensure , $app_name = 'saiku') {


  package { "${app_name}":
     ensure => latest,
     notify  => Service["tomcat-${name}"],
     }

  saiku::datasource { "foodmart_dev_${name}":
      ensure => absent,
      datasource_name => "foodmart",
      tomcat_name => "${name}",
      #require =>Package["${app_name}"],
      #notify  => Service["tomcat-${name}"],
    }

    saiku::datasource { "foodmart_mysql_dev_${name}" :
      ensure => present,
      datasource_name => "foodmart_mysql_${name}",
      tomcat_name => "${name}",
      #notify  => Service["tomcat-${name}"],
      #require =>Package["${app_name}"],
    }


}


define saiku::tomcat($ensure, $tomcat_http, $tomcat_ajp,
$tomcat_server) {

  include tomcat::source

  tomcat::instance {"${name}":
    ensure      => present,
    ajp_port    => "${tomcat_ajp}",
    server_port    => "${tomcat_server}",
    http_port    => "${tomcat_http}",
  }

}

You see I would like to notify my Tomcat instance that either a new
app has been installed or if either of the two files have changed.
(The file notifies are currently disabled to try and aid debugging)


I use the camptocamp puppet-tomcat module

https://github.com/camptocamp/puppet-tomcat/blob/master/manifests/instance.pp

and my control.pp file looks like this:

class cloudbi::saiku::control {

      $saiku_http                   = extlookup('saiku_http','')
      $saiku_ajp                    = extlookup('saiku_ajp','')
      $saiku_server         = extlookup('saiku_server','')
      $saiku_tomcat_name    = extlookup('saiku_tomcat_name','')
      $saiku_url                    = extlookup('saiku_url','')

      include saiku::apt

      saiku::instance{ "${saiku_tomcat_name}":
        ensure => present,
        require => [Class["saiku::apt"],Saiku::Tomcat["$
{saiku_tomcat_name}"]],
      }

      saiku::tomcat{ "${saiku_tomcat_name}":
            ensure => present,
            tomcat_http => "${saiku_http}",
        tomcat_ajp => "${saiku_ajp}",
        tomcat_server => "${saiku_server}",
            }
    }

But no matter what refactoring I do I get a dependency cycle with the
following error:

err: Could not apply complete catalog: Found 1 dependency cycle:
(Tomcat::Instance[saiku] => Saiku::Tomcat[saiku] =>
Saiku::Instance[saiku] => Package[saiku] => Service[tomcat-saiku] =>
Tomcat::Instance[saiku])
Cycle graph written to /var/lib/puppet/state/graphs/cycles.dot.


Can someone please explain in layman's terms why me requiring Tomcat
being installed, prevents me from notifying it when part of my
configuration is changed, considering it needs to be installed to be
notified in the first place.

Running Ubuntu Natty and Puppet 2.7

Thanks

Tom

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To post to this group, send email to puppet-users@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to