Title Salt test
Author BattousaiX
Link http://thunked.org/p/view/pri/
Created 2012-03-17 19:11:05
Expires never
Filename output
Language @Formula/@Command
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
[root@salt-master python]# python test.py
CPU Architecture: x86_64
Virtual: physical
Salt Version: 0.9.7
Os Release: 6.2
Localhost: salt-minion
Mysql Version:
Python Version: (2, 6, 6, 'final', 0)
Number of CPUs: 4
Serial Number:
Memory Total: 996
Host: salt-minion
Product Name:
LSB Distribution Codename:
Fully Qualified Domain Name: salt-minion
Manufacturer:
Bios Version:
Kernel Release: 2.6.32-220.7.1.el6.x86_64
LSB Distribution Release:
OS Code: Final
LSB Distribution Description:
Salt Path: /usr/lib/python2.6/site-packages/salt
Kernel: Linux
Domain:
Bios Release Date:
OS: CentOS
CPU Flags: ('fpu', 'vme', 'de', 'pse', 'tsc', 'msr', 'pae', 'mce', 'cx8', 'apic', 'mtrr', 'pge', 'mca', 'cmov', 'pat', 'pse36', 'clflush', 'mmx', 'fxsr', 'sse', 'sse2', 'ht', 'syscall', 'nx', 'lm', 'constant_tsc', 'rep_good', 'pni', 'ssse3', 'lahf_lm')
CPU Model: Intel(R) Core(TM) i5-2410M CPU @ 2.30GHz
Process List: ps -efH
path: /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
Python Path: ('/usr/bin', '/usr/lib64/python26.zip', '/usr/lib64/python2.6', '/usr/lib64/python2.6/plat-linux2', '/usr/lib64/python2.6/lib-tk', '/usr/lib64/python2.6/lib-old', '/usr/lib64/python2.6/lib-dynload', '/usr/lib64/python2.6/site-packages', '/usr/lib/python2.6/site-packages', '/usr/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg-info')
**************************
CPU Architecture: x86_64
Virtual: VirtualBox
Salt Version: 0.9.7
Os Release: 11.10
Localhost: salt-minion-ubuntu
Mysql Version:
Python Version: (2, 7, 2, 'final', 0)
Number of CPUs: 4
Serial Number: 0
Memory Total: 2008
Host: salt-minion-ubuntu
Product Name: VirtualBox
LSB Distribution Codename: oneiric
Fully Qualified Domain Name: salt-minion-ubuntu
Manufacturer: innotek GmbH
Bios Version: VirtualBox
Kernel Release: 3.0.0-12-generic
LSB Distribution Release: 11.10
OS Code: oneiric
LSB Distribution Description: Ubuntu 11.10
Salt Path: /usr/lib/pymodules/python2.7/salt
Kernel: Linux
Domain:
Bios Release Date: 12/01/2006
OS: Ubuntu
CPU Flags: ('fpu', 'vme', 'de', 'pse', 'tsc', 'msr', 'pae', 'mce', 'cx8', 'apic', 'sep', 'mtrr', 'pge', 'mca', 'cmov', 'pat', 'pse36', 'clflush', 'mmx', 'fxsr', 'sse', 'sse2', 'ht', 'syscall', 'nx', 'lm', 'constant_tsc', 'rep_good', 'nopl', 'pni', 'ssse3', 'lahf_lm')
CPU Model: Intel(R) Core(TM) i5-2410M CPU @ 2.30GHz
Process List: ps -efH
path: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Python Path: ('/usr/bin', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PIL', '/usr/lib/python2.7/dist-packages/gst-0.10', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7', '/usr/lib/python2.7/dist-packages/ubuntu-sso-client', '/usr/lib/python2.7/dist-packages/ubuntuone-client', '/usr/lib/python2.7/dist-packages/ubuntuone-control-panel', '/usr/lib/python2.7/dist-packages/ubuntuone-couch', '/usr/lib/python2.7/dist-packages/ubuntuone-installer', '/usr/lib/python2.7/dist-packages/ubuntuone-storage-protocol')
**************************
Filename test.py
Language @Formula/@Command
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
[root@salt-master python]# cat test.py
import salt.client
import simplejson
import re

def get_deep_item(d, name, default=None):
    v = d
    for n in name.split('#'):
        v = v.get(n)
        if v is None:
            return default
    return v

def fixData(str):
    if "KeyError: 'mysql.version'" in str:
        return ''
    else:
        return str

def getServerDetails(server, data):
    mysql_version=fixData(get_deep_item(data, server+'#mysql.version', ''))

    current_server={
        'Bios Version': get_deep_item(data, server+'#grains.items#biosversion', ''),
        'Kernel': get_deep_item(data, server+'#grains.items#kernel', ''),
        'Domain': get_deep_item(data, server+'#grains.items#domain', ''),
        'Kernel Release': get_deep_item(data, server+'#grains.items#kernelrelease', ''),
        'Python Path': get_deep_item(data, server+'#grains.items#pythonpath', ''),
        'Serial Number': get_deep_item(data, server+'#grains.items#serialnumber', ''),
        'Memory Total': get_deep_item(data, server+'#grains.items#mem_total', ''),
        'Os Release': get_deep_item(data, server+'#grains.items#osrelease', ''),
        'Process List': get_deep_item(data, server+'#grains.items#ps', ''),
        'LSB Distribution Description': get_deep_item(data, server+'#grains.items#lsb_distrib_description', ''),
        'Number of CPUs': get_deep_item(data, server+'#grains.items#num_cpus', ''),
        'Virtual': get_deep_item(data, server+'#grains.items#virtual', ''),
        'LSB Distribution Release': get_deep_item(data, server+'#grains.items#lsb_distrib_id', ''),
        'CPU Flags': get_deep_item(data, server+'#grains.items#cpu_flags', ''),
        'Localhost': get_deep_item(data, server+'#grains.items#localhost', ''),
        'Salt Version': get_deep_item(data, server+'#grains.items#saltversion', ''),
        'LSB Distribution Release': get_deep_item(data, server+'#grains.items#lsb_distrib_release', ''),
        'CPU Model': get_deep_item(data, server+'#grains.items#cpu_model', ''),
        'Salt Path': get_deep_item(data, server+'#grains.items#saltpath', ''),
        'Host': get_deep_item(data, server+'#grains.items#host', ''),
        'OS Code': get_deep_item(data, server+'#grains.items#oscodename', ''),
        'path': get_deep_item(data, server+'#grains.items#path', ''),
        'Python Version': get_deep_item(data, server+'#grains.items#pythonversion', ''),
        'Manufacturer': get_deep_item(data, server+'#grains.items#manufacturer', ''),
        'Fully Qualified Domain Name': get_deep_item(data, server+'#grains.items#fqdn', ''),
        'Bios Release Date': get_deep_item(data, server+'#grains.items#biosreleasedate', ''),
        'Product Name': get_deep_item(data, server+'#grains.items#productname', ''),
        'CPU Architecture': get_deep_item(data, server+'#grains.items#cpuarch', ''),
        'LSB Distribution Codename': get_deep_item(data, server+'#grains.items#lsb_distrib_codename', ''),
        'OS': get_deep_item(data, server+'#grains.items#os', ''),
        'Mysql Version': mysql_version,
    }
    return current_server

client=salt.client.LocalClient()
#data=client.cmd('*',  'grains.items', [])
data=client.cmd('*',  ['grains.items', 'mysql.version'], [[], []])
#tmp=simplejson.dumps(data, indent=4)
#print tmp

server_list=[]
for server in data:
    server_list.append(getServerDetails(server, data))


for server in server_list:
    for k,v in server.items():
        print '%s: %s' % (k,v)
    print '**************************'
Filename output from mysql check before fixData function
Language @Formula/@Command
1.
2.
3.
4.
Traceback (most recent call last):
  File "/usr/lib/python2.6/site-packages/salt/minion.py", line 289, in _thread_multi_return
    = self.functions[data['fun'][ind]](*data['arg'][ind])
KeyError: 'mysql.version'