-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsnapomatic.discover
executable file
·107 lines (89 loc) · 4.12 KB
/
snapomatic.discover
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#! /usr/bin/python3
import sys
pythonversion=sys.version_info
if pythonversion[0] != 3 or pythonversion[1] < 6:
print("This script requires Python 3.6 or higher")
sys.exit(1)
import os
sys.path.append(sys.path[0] + "/NTAPlib")
import discoverPaths
import userio
snapomaticversion='dev'
validoptions={'target':'multistr',
'debug':'bool', \
'multipaths':'bool', \
'restdebug':'bool'}
usage="Version " + snapomaticversion + "\n" + \
"discover --target [filesystem or LUN]\n" + \
" [--multipaths]\n" + \
" (show /etc/multipath.conf template)\n" + \
" [--debug]\n" + \
" (show debug output)\n"
myopts=userio.validateoptions(sys.argv,validoptions,usage=usage)
debug=0
if myopts.debug:
debug=debug+1
if myopts.restdebug:
debug=debug+2
mypaths=discoverPaths.discoverPaths(myopts.target,multipath=myopts.multipaths,debug=debug)
mypaths.go()
paths=list(mypaths.paths.keys())
paths.sort()
multipaths=[]
pathgrid=[['path','mountpoint','fs','vg','lv','pv','SVM','export','volume','lun']]
for path in paths:
if mypaths.paths[path]['fstype'] in ['xfs']:
pvs=list(mypaths.vgs[mypaths.paths[path]['device'][0]]['pvs'].keys())
pathgrid.append([path,
mypaths.paths[path]['mountpoint'],
mypaths.paths[path]['fstype'],
mypaths.paths[path]['device'][0],
mypaths.paths[path]['device'][1],
pvs[0],
mypaths.luns[pvs[0]].svm['name'],
'',
mypaths.luns[pvs[0]].volume,
mypaths.luns[pvs[0]].path.split('/')[-1]])
for x in range(1,len(pvs)):
pathgrid.append(['','','','','',
pvs[x],
mypaths.luns[pvs[x]].svm['name'],
'',
mypaths.luns[pvs[x]].volume,
mypaths.luns[pvs[x]].path.split('/')[-1],
'',''])
elif mypaths.paths[path]['fstype'] in ['nfs','nfs4']:
for vol in mypaths.nfsvolumes[mypaths.paths[path]['device']]['volumes'].keys():
pathgrid.append([path,
mypaths.paths[path]['mountpoint'],
mypaths.paths[path]['fstype'],
'','','',
mypaths.nfsvolumes[mypaths.paths[path]['device']]['volumes'][vol]['svm']['name'],
mypaths.nfsvolumes[mypaths.paths[path]['device']]['volumes'][vol]['junction-path'],
mypaths.nfsvolumes[mypaths.paths[path]['device']]['volumes'][vol]['name'],
''])
elif mypaths.paths[path]['fstype'] == 'block':
pathgrid.append([path,
'',
mypaths.paths[path]['fstype'],
'','','',
mypaths.luns[mypaths.paths[path]['device']].svm['name'],
'',
mypaths.luns[mypaths.paths[path]['device']].volume,
mypaths.luns[mypaths.paths[path]['device']].path.split('/')[-1]])
if myopts.multipaths:
if mypaths.luns[mypaths.paths[path]['device']].wwid:
multipaths.append(' multipath {')
multipaths.append(' wwid ' + mypaths.luns[mypaths.paths[path]['device']].wwid)
multipaths.append(' alias ' + mypaths.luns[mypaths.paths[path]['device']].volume + \
"_" + \
mypaths.luns[mypaths.paths[path]['device']].path.split('/')[-1])
multipaths.append(' }')
if len(mypaths.unknown) > 0:
for item in mypaths.unknown:
pathgrid.append([item,'?','?','?','?','?','?','?','?','?'])
userio.grid(pathgrid)
if myopts.multipaths:
userio.message("multipaths {")
userio.message(multipaths)
userio.message("}")