On Tue, Oct 11, 2011 at 5:48 PM, Craig White <[email protected]> wrote: > I am trying to supplement and ultimately provide a patch for 'foreman' which > is an adjunct to puppet. > > Essentially, there is a Hosts class which belongs_to Hostgroup and Hostgroup > class has a column called 'ancestry' which is actually a Hostgroup (probably > what is referred to as STI but I am not sure) and thus within Foreman, > nesting Hostgroups is not uncommon. This is actually the ancestry gem [1] which does most of the heavy lifting.
> > Thus I could have a Host that is called "ServerA", that belongs to > "WebServer" Hostgroup which has an ancestry (Hostgroup) called "Base" and for > me to find out all of the puppetclasses that host "ServerA" belongs to, I > would have to get a listing of all of the puppetclasses within the chain of > Hostgroups to which ServerA belongs. > > So this is my code... > > @hosts.each do |host| > @ancestors = Hostgroup.find(host.hostgroup.ancestry) unless > host.hostgroup.ancestry == nil > @ancestors.puppetclasses.each do |anc| > @my_classes[anc.name] += 1 > end > end > > And this works for me because I am only nesting 1 level but it's conceivable > that other users would nest many more levels and if my patch is to be > accepted, I undoubtedly have to account for an infinite level of nesting. > > How would I accomplish that? look for the sort_by_ancestry method see https://github.com/ohadlevy/foreman/blob/develop/app/models/hostgroup.rb#L73 > > -- > Craig White ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [email protected] > 1.800.869.6908 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ www.ttiassessments.com > > Need help communicating between generations at work to achieve your desired > success? Let us help! > > -- > You received this message because you are subscribed to the Google Groups > "Ruby on Rails: Talk" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/rubyonrails-talk?hl=en. > > [1] - https://github.com/stefankroes/ancestry -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

