1+ import cterasdk
2+ from filer import get_filer , get_filers
3+ from cterasdk import Edge , edge_types , edge_enum
4+ from login import global_admin_login
5+
6+ def copy_nfs_share (ga , share , dest ):
7+ try :
8+ tenant = ga .users .session ().user .tenant
9+ filer_dest = get_filer (ga , dest , tenant )
10+
11+ client_list = []
12+ for client in share .trustedNFSClients :
13+ if client .accessLevel == "ReadWrite" :
14+ client_list .append (edge_types .NFSv3AccessControlEntry (client .address , client .netmask , edge_enum .FileAccessMode .RW ))
15+ elif client .accessLevel == "ReadOnly" :
16+ client_list .append (edge_types .NFSv3AccessControlEntry (client .address , client .netmask , edge_enum .FileAccessMode .RO ))
17+
18+ filer_dest .shares .add (share .name , share .directory [1 :], export_to_nfs = True , trusted_nfs_clients = client_list )
19+ except Exception as e :
20+ print ("Failed to copy share: %s" % share .name )
21+ print (e )
22+
23+ def get_nfs_shares (ga , source ):
24+ tenant = ga .users .session ().user .tenant
25+ filer = get_filer (ga , source , tenant )
26+
27+ try :
28+ shares = filer .shares .get ()
29+
30+ nfs_shares = []
31+
32+ for share in shares :
33+ if share .exportToNFS :
34+ nfs_shares .append (share )
35+
36+ return nfs_shares
37+ except Exception as e :
38+ print ("Failed to get shares from device: %s" % source )
39+ print (e )
40+ return None
41+
42+ def copy_nfs_shares (ga , source , dest ):
43+ try :
44+ tenant = ga .users .session ().user .tenant
45+ filer_source = get_filer (ga , source , tenant )
46+ filer_dest = get_filer (ga , dest , tenant )
47+
48+ nfs_shares_source = get_nfs_shares (ga , source )
49+
50+ for share in nfs_shares_source :
51+ try :
52+ #get the nfs clients from the source share
53+ source_nfs_clients = filer_source .shares .get (share .name ).trustedNFSClients
54+
55+ print (dir (source_nfs_clients [0 ]))
56+
57+ print ("nfs client accessLevel: %s" % source_nfs_clients [0 ].accessLevel )
58+ print ("nfs client address: %s" % source_nfs_clients [0 ].address )
59+ print ("nfs client netmask: %s" % source_nfs_clients [0 ].netmask )
60+
61+ client_list = []
62+ for client in source_nfs_clients :
63+ if client .accessLevel == "ReadWrite" :
64+ client_list .append (edge_types .NFSv3AccessControlEntry (client .address , client .netmask , edge_enum .FileAccessMode .RW ))
65+ elif client .accessLevel == "ReadOnly" :
66+ client_list .append (edge_types .NFSv3AccessControlEntry (client .address , client .netmask , edge_enum .FileAccessMode .RO ))
67+
68+ filer_dest .shares .add (share .name , share .directory [1 :], export_to_nfs = True , trusted_nfs_clients = client_list )
69+ except Exception as e :
70+ print ("Failed to copy share: %s" % share .name )
71+ print (e )
72+
73+ except Exception as e :
74+ print ("Failed to copy shares from device: %s to device: %s" % (source , dest ))
75+ print (e )
76+
77+
78+ """if __name__ == "__main__":
79+ ga = global_admin_login("192.168.22.197", "admin", "lap6056*", True)
80+ try:
81+ copy_nfs_shares(ga, "lakegw2", "labgw")
82+ except Exception as e:
83+ print(e)
84+ finally:
85+ ga.logout()"""
0 commit comments