GetSet
Description#
The getset command is a combination of the gNMI Get RPC and the gNMI Set RPC.
It allows to conditionally execute a Set RPC based on a condition evaluated against a GetResponse.
The condition written as a jq expression, is specified using the flag --condition.
The SetRPC is executed only if the condition evaluates to true
Usage#
gnmic [global-flags] getset [local-flags]
gnmic [global-flags] gas [local-flags]
gnmic [global-flags] gs [local-flags]
Flags#
prefix#
As per path prefixes, the prefix [--prefix] flag represents a common prefix that is applied to all paths specified using the local --get, --update, --replace and --delete flags.
Defaults to "".
get#
The mandatory get flag [--get] is used to specify the single path used in the Get RPC.
model#
The optional model flag [--model] is used to specify the schema definition modules that the target should use when returning a GetResponse. The model name should match the names returned in Capabilities RPC. Currently only single model name is supported.
target#
With the optional [--target] flag it is possible to supply the path target information in the prefix field of the GetRequest message.
type#
The type flag [--type] is used to specify the data type requested from the server.
One of: ALL, CONFIG, STATE, OPERATIONAL (defaults to "ALL")
condition#
The [--condition] is a jq expression that can be used to determine if the Set Request is executed based on the Get Response values.
update#
The [--update] specifies a jq expression used to build the Set Request update path.
replace#
The [--replace] specifies a jq expression used to build the Set Request replace path.
delete#
The [--delete] specifies a jq expression used to build the Set Request delete path.
value#
The [--value] specifies a jq expression used to build the Set Request value.
Examples#
The command in the below example does the following:
-
gets the list of interface indexes to interface name mapping,
-
checks if the interface index (ifindex) 70 exists,
-
if it does, the set request changes the interface state to
enableusing the interface name.
gnmic getset -a <ip:port> \
--get /interface/ifindex \
--condition '.[] | .updates[].values[""]["srl_nokia-interfaces:interface"][] | select(.ifindex==70) | (.name != "" or .name !=null)' \
--update '.[] | .updates[].values[""]["srl_nokia-interfaces:interface"][] | select(.ifindex==70) | "interface[name=" + .name + "]/admin-state"' \
--value enable