summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff McCune <jeff@puppetlabs.com>2011-06-15 11:51:33 -0700
committerJeff McCune <jeff@puppetlabs.com>2011-06-15 11:51:33 -0700
commitc4e8bb8f97ef558faa8112127c7fd49dc201647b (patch)
tree074d6622cf6444e0bef8fec79ecfa1bb24180c6a
parentdf2398b59c295c3e27cea5e41a76167a797139d4 (diff)
parentf13f3c2916c2857a3949d5ac6b884c045804ebac (diff)
Merge pull request #4 from jeffmccune/ticket/master/3_anchor_resource_type
Ticket/master/3 anchor resource type Nan +1'ed on the tech list. Merging into master.
-rw-r--r--lib/puppet/type/anchor.rb32
-rw-r--r--spec/unit/puppet/type/anchor_spec.rb11
2 files changed, 43 insertions, 0 deletions
diff --git a/lib/puppet/type/anchor.rb b/lib/puppet/type/anchor.rb
new file mode 100644
index 0000000..0c28b1c
--- /dev/null
+++ b/lib/puppet/type/anchor.rb
@@ -0,0 +1,32 @@
+Puppet::Type.newtype(:anchor) do
+ desc <<-'ENDOFDESC'
+ A simple resource type intended to be used as an anchor in a composite class.
+
+ class ntp {
+ class { 'ntp::package': }
+ -> class { 'ntp::config': }
+ -> class { 'ntp::service': }
+
+ # These two resources "anchor" the composed classes
+ # such that the end user may use "require" and "before"
+ # relationships with Class['ntp']
+ anchor { 'ntp::begin': } -> class { 'ntp::package': }
+ class { 'ntp::service': } -> anchor { 'ntp::end': }
+ }
+
+ This resource allows all of the classes in the ntp module to be contained
+ within the ntp class from a dependency management point of view.
+
+ This allows the end user of the ntp module to establish require and before
+ relationships easily:
+
+ class { 'ntp': } -> class { 'mcollective': }
+ class { 'mcollective': } -> class { 'ntp': }
+
+ ENDOFDESC
+
+ newparam :name do
+ desc "The name of the anchor resource."
+ end
+
+end
diff --git a/spec/unit/puppet/type/anchor_spec.rb b/spec/unit/puppet/type/anchor_spec.rb
new file mode 100644
index 0000000..2030b83
--- /dev/null
+++ b/spec/unit/puppet/type/anchor_spec.rb
@@ -0,0 +1,11 @@
+#!/usr/bin/env ruby
+
+require 'puppet'
+
+anchor = Puppet::Type.type(:anchor).new(:name => "ntp::begin")
+
+describe anchor do
+ it "should stringify normally" do
+ anchor.to_s.should == "Anchor[ntp::begin]"
+ end
+end