diff options
Diffstat (limited to 'lib/puppet')
-rw-r--r-- | lib/puppet/pgraph.rb | 4 | ||||
-rw-r--r-- | lib/puppet/type/resources.rb | 68 |
2 files changed, 70 insertions, 2 deletions
diff --git a/lib/puppet/pgraph.rb b/lib/puppet/pgraph.rb index d988ff36a..a8ff952ed 100644 --- a/lib/puppet/pgraph.rb +++ b/lib/puppet/pgraph.rb @@ -111,9 +111,9 @@ class Puppet::PGraph < GRATR::Digraph # For some reason, unconnected vertices do not show up in # this graph. - def to_jpg(name) + def to_jpg(path, name) gv = vertices() - Dir.chdir("/Users/luke/Desktop/pics") do + Dir.chdir(path) do induced_subgraph(gv).write_to_graphic_file('jpg', name) end end diff --git a/lib/puppet/type/resources.rb b/lib/puppet/type/resources.rb new file mode 100644 index 000000000..7e81a08b3 --- /dev/null +++ b/lib/puppet/type/resources.rb @@ -0,0 +1,68 @@ +# Created by Luke Kanies on 2006-12-12. +# Copyright (c) 2006. All rights reserved. + +require 'puppet' + +Puppet::Type.newtype(:resources) do + @doc = "This is a metatype that can manage other resource types. Any + metaparams specified here will be passed on to any generated resources, + so you can purge umanaged resources but set ``noop`` to true so the + purging is only logged and does not actually happen." + + + newparam(:name) do + desc "The name of the type to be managed." + + validate do |name| + unless Puppet::Type.type(name) + raise ArgumentError, "Could not find resource type '%s'" % name + end + end + end + + newparam(:purge, :boolean => true) do + desc "Purge unmanaged resources. This will delete any resource + that is not specified in your configuration + and is not required by any specified resources." + + newvalues(:true, :false) + + validate do |value| + if [:true, true, "true"].include?(value) + unless @parent.resource_type.respond_to?(:list) + raise ArgumentError, "Purging resources of type %s is not supported" % @parent[:name] + end + unless @parent.resource_type.validstate?(:ensure) + raise ArgumentError, "Purging is only supported on types that accept 'ensure'" + end + end + end + end + + # Generate any new resources we need to manage. + def generate + resource_type.list.find_all do |resource| + ! resource.managed? + end.each do |resource| + begin + resource[:ensure] = :absent + rescue ArgumentError, Parse::Error => detail + err "The 'ensure' attribute on %s resources does not accept 'absent' as a value" % + [self[:name]] + return [] + end + end + end + + def resource_type + unless defined? @resource_type + unless type = Puppet::Type.type(self[:name]) + raise Puppet::DevError, "Could not find resource type" + end + @resource_type = type + end + @resource_type + end +end + +# $Id$
\ No newline at end of file |