]> git.donarmstrong.com Git - dsa-puppet.git/blobdiff - 3rdparty/modules/nova/manifests/compute/neutron.pp
try again, with puppetforge modules, correctly included now
[dsa-puppet.git] / 3rdparty / modules / nova / manifests / compute / neutron.pp
diff --git a/3rdparty/modules/nova/manifests/compute/neutron.pp b/3rdparty/modules/nova/manifests/compute/neutron.pp
new file mode 100644 (file)
index 0000000..91ee91c
--- /dev/null
@@ -0,0 +1,47 @@
+# == Class: nova::compute::neutron
+#
+# Manage the network driver to use for compute guests
+# This will use virtio for VM guests and the
+# specified driver for the VIF
+#
+# === Parameters
+#
+# [*libvirt_vif_driver*]
+#   (optional) The libvirt VIF driver to configure the VIFs.
+#   Defaults to 'nova.virt.libvirt.vif.LibvirtGenericVIFDriver'.
+#
+# [*force_snat_range*]
+#  (optional) Force SNAT rule to specified network for nova-network
+#  Default to 0.0.0.0/0
+#  Due to architecture constraints in nova_config, it's not possible to setup
+#  more than one SNAT rule though initial parameter is MultiStrOpt
+class nova::compute::neutron (
+  $libvirt_vif_driver = 'nova.virt.libvirt.vif.LibvirtGenericVIFDriver',
+  $force_snat_range   = '0.0.0.0/0',
+) {
+
+  if $libvirt_vif_driver == 'nova.virt.libvirt.vif.LibvirtOpenVswitchDriver' {
+    fail('nova.virt.libvirt.vif.LibvirtOpenVswitchDriver as vif_driver is removed from Icehouse')
+  }
+
+  nova_config {
+    'libvirt/vif_driver': value => $libvirt_vif_driver;
+  }
+
+  if $libvirt_vif_driver == 'nova.virt.libvirt.vif.LibvirtGenericVIFDriver' and $force_snat_range {
+    # Validate ip and mask for force_snat_range
+    $force_snat_range_array = split($force_snat_range, '/')
+    if is_ip_address($force_snat_range_array[0]) and is_integer($force_snat_range_array[1])  {
+      nova_config {
+        'DEFAULT/force_snat_range': value => $force_snat_range;
+      }
+    } else {
+      fail('force_snat_range should be IPv4 or IPv6 CIDR notation')
+    }
+  } else {
+    nova_config {
+      'DEFAULT/force_snat_range': ensure => absent;
+    }
+  }
+
+}