components/zsh/Completion/Unix/Command/_zpool
author Danek Duvall <danek.duvall@oracle.com>
Thu, 17 Feb 2011 13:44:40 -0800
changeset 93 b579c7b1bb44
child 429 02007d525e89
permissions -rw-r--r--
7016731 move zsh from sfw to userland
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
93
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     1
#compdef zpool
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     2
# Synced with the Nevada build 131 man page
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     3
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     4
_zpool() {
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     5
	local context state line expl
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     6
	local -a subcmds fields ro_props rw_props versions create_properties_dataset
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     7
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     8
	subcmds=(
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     9
		create destroy add remove list iostat status online
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    10
		offline clear attach detach replace scrub import export
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    11
		upgrade history get set split
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    12
	)
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    13
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    14
	versions=(
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    15
		${${${(M)"${(f)$(zpool upgrade -v)}":#[[:space:]]#<->*}##[[:space:]]}%%[[:space:]]*}
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    16
	)
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    17
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    18
	ro_props=(
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    19
		"all[All properties]"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    20
		"alloc[Space allocated]"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    21
		"capacity[Space used (percentage)]"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    22
		"dedupratio[Deduplication ratio]"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    23
		"free[Space unallocated]"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    24
		"guid[Unique identifier]"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    25
		"health[Health status]"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    26
		"size[Total size]"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    27
	)
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    28
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    29
	rw_props=(
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    30
		"altroot[Alternate root directory]:value:"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    31
		"autoexpand[Automatic pool expansion]:value:(on off)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    32
		"autoreplace[Automatic device replacement]:value:(on off)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    33
		"bootfs[Default bootable dataset]:value:"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    34
		"cachefile[Pool configuration cache file location]:value:"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    35
		"delegation[Delegated administration]:value:(on off)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    36
		"failmode[Failure-mode behavior]:value:(wait continue panic)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    37
		"listsnaps[Show snapshots in 'zfs list']:value:(on off)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    38
		"version[Pool version]:version:($versions)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    39
	)
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    40
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    41
	fields=( ${ro_props%%:*} ${rw_props%%:*} )
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    42
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    43
	create_properties_dataset=(
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    44
		"aclinherit:value:(discard noallow restricted passthrough passthrough-x)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    45
		"aclmode:value:(discard groupmask passthrough)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    46
		"atime:value:(on off)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    47
		"canmount:value:(on off noauto)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    48
		"checksum:value:(on off fletcher2 fletcher4 sha256)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    49
		"compression:value:(on off lzjb gzip gzip-{1..9})"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    50
		"copies:value:(1 2 3)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    51
		"devices:value:(on off)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    52
		"exec:value:(on off)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    53
		"groupquota@:value:" # TODO: complete group=size|none
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    54
		"logbias:value:(latency throughput)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    55
		"mountpoint:path, 'legacy', or 'none':{if [[ -prefix /* ]]; then _path_files -/; else _wanted mountpoints expl 'mountpoint (type \"/\" to start completing paths)' compadd legacy none; fi}"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    56
		"nbmand:value:(on off)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    57
		"primarycache:value:(all none metadata)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    58
		"quota:number or 'none':{if [[ -prefix [0-9]## ]]; then _message -e 'number'; elif [[ $PREFIX == quota= ]]; then _wanted none expl 'number or none' compadd none; else _wanted none expl 'quota' compadd none; fi}"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    59
		"readonly:value:(on off)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    60
		"recordsize:value:(512 1K 2K 4K 8K 16K 32K 64K 128K)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    61
		"refquota:number or 'none':{if [[ -prefix [0-9]## ]]; then _message -e 'number'; elif [[ $PREFIX == refquota= ]]; then _wanted none expl 'number or none' compadd none; else _wanted none expl 'refquota' compadd none; fi}"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    62
		"refreservation:number or 'none':{if [[ -prefix [0-9]## ]]; then _message -e 'number'; elif [[ $PREFIX == refreservation= ]]; then _wanted none expl 'number or none' compadd none; else _wanted none expl 'refreservation' compadd none; fi}"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    63
		"reservation:value:{if [[ -prefix [0-9]## ]]; then _message -e 'number'; elif [[ $PREFIX == reservation= ]]; then _wanted none expl 'number or none' compadd none; else _wanted none expl 'reservation' compadd none; fi}"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    64
		"secondarycache:value:(all none metadata)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    65
		"setuid:value:(on off)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    66
		"shareiscsi:value:(on off type=disk)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    67
		"sharenfs:value:(on off)" # or share(1M) options
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    68
		"sharesmb:value:(on off)" # or sharemgr(1M) options
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    69
		"snapdir:value:(hidden visible)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    70
		"userquota@:value:" # TODO: complete user=size|none
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    71
		"version:value:(1 2 current)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    72
		"volsize:value:" # <size>
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    73
		"vscan:value:(on off)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    74
		"xattr:value:(on off)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    75
		"zoned:value:(on off)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    76
	)
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    77
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    78
	if [[ $service == "zpool" ]]; then
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    79
		_arguments -C -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    80
			'-\?[Help]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    81
			'*::command:->subcmd' && return 0
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    82
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    83
		if (( CURRENT == 1 )); then
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    84
			_wanted commands expl "zpool subcommand" compadd -a subcmds
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    85
			return
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    86
		fi
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    87
		service="$words[1]"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    88
		curcontext="${curcontext%:*}=$service:"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    89
	fi
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    90
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    91
	case $service in
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    92
	(clear)
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    93
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    94
			'-F[Discard transactions to allow pool opening]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    95
			'-n[With -F, check if discarding transactions would work' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    96
			':pool name:_zfs_pool' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    97
			'*:virtual device:_files'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    98
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    99
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   100
	(create)
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   101
		# TODO: investigate better vdev handling
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   102
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   103
			'-o[Set pool property at creation time]:property:_values -s , "property" $rw_props' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   104
			'-O[Set dataset property at creation time]:property:_values -s , "property" $create_properties_dataset' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   105
			'-f[Force use of in-use devices]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   106
			'-n[Display configuration without creating pool]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   107
			'-R[Use alternate root]:alternate root:_files -/' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   108
			'-m[Set mountpoint for root dataset]:mountpoint:' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   109
			':pool name:' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   110
			'*:virtual device:_files'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   111
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   112
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   113
	(destroy)
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   114
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   115
			'-f[Force active datasets to be unmounted]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   116
			':pool name:_zfs_pool'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   117
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   118
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   119
	(add)
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   120
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   121
			'-f[Force use of in-use devices]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   122
			'-n[Display configuration without modifying pool]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   123
			':pool name:_zfs_pool' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   124
			'*:virtual device:_files'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   125
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   126
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   127
	(list)
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   128
		_arguments \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   129
			'-H[Scripted mode]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   130
			'-o[Fields to list]:field:_values -s , "field" $fields' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   131
			'::pool name:_zfs_pool'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   132
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   133
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   134
	(iostat)
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   135
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   136
			'-T[timestamp]:value:(u d)' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   137
			'-v[Verbose statistics]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   138
			'*::pool name:_zfs_pool' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   139
			'::interval:' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   140
			'::count:'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   141
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   142
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   143
	(status)
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   144
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   145
			'-v[Verbose information]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   146
			'-x[Show only unhealthy pools]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   147
			'*::pool name:_zfs_pool'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   148
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   149
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   150
	(offline)
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   151
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   152
			'-t[Offline until next reboot]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   153
			':pool name:_zfs_pool' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   154
			'*:virtual device:_files'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   155
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   156
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   157
	(online)
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   158
		_arguments \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   159
			':pool name:_zfs_pool' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   160
			'*:virtual device:_files'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   161
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   162
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   163
	(attach)
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   164
		# TODO: first device should choose first from existing.
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   165
		_arguments \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   166
			'-f[Force attach, even if in use]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   167
			':pool name:_zfs_pool' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   168
			':virtual device:_files' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   169
			':virtual device:_files'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   170
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   171
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   172
	(detach)
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   173
		_arguments \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   174
			':pool name:_zfs_pool' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   175
			':virtual device:_files'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   176
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   177
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   178
	(replace)
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   179
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   180
			'-f[Force attach, even if in use]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   181
			':pool name:_zfs_pool' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   182
			':virtual device:_files' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   183
			'::virtual device:_files'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   184
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   185
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   186
	(scrub)
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   187
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   188
			'-s[Stop scrubbing]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   189
			'*:pool name:_zfs_pool'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   190
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   191
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   192
	(export)
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   193
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   194
			'-f[Forcefully unmount all datasets]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   195
			'*:pool name:_zfs_pool'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   196
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   197
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   198
	(import)
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   199
		# TODO: -o should complete mount options, too
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   200
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   201
			'-D[Destroyed pools]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   202
			'(-d)*-c[Use cache file]:cache file:_files' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   203
			'(-c)*-d[Search for devices or files in directory]:directory:_files -/' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   204
			'-f[Force import]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   205
			'-R[Alternate root]:alternate root:_files -/' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   206
			'-o[Set pool or dataset property]:property:_values -s , "property" $create_properties_dataset $rw_props' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   207
			- set1 \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   208
			'*:pool name or id:_zfs_pool' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   209
			'::new pool name:' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   210
			- set2 \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   211
			'-a[All pools]'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   212
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   213
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   214
	(get)
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   215
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   216
			':property:_values -s , "property" $fields' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   217
			'*:pool name:_zfs_pool'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   218
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   219
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   220
	(set)
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   221
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   222
			':property:_values -s , "property" $rw_props' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   223
			'*:pool name:_zfs_pool'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   224
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   225
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   226
	(split)
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   227
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   228
			'-R[Alternate root]:alternate root:_files -/' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   229
			'-n[Display config without splitting]::' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   230
			'-o[Set pool or dataset property]:property:_values -s , "property" $create_properties_dataset $rw_props' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   231
			'*:pool name or id:_zfs_pool' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   232
			'::new pool name:' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   233
			'*:device:_files -/'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   234
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   235
	(upgrade)
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   236
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   237
			- set1 \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   238
			'-v[Display ZFS versions and descriptions]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   239
			- set2 \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   240
			"-V[Upgrade to given version]:version:($versions)" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   241
			'-a[Upgrade all pools]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   242
			'*:pool name:_zfs_pool'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   243
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   244
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   245
	(history)
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   246
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   247
			'-i[Display internal events]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   248
			'-l[Long format]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   249
			'*:pool name:_zfs_pool'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   250
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   251
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   252
	(*)
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   253
		_message "unknown zpool subcommand: $service"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   254
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   255
	esac
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   256
}
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   257
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   258
_zpool "$@"