bash-completion: devlink: Extend bash-completion for new commands
Extend bash-completion for two new commands:
devlink trap policer set DEV policer POLICER [ rate RATE ] [ burst BURST ]
devlink trap policer show DEV policer POLICER
And for "policer" / "nopolicer" parameters in existing command:
devlink trap group set DEV group GROUP [ action { trap | drop } ]
[ policer POLICER ] [ nopolicer ]
Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: David Ahern <dsahern@gmail.com>
This commit is contained in:
parent
02a2a6683f
commit
0141ca64b8
|
|
@ -62,6 +62,11 @@ _devlink_direct_complete()
|
||||||
value=$(devlink -j trap group show 2>/dev/null \
|
value=$(devlink -j trap group show 2>/dev/null \
|
||||||
| jq ".trap_group[\"$dev\"][].name")
|
| jq ".trap_group[\"$dev\"][].name")
|
||||||
;;
|
;;
|
||||||
|
trap_policer)
|
||||||
|
dev=${words[4]}
|
||||||
|
value=$(devlink -j trap policer show 2>/dev/null \
|
||||||
|
| jq ".trap_policer[\"$dev\"][].policer")
|
||||||
|
;;
|
||||||
health_dev)
|
health_dev)
|
||||||
value=$(devlink -j health show 2>/dev/null | jq '.health' \
|
value=$(devlink -j health show 2>/dev/null | jq '.health' \
|
||||||
| jq 'keys[]')
|
| jq 'keys[]')
|
||||||
|
|
@ -678,6 +683,53 @@ _devlink_trap_set_action()
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Completion for devlink trap group set
|
||||||
|
_devlink_trap_group_set()
|
||||||
|
{
|
||||||
|
local -A settings=(
|
||||||
|
[action]=notseen
|
||||||
|
[policer]=notseen
|
||||||
|
[nopolicer]=notseen
|
||||||
|
)
|
||||||
|
|
||||||
|
if [[ $cword -eq 7 ]]; then
|
||||||
|
COMPREPLY=( $( compgen -W "action policer nopolicer" -- "$cur" ) )
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Mark seen settings
|
||||||
|
local word
|
||||||
|
for word in "${words[@]:7:${#words[@]}-1}"; do
|
||||||
|
if [[ -n $word ]]; then
|
||||||
|
if [[ "${settings[$word]}" ]]; then
|
||||||
|
settings[$word]=seen
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
case $prev in
|
||||||
|
action)
|
||||||
|
COMPREPLY=( $( compgen -W "trap drop" -- "$cur" ) )
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
policer)
|
||||||
|
_devlink_direct_complete "trap_policer"
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
local -a comp_words=()
|
||||||
|
|
||||||
|
# Add settings not seen to completions
|
||||||
|
local setting
|
||||||
|
for setting in "${!settings[@]}"; do
|
||||||
|
if [ "${settings[$setting]}" = notseen ]; then
|
||||||
|
comp_words+=( "$setting" )
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
COMPREPLY=( $( compgen -W "${comp_words[*]}" -- "$cur" ) )
|
||||||
|
}
|
||||||
|
|
||||||
# Completion for devlink trap group
|
# Completion for devlink trap group
|
||||||
_devlink_trap_group()
|
_devlink_trap_group()
|
||||||
{
|
{
|
||||||
|
|
@ -701,7 +753,80 @@ _devlink_trap_group()
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if [[ ${words[3]} == "set" ]]; then
|
if [[ ${words[3]} == "set" ]]; then
|
||||||
_devlink_trap_set_action 1
|
_devlink_trap_group_set
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Completion for devlink trap policer set
|
||||||
|
_devlink_trap_policer_set()
|
||||||
|
{
|
||||||
|
local -A settings=(
|
||||||
|
[rate]=notseen
|
||||||
|
[burst]=notseen
|
||||||
|
)
|
||||||
|
|
||||||
|
if [[ $cword -eq 7 ]]; then
|
||||||
|
COMPREPLY=( $( compgen -W "rate burst" -- "$cur" ) )
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Mark seen settings
|
||||||
|
local word
|
||||||
|
for word in "${words[@]:7:${#words[@]}-1}"; do
|
||||||
|
if [[ -n $word ]]; then
|
||||||
|
if [[ "${settings[$word]}" ]]; then
|
||||||
|
settings[$word]=seen
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
case $prev in
|
||||||
|
rate)
|
||||||
|
# Integer argument
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
burst)
|
||||||
|
# Integer argument
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
local -a comp_words=()
|
||||||
|
|
||||||
|
# Add settings not seen to completions
|
||||||
|
local setting
|
||||||
|
for setting in "${!settings[@]}"; do
|
||||||
|
if [ "${settings[$setting]}" = notseen ]; then
|
||||||
|
comp_words+=( "$setting" )
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
COMPREPLY=( $( compgen -W "${comp_words[*]}" -- "$cur" ) )
|
||||||
|
}
|
||||||
|
|
||||||
|
# Completion for devlink trap policer
|
||||||
|
_devlink_trap_policer()
|
||||||
|
{
|
||||||
|
case $cword in
|
||||||
|
3)
|
||||||
|
COMPREPLY=( $( compgen -W "set show" -- "$cur" ) )
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
4)
|
||||||
|
_devlink_direct_complete "dev"
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
5)
|
||||||
|
COMPREPLY=( $( compgen -W "policer" -- "$cur" ) )
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
6)
|
||||||
|
_devlink_direct_complete "trap_policer"
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [[ ${words[3]} == "set" ]]; then
|
||||||
|
_devlink_trap_policer_set
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -731,6 +856,10 @@ _devlink_trap()
|
||||||
_devlink_trap_$command
|
_devlink_trap_$command
|
||||||
return
|
return
|
||||||
;;
|
;;
|
||||||
|
policer)
|
||||||
|
_devlink_trap_$command
|
||||||
|
return
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue