pg access quantz->ullmann
[mirror/dsa-puppet.git] / modules / motd / templates / motd.erb
index 7b670c1..2430bb1 100644 (file)
@@ -2,7 +2,7 @@
 This device is for authorized users only.  All traffic on this device
 is monitored and will be used as evidence for prosecutions.  By using
 this machine you agree to abide by the Debian Machines Usage Policies
-(http://www.debian.org/devel/dmup)
+<URL:http://www.debian.org/devel/dmup>.
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
@@ -11,54 +11,115 @@ def wrap(s, width=78)
       s.gsub(/(.{1,#{width}})(\s+|\Z)/, "\\1\n")
 end
 
+def markup(l)
+  l = l.gsub(/\[\[(.*?)\|(.*?)\]\]/, '\2')
+  l = l.gsub(/\[\[(\*|-)?(.*?)\]\]/, '\2')
+  return l
+end
+
 purp = ''
-if nodeinfo.has_key?('nameinfo')
-  purp += wrap(nodeinfo['nameinfo']) + "\n\n"
+if scope.lookupvar('site::nodeinfo').has_key?('nameinfo')
+  purp += wrap(scope.lookupvar('site::nodeinfo')['nameinfo']) + "\n\n"
 end
 
+ninfo = scope.lookupvar('site::nodeinfo')
+
 purp += 'Welcome to ' + fqdn
-if (nodeinfo['ldap'].has_key?('purpose'))
-  if nodeinfo['ldap']['purpose'].include?('buildd')
+if (scope.lookupvar('site::nodeinfo')['ldap'].has_key?('purpose'))
+  p = scope.lookupvar('site::nodeinfo')['ldap']['purpose'].clone()
+  extra = ''
+
+  if p.delete('buildd')
     purp += ", the Debian "
-    if nodeinfo['ldap'].has_key?('architecture')
-      purp += nodeinfo['ldap']['architecture'][0]
+    if scope.lookupvar('site::nodeinfo')['ldap'].has_key?('architecture')
+      purp += scope.lookupvar('site::nodeinfo')['ldap']['architecture'][0]
     end
-    purp += " build daemon\n"
-  elsif nodeinfo['ldap']['purpose'].include?('porterbox')
+    purp += " build daemon"
+  end
+
+  if p.delete('porterbox')
     purp += ", the Debian "
-    if nodeinfo['ldap'].has_key?('architecture')
-      purp += nodeinfo['ldap']['architecture'][0]
+    if scope.lookupvar('site::nodeinfo')['ldap'].has_key?('architecture')
+      purp += scope.lookupvar('site::nodeinfo')['ldap']['architecture'][0]
     end
-    purp += " porterbox\n"
-    purp += "\n"
-    purp += "See 'dchroot -l' for a list of available chroots.\n"
-    if nodeinfo['ldap'].has_key?('admin')
-      purp += "Please contact #{nodeinfo['ldap']['admin'][0]} for install requests,\n"
-      purp += "following the recommendations in <URL:http://dsa.debian.org/doc/install-req/>.\n"
+    purp += " porterbox"
+    extra += "\n"
+    extra += "See 'dchroot -l' or 'schroot -l' for a list of available chroots.\n"
+    if scope.lookupvar('site::nodeinfo')['ldap'].has_key?('admin')
+      extra += "Please contact #{ninfo['ldap']['admin'][0]} for install requests,\n"
+      extra += "following the recommendations in <URL:http://dsa.debian.org/doc/install-req/>.\n"
     end
-  else
+  end
+
+  if p.size() > 0
     purp += ", used for the following services:\n"
-    nodeinfo['ldap']['purpose'].sort.each do |l|
-      if l =~ /\[\[(\*|-)?(.*?)\]\]/
-        l = $2
-      end
-      if l =~ /\[\[(.*?)\|(.*?)\]\]/
-        l = $2
-      end
+    scope.lookupvar('site::nodeinfo')['ldap']['purpose'].sort.each do |l|
+      l = markup(l)
       purp += "\t" + l + "\n"
     end
+  else
+    purp += ".\n"
   end
+
+  purp += extra
 else
-  purp += "\n"
+  purp += ".\n"
+end
+
+purp += "\n"
+
+if (scope.lookupvar('site::nodeinfo')['ldap'].has_key?('physicalHost'))
+  purp += wrap("This virtual server runs on the physical host #{ninfo['ldap']['physicalHost'][0]}, " +
+               "which is hosted at #{ninfo['hoster']['longname']}."
+               )
+elsif scope.lookupvar('site::nodeinfo')['hoster']['name']
+  purp += wrap("This server is hosted at #{ninfo['hoster']['longname']}.")
 end
 
-if (nodeinfo['ldap'].has_key?('physicalHost'))
-  purp += "\nThis virtual server runs on the physical host #{nodeinfo['ldap']['physicalHost'][0]}.\n"
+
+vms = []
+scope.lookupvar('site::allnodeinfo').keys.sort.each do |node|
+  if scope.lookupvar('site::allnodeinfo')[node]['physicalHost'] and scope.lookupvar('site::allnodeinfo')[node]['physicalHost'].include?(fqdn)
+    vms << node
+  end
+end
+unless vms.empty?
+  purp += "\nThe following virtual machines run on this system:\n"
+  vms.each do |node|
+    purp += "\t- #{node}"
+    if scope.lookupvar('site::allnodeinfo')[node]['purpose']
+      purp += ":\n"
+      scope.lookupvar('site::allnodeinfo')[node]['purpose'].sort.each do |l|
+        l = markup(l)
+        purp += "\t    " + l + "\n"
+      end
+    else
+      purp += "\n"
+    end
+  end
 end
 
-if nodeinfo.has_key?('footer')
-  purp += "\n" + wrap(nodeinfo['footer']) + "\n"
+
+if scope.lookupvar('::cluster').to_s != 'undefined'
+  purp += "\nThis server is a node in ganeti cluster: "
+  purp += scope.lookupvar('::cluster').to_s + ".\n"
+  nodes = scope.lookupvar('::cluster_nodes').to_s.split.sort
+  nodes.each do |node|
+    purp += "\t" + node + "\n"
+  end
+  nodes.reject{|node| node.eql?(fqdn)}.each do |node|
+    purp += "\t" + node + "\n"
+    scope.lookupvar('site::allnodeinfo')[node]['ipHostNumber'].each do |ip|
+      purp += "\t\t" + ip + "\n"
+    end
+  end
 end
+
+
+if scope.lookupvar('site::nodeinfo').has_key?('footer')
+  purp += "\n" + wrap(scope.lookupvar('site::nodeinfo')['footer']) + "\n"
+end
+
 purp
 -%>