]> git.donarmstrong.com Git - dsa-puppet.git/blobdiff - 3rdparty/modules/glance/lib/puppet/type/glance_image.rb
try again, with puppetforge modules, correctly included now
[dsa-puppet.git] / 3rdparty / modules / glance / lib / puppet / type / glance_image.rb
diff --git a/3rdparty/modules/glance/lib/puppet/type/glance_image.rb b/3rdparty/modules/glance/lib/puppet/type/glance_image.rb
new file mode 100644 (file)
index 0000000..8ee348a
--- /dev/null
@@ -0,0 +1,79 @@
+Puppet::Type.newtype(:glance_image) do
+  desc <<-EOT
+    This allows manifests to declare an image to be
+    stored in glance.
+
+    glance_image { "Ubuntu 12.04 cloudimg amd64":
+      ensure           => present,
+      name             => "Ubuntu 12.04 cloudimg amd64"
+      is_public        => yes,
+      container_format => ovf,
+      disk_format      => 'qcow2',
+      source           => 'http://uec-images.ubuntu.com/releases/precise/release/ubuntu-12.04-server-cloudimg-amd64-disk1.img'
+    }
+
+    Known problems / limitations:
+      * All images are managed by the glance service. 
+        This means that since users are unable to manage their own images via this type,
+        is_public is really of no use. You can probably hide images this way but that's all.
+      * As glance image names do not have to be unique, you must ensure that your glance 
+        repository does not have any duplicate names prior to using this.
+      * Ensure this is run on the same server as the glance-api service.
+
+  EOT
+
+  ensurable
+
+  newparam(:name, :namevar => true) do
+    desc 'The image name'
+    newvalues(/.*/)
+  end
+
+  newproperty(:id) do
+    desc 'The unique id of the image'
+    validate do |v|
+      raise(Puppet::Error, 'This is a read only property')
+    end
+  end
+
+  newproperty(:location) do
+    desc "The permanent location of the image. Optional"
+    newvalues(/\S+/)
+  end
+
+  newproperty(:is_public) do
+    desc "Whether the image is public or not. Default true"
+    newvalues(/(y|Y)es/, /(n|N)o/)
+    defaultto('Yes')
+    munge do |v|
+      if v =~ /^(y|Y)es$/
+        'True'
+      elsif v =~ /^(n|N)o$/
+        'False'
+      end
+    end
+  end
+
+  newproperty(:container_format) do
+    desc "The format of the container"
+    newvalues(:ami, :ari, :aki, :bare, :ovf)
+  end
+
+  newproperty(:disk_format) do
+    desc "The format of the disk"
+    newvalues(:ami, :ari, :aki, :vhd, :vmd, :raw, :qcow2, :vdi, :iso)
+  end
+
+  newparam(:source) do
+    desc "The source of the image to import from"
+    newvalues(/\S+/)
+  end
+
+  # Require the Glance service to be running
+  autorequire(:service) do
+    ['glance']
+  end
+
+end
+
+