11import logging
2- import json
3- from netapp_ontap import config , HostConnection , NetAppRestError , utils
2+ from netapp_ontap import NetAppRestError
43from netapp_ontap .resources import Volume
5- from netapp_ontap .resources import file_info , FileInfo
6-
7- from utils import Argument , parse_args , setup_logging , setup_connection
4+ from netapp_ontap .resources import FileInfo
5+ from utils import Argument , parse_args , setup_connection
86
97# REFERENCES
108# https://devnet.netapp.com/restapi.php
1311# https://library.netapp.com/ecmdocs/ECMLP2885777/html/resources/file_info.html
1412# https://community.netapp.com/t5/ONTAP-Rest-API-Discussions/FileInfo-Received-list-directory-more-than-one-record/m-p/440962
1513
14+
1615def list_files (volume , path ):
1716 """Recursively list files on a volume"""
1817 files = FileInfo .get_collection (volume .uuid , path )
@@ -24,6 +23,7 @@ def list_files(volume, path):
2423 print (f"{ path } { f .name } /" )
2524 list_files (volume , f"{ path } { f .name } /" )
2625
26+
2727def delete (volume , pathname , recursive = False ):
2828 """Delete a file or directory on a volume"""
2929 try :
@@ -34,41 +34,51 @@ def delete(volume, pathname, recursive=False):
3434 extra = "(recursively) "
3535 else :
3636 extra = ""
37- logging .critical (f"delete: File or directory { pathname } was not deleted { extra } on { volume .name } ({ error } )" )
37+ logging .critical (
38+ f"delete: File or directory { pathname } was not deleted { extra } on { volume .name } ({ error } )" )
39+
3840
3941def create_directory (volume , pathname ):
4042 """Create a directory on a volume"""
4143 resource = FileInfo (volume .uuid , pathname )
42- resource .type = "directory"
44+ resource .type = "directory"
4345 resource .unix_permissions = "644"
4446 try :
4547 resource .post ()
4648 except NetAppRestError as error :
47- logging .critical (f"create_directory: Directory { pathname } was not created on { volume .name } ({ error } )" )
49+ logging .critical (
50+ f"create_directory: Directory { pathname } was not created on { volume .name } ({ error } )" )
51+
4852
4953def create_file (volume , pathname , contents ):
5054 try :
5155 resource = FileInfo (volume .uuid , pathname )
52- resource .post (hydrate = True , data = "the data to be written to the new file" )
56+ resource .post (
57+ hydrate = True , data = "the data to be written to the new file" )
5358 resource .patch ()
5459 except NetAppRestError as error :
55- logging .critical (f"create_file: File { pathname } was not created on { volume .name } ({ error } )" )
60+ logging .critical (
61+ f"create_file: File { pathname } was not created on { volume .name } ({ error } )" )
62+
5663
5764def file_handling (volume_name ):
58- try :
65+ try :
5966 all_volumes = list (Volume .get_collection ())
60- for vol in all_volumes :
61- if vol .name == volume_name :
67+ for vol in all_volumes :
68+ if vol .name == volume_name :
6269 print (f"Volume: { vol .name } ({ vol .uuid } )" )
6370 create_file (vol , "alice" , "lorem ipsum" )
6471
6572 create_directory (vol , "bobsfiles" )
6673 create_file (vol , "bobsfiles/bob" , "lorem ipsum" )
6774
6875 create_directory (vol , "bobsfiles/charliesfiles" )
69- create_file (vol , "bobsfiles/charliesfiles/charlie1" , "lorem ipsum" )
70- create_file (vol , "bobsfiles/charliesfiles/charlie2" , "lorem ipsum" )
71- create_file (vol , "bobsfiles/charliesfiles/charlie3" , "lorem ipsum" )
76+ create_file (
77+ vol , "bobsfiles/charliesfiles/charlie1" , "lorem ipsum" )
78+ create_file (
79+ vol , "bobsfiles/charliesfiles/charlie2" , "lorem ipsum" )
80+ create_file (
81+ vol , "bobsfiles/charliesfiles/charlie3" , "lorem ipsum" )
7282
7383 list_files (vol , "/" )
7484
@@ -79,6 +89,7 @@ def file_handling(volume_name):
7989 except NetAppRestError as error :
8090 print ("Exception :" + str (error ))
8191
92+
8293def main () -> None :
8394 """Main function"""
8495
@@ -93,5 +104,6 @@ def main() -> None:
93104 setup_connection (args .cluster , args .api_user , args .api_pass )
94105 file_handling (args .volume_name )
95106
107+
96108if __name__ == "__main__" :
97109 main ()
0 commit comments