This patch extends the zone provider to support the inclusion of one or more 
datasets in a solaris zone.  A dataset is an zfs filesystem that has been 
delegated from the global zone to the non global zone.

Signed-off-by: Derek Olsen <[email protected]>
---
 lib/puppet/provider/zone/solaris.rb |    3 +++
 lib/puppet/type/zone.rb             |   27 +++++++++++++++++++++++++++
 2 files changed, 30 insertions(+), 0 deletions(-)

diff --git a/lib/puppet/provider/zone/solaris.rb 
b/lib/puppet/provider/zone/solaris.rb
index c114449..f3c261f 100644
--- a/lib/puppet/provider/zone/solaris.rb
+++ b/lib/puppet/provider/zone/solaris.rb
@@ -221,6 +221,9 @@ Puppet::Type.type(:zone).provide(:solaris) do
     if dir = config["inherit-pkg-dir"]
       result[:inherit] = dir.collect { |dirs| dirs[:dir] }
     end
+    if dataset = config["dataset"]
+      result[:dataset] = dataset.collect { |datasets| datasets[:dataset] }
+    end
     result[:iptype] = config[:"ip-type"]
     if net = config["net"]
       result[:ip] = net.collect do |params|
diff --git a/lib/puppet/type/zone.rb b/lib/puppet/type/zone.rb
index d523c46..026d99c 100644
--- a/lib/puppet/type/zone.rb
+++ b/lib/puppet/type/zone.rb
@@ -282,6 +282,33 @@ Puppet::Type.newtype(:zone) do
     end
   end
 
+  newproperty(:dataset, :parent => ZoneMultiConfigProperty) do
+    desc "The list of datasets delegated to the non global zone from the
+      global zone.  All datasets must be zfs filesystem names which is
+      different than the mountpoint." 
+
+    validate do |value|
+      unless value !~ /^\//
+        raise ArgumentError, "Datasets must be the name of a zfs filesystem"
+      end
+    end
+
+    # Add a zfs filesystem to our list of datasets.
+    def add(dataset)
+      "add dataset\nset name=#{dataset}\nend"
+    end
+
+    # Remove a zfs filesystem from our list of datasets.
+    def rm(dataset)
+      "remove dataset name=#{dataset}"
+    end
+
+    def should
+      @should
+    end
+  end
+
+
   newproperty(:inherit, :parent => ZoneMultiConfigProperty) do
     desc "The list of directories that the zone inherits from the global
       zone.  All directories must be fully qualified."
-- 
1.7.3.2

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" 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/puppet-dev?hl=en.

Reply via email to