-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathibm_listfcmappings
executable file
·64 lines (54 loc) · 2.44 KB
/
ibm_listfcmappings
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
#!/usr/bin/python2.7
#
# List all FlashCopy mappings parameters
from __future__ import print_function
import sys
from subprocess import check_output, Popen, PIPE
# Parsing arguments
import argparse
parser = argparse.ArgumentParser(description='List all FlashCopy mappings with all parameters')
parser.add_argument('device', metavar='DEVICE',
help='Hostname of the storage cluster')
parser.add_argument('--version', action='version', version='%(prog)s 0.1')
parser.add_argument('-v', '--verbose', default=False, action='store_true',
help='print verbose output')
args = parser.parse_args()
def open_ssh():
controlpath = "-oControlPath=~/.ssh/ssh-%r-%h-%p"
if args.verbose:
print("INFO: opening SSH control session")
return Popen(['ssh', '-T', '-oControlMaster=yes', controlpath, args.device], stdin=PIPE, stdout=None, stderr=None)
def close_ssh(sshproc):
controlpath = "-oControlPath=~/.ssh/ssh-%r-%h-%p"
if args.verbose:
print("INFO: closing SSH control session")
return sshproc.communicate("exit\n")
def cmd_ssh(cmd):
controlpath = "-oControlPath=~/.ssh/ssh-%r-%h-%p"
command = ["ssh", '-oControlMaster=no' , controlpath, args.device]
command.extend(cmd)
if args.verbose:
print("INFO: running command '{}'".format(' '.join(cmd)))
return check_output(command)
# Open SSH connection
sshproc = open_ssh()
output = cmd_ssh(["lsfcmap", "-nohdr", "-delim", ":"])
fields = ['id', 'name', 'source_vdisk_id', 'source_vdisk_name',
'target_vdisk_id', 'target_vdisk_name', 'group_id', 'group_name',
'status', 'progress', 'copy_rate', 'clean_progress', 'incremental',
'partner_FC_id', 'partner_FC_name', 'restoring', 'start_time',
'rc_controlled']
detailed = ['id', 'name', 'source_vdisk_id', 'source_vdisk_name',
'target_vdisk_id', 'target_vdisk_name', 'group_id', 'group_name',
'status', 'progress', 'copy_rate', 'start_time',
'dependent_mappings', 'autodelete', 'clean_progress', 'clean_rate',
'incremental', 'difference', 'grain_size', 'IO_group_id',
'IO_group_name', 'partner_FC_id', 'partner_FC_name', 'restoring',
'rc_controlled']
print(":".join(detailed))
for line in output.split():
mapping = dict(zip(fields, line.split(':')))
details = cmd_ssh(["lsfcmap", "-nohdr", "-delim", ":", mapping["id"]])
fcmap = ":".join(details.splitlines())
print(fcmap)
close_ssh(sshproc)