]> gitweb.fluxo.info Git - puppet-virtual.git/commitdiff
Adding support for vserver scheduling
authorSilvio Rhatto <rhatto@riseup.net>
Fri, 3 Sep 2010 14:51:29 +0000 (11:51 -0300)
committerSilvio Rhatto <rhatto@riseup.net>
Fri, 3 Sep 2010 14:51:29 +0000 (11:51 -0300)
manifests/vserver.pp

index 9f7fd1c99c59e5830f05a90a2504bf0107698555..6913659e0ec913773f05a851b9853142faaaded4 100644 (file)
@@ -387,3 +387,154 @@ define vs_ip_binding($vserver, $ip, $ensure) {
     }
   }
 }
+
+define vs_sched($vserver, $ensure = present, $fill_rate = '', $fill_rate2 = '',
+                $interval = '', $interval2 = '', $tokens_min = '', $tokens_max = '',
+                $tokens = '', $idle_time = false, $priority_bias = '') {
+
+  file { "/etc/vservers/${vserver}/sched/fill-rate":
+    ensure  => $ensure,
+    content => "$fill_rate\n",
+  }
+
+  file { "/etc/vservers/${vserver}/sched/fill-rate2":
+    ensure  => $ensure,
+    content => "$fill_rate2\n",
+  }
+
+  file { "/etc/vservers/${vserver}/sched/interval":
+    ensure  => $ensure,
+    content => "$interval\n",
+  }
+
+  file { "/etc/vservers/${vserver}/sched/interval2":
+    ensure  => $ensure,
+    content => "$interval2\n",
+  }
+
+  file { "/etc/vservers/${vserver}/sched/tokens-min":
+    ensure  => $ensure,
+    content => "$tokens_min\n",
+  }
+
+  file { "/etc/vservers/${vserver}/sched/tokens-max":
+    ensure  => $ensure,
+    content => "$tokens_max\n",
+  }
+
+  file { "/etc/vservers/${vserver}/sched/tokens":
+    ensure  => $ensure,
+    content => "$tokens\n",
+  }
+
+  file { "/etc/vservers/${vserver}/sched/priority-bias":
+    ensure  => $ensure,
+    content => "$priority_bias\n",
+  }
+
+  case $ensure {
+    present: {
+
+      case $fill_rate {
+        ''      => { }
+        default => {
+          $set_fill_rate = '--fill-rate $fill_rate'
+        }
+      }
+
+      case $fill_rate2 {
+        ''      => { }
+        default => {
+          $set_fill_rate2 = '--fill-rate2 $fill_rate2'
+        }
+      }
+
+      case $interval {
+        ''      => { }
+        default => {
+          $set_interval = '--interval $interval'
+        }
+      }
+
+      case $interval2 {
+        ''      => { }
+        default => {
+          $set_interval2 = '--interval2 $interval2'
+        }
+      }
+
+      case $tokens_min {
+        ''      => { }
+        default => {
+          $set_tokens_min = '--tokens-min $tokens_min'
+        }
+      }
+
+      case $tokens_max {
+        ''      => { }
+        default => {
+          $set_tokens_max = '--tokens-max $tokens_max'
+        }
+      }
+
+      case $tokens {
+        ''      => { }
+        default => {
+          $set_tokens = '--tokens $tokens'
+        }
+      }
+
+      case $priority_bias {
+        ''      => { }
+        default => {
+          $set_priority_bias = '--prio-bias $priority_bias'
+        }
+      }
+
+      case $idle_time {
+        true: {
+          $set_idle_time = '--idle-time'
+
+          file { "/etc/vservers/${vserver}/sched/idle-time":
+            ensure => present,
+          }
+        }
+        default: {
+          file { "/etc/vservers/${vserver}/sched/idle-time":
+            ensure => absent,
+          }
+        }
+      }
+
+      $vsched_params = "$set_fill_rate $set_fill_rate2 $set_interval $set_interval2 $set_tokens_min $set_tokens_max $set_tokens $set_idle_time $set_priority_bias"
+
+      exec { "vattribute --set --xid `cat /etc/vservers/$vserver/context` --flag sched_hard":
+        subscribe   => File["/etc/vservers/$vserver/sched/fill_rate",  "/etc/vservers/$vserver/sched/fill_rate2",
+                            "/etc/vservers/$vserver/sched/interval",   "/etc/vservers/$vserver/sched/interval2",
+                            "/etc/vservers/$vserver/sched/tokens-min", "/etc/vservers/$vserver/sched/tokens-max",
+                            "/etc/vservers/$vserver/sched/tokens",     "/etc/vservers/$vserver/sched/idle-time"],
+        refreshonly => true, 
+        require     => Exec["vs_create_${vserver}"],
+      }
+
+      exec { "vsched --xid `cat /etc/vservers/$vserver/context` ${vsched_params} --force":
+        subscribe   => File["/etc/vservers/$vserver/sched/fill_rate",  "/etc/vservers/$vserver/sched/fill_rate2",
+                            "/etc/vservers/$vserver/sched/interval",   "/etc/vservers/$vserver/sched/interval2",
+                            "/etc/vservers/$vserver/sched/tokens-min", "/etc/vservers/$vserver/sched/tokens-max",
+                            "/etc/vservers/$vserver/sched/tokens",     "/etc/vservers/$vserver/sched/idle-time"],
+        refreshonly => true, 
+        require     => Exec["vs_create_${vserver}"],
+      }
+    }
+  default {
+      exec { "vattribute --set --xid `cat /etc/vservers/$vserver/context` --flag ~sched_hard":
+        subscribe   => File["/etc/vservers/$vserver/sched/fill_rate",  "/etc/vservers/$vserver/sched/fill_rate2",
+                            "/etc/vservers/$vserver/sched/interval",   "/etc/vservers/$vserver/sched/interval2",
+                            "/etc/vservers/$vserver/sched/tokens-min", "/etc/vservers/$vserver/sched/tokens-max",
+                            "/etc/vservers/$vserver/sched/tokens",     "/etc/vservers/$vserver/sched/idle-time"],
+        refreshonly => true, 
+        require     => Exec["vs_create_${vserver}"],
+      }
+    }
+  }
+}