Add CSV import support for non-TrueNAS sources

- Add truenas_migrate/csv_source.py: parses SMB and NFS share definitions
  from customer-supplied CSV files; returns same dict shape as parse_archive()
  so migrate.py is untouched
- Add smb_shares_template.csv and nfs_shares_template.csv with annotated
  headers and example rows (# comment rows are skipped by the parser)
- Update cli.py: interactive wizard gains a source-type step (archive vs CSV);
  run() resolves CSV source via --smb-csv / --nfs-csv args; --debug-tar is now
  optional; argparse validates mutual exclusion of archive and CSV flags

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-05 11:27:16 -05:00
parent 880fa42f5b
commit 1f527476e6
4 changed files with 326 additions and 72 deletions

8
nfs_shares_template.csv Normal file
View File

@@ -0,0 +1,8 @@
path,comment,ro,maproot_user,maproot_group,mapall_user,mapall_group,security,hosts,networks,enabled
# Required columns : path
# security values : SYS KRB5 KRB5I KRB5P (space-separated for multiple; e.g. "SYS KRB5")
# hosts : space-separated hostnames or IPs allowed to mount (empty = any host)
# networks : space-separated CIDR networks (e.g. "192.168.1.0/24 10.0.0.0/8")
# Boolean columns : ro enabled (true or false)
# Lines starting with # are ignored. Delete the example row below and add your shares.
/mnt/pool/export,Example NFS export,false,root,wheel,,,SYS,,,true
Can't render this file because it contains an unexpected character in line 3 and column 83.