]> git.donarmstrong.com Git - dsa-puppet.git/blobdiff - 3rdparty/modules/nova/lib/puppet/provider/nova_floating/nova_manage.rb
try again, with puppetforge modules, correctly included now
[dsa-puppet.git] / 3rdparty / modules / nova / lib / puppet / provider / nova_floating / nova_manage.rb
diff --git a/3rdparty/modules/nova/lib/puppet/provider/nova_floating/nova_manage.rb b/3rdparty/modules/nova/lib/puppet/provider/nova_floating/nova_manage.rb
new file mode 100644 (file)
index 0000000..de3d71b
--- /dev/null
@@ -0,0 +1,23 @@
+Puppet::Type.type(:nova_floating).provide(:nova_manage) do
+
+  desc "Manage nova floating"
+
+  optional_commands :nova_manage => 'nova-manage'
+
+  def exists?
+    # Calculate num quads to grab for prefix
+    mask=resource[:network].sub(/.*\/([0-9][0-9]?)/, '\1').to_i
+    num_quads = 4 - mask / 8
+    prefix=resource[:network].sub(/(\.[0-9]{1,3}){#{num_quads}}(\/[0-9]{1,2})?$/, '') + "."
+    return nova_manage("floating", "list").match(/#{prefix}/)
+  end
+
+  def create
+     nova_manage("floating", "create", '--pool', resource[:pool], resource[:network])
+  end
+
+  def destroy
+    nova_manage("floating", "delete", resource[:network])
+  end
+
+end