Ajout d'infos d'archi et virtualisation.
authorProgfou <jean-christophe.andre@auf.org>
Sat, 13 Feb 2016 00:29:27 +0000 (19:29 -0500)
committerProgfou <jean-christophe.andre@auf.org>
Sat, 13 Feb 2016 00:29:27 +0000 (19:29 -0500)
scripts/ansible-debian-versions

index 804a556..57a8425 100755 (executable)
@@ -3,43 +3,83 @@
 import ansible.runner
 from time import strftime
 
 import ansible.runner
 from time import strftime
 
+# constantes
+
+URL = "http://git.auf.org/?p=ansible.git;a=blob;f=scripts/ansible-debian-versions"
+
 release_color = {
   "8": "00ae00", "7": "e6ff00", "6": "ff950e", "5": "ff420e",
 }
 default_release_color = "ff0000"
 unknown_release_color = "f0f0f0"
 
 release_color = {
   "8": "00ae00", "7": "e6ff00", "6": "ff950e", "5": "ff420e",
 }
 default_release_color = "ff0000"
 unknown_release_color = "f0f0f0"
 
+# collecte des données
+
 pm = ansible.runner.Runner(module_name='setup', timeout=5, subset='all')
 out = pm.run()
 
 pm = ansible.runner.Runner(module_name='setup', timeout=5, subset='all')
 out = pm.run()
 
-#import json
-#file('/tmp/out.json', 'w').write(json.dumps(out, sort_keys=True, indent=4, separators=(',', ': ')))
+# sauvegarde temporaire pour débogage
+
+import json
+file('/tmp/out.json', 'w').write(json.dumps(out, sort_keys=True, indent=4, separators=(',', ': ')))
+
+# traitement des données
 
 server_list = []
 
 server_list = []
+
 for server,data in out['contacted'].items():
 for server,data in out['contacted'].items():
-    if 'ansible_facts' in data and 'ansible_lsb' in data['ansible_facts']:
+    data['name'] = server
+    facts = data['ansible_facts']
+    if 'ansible_lsb' in facts:
         lsb_data = data['ansible_facts']['ansible_lsb']
         lsb_data = data['ansible_facts']['ansible_lsb']
-        server_list.append({
-            'name': server,
-            'description': lsb_data['description'],
-            'major_release': lsb_data['major_release'],
-        })
+        data['description'] = lsb_data['description']
+        data['major_release'] = lsb_data['major_release']
+    else:
+        data['description'] = 'inconnue (information non disponible)'
+        data['major_release'] = '0'
+    if 'ansible_virtualization_type' in facts and \
+       'ansible_virtualization_role' in facts:
+        virtual_info = facts['ansible_virtualization_type'] \
+             + ' / ' + facts['ansible_virtualization_role']
+        if virtual_info == 'NA / NA':
+            virtual_info = "physique"
+        if facts['ansible_virtualization_role'] != 'guest':
+            virtual_info = "'''" + virtual_info + "'''"
+        virtual_info = virtual_info.replace('host', 'hôte')
+        virtual_info = virtual_info.replace('guest', 'invité')
+        data['virtual_info'] = virtual_info
     else:
     else:
-        server_list.append({
-            'name': server,
-            'description': 'inconnue (information non disponible)',
-            'major_release': '0',
-        })
+        data['virtual_info'] = 'inconnu'
+    if 'ansible_machine' in facts and 'ansible_userspace_bits' in facts:
+        data['architecture'] = facts['ansible_userspace_bits'] + ' bits' \
+                             + ' / ' + facts['ansible_machine']
+    else:
+        data['architecture'] = 'inconnue'
+    server_list.append({
+        'name': data['name'],
+        'description': data['description'],
+        'major_release': data['major_release'],
+        'architecture': data['architecture'],
+        'virtual_info': data['virtual_info'],
+    })
+
 for server,data in out['dark'].items():
 for server,data in out['dark'].items():
-        server_list.append({
-            'name': server,
-            'description': 'inconnue (échec de connexion)',
-            'major_release': '0',
-        })
+    server_list.append({
+        'name': server,
+        'description': 'inconnue (échec de connexion)',
+        'major_release': '0',
+        'architecture': 'inconnu',
+        'virtual_info': 'inconnu',
+    })
+
+# tri de la liste des serveurs par version de distribution croissante
 
 server_list.sort(key=lambda x: '%03d-%s' % (int(x['major_release']),x['name']))
 
 
 server_list.sort(key=lambda x: '%03d-%s' % (int(x['major_release']),x['name']))
 
-print "||<tablebgcolor=\"#cccccc\">'''Serveur'''||'''Version Debian au %s'''||" % strftime('%Y-%m-%d')
+# affichage du code wiki MoinMoin correspondant
+
+print "||<tablebgcolor=\"#cccccc\">'''Serveur'''||'''Version du système au %s'''||'''Architecture'''||'''Virtualisation'''||" % strftime('%Y-%m-%d')
+
 for server in server_list:
     if server['major_release'] == '0':
         server['color'] = unknown_release_color
 for server in server_list:
     if server['major_release'] == '0':
         server['color'] = unknown_release_color
@@ -47,5 +87,6 @@ for server in server_list:
         server['color'] = release_color[server['major_release']]
     else:
         server['color'] = default_release_color
         server['color'] = release_color[server['major_release']]
     else:
         server['color'] = default_release_color
-    print "||<rowbgcolor=\"#%(color)s\">%(name)s||%(description)s||" % server
-print "(tableau généré via le script [[http://git.auf.org/?p=ansible.git;a=blob;f=scripts/ansible-debian-versions|ansible-debian-versions]])"
+    print "||<rowbgcolor=\"#%(color)s\">%(name)s||%(description)s||%(architecture)s||%(virtual_info)s||" % server
+
+print "(tableau généré via le script [[%s|ansible-debian-versions]])" % URL