How-to use the --columns option in the vss-cli?
Introduction
One of the most powerful options in the ITS Private Cloud Command-Line interface (vss-cli
) is the --columns
global option. This option allows to show/hide any object attribute to customize the output of the vss-cli
.
The --columns
global option can also take jsonpath
expressions to access sub-attributes and more. Its format is based on label=attribute
in comma-separated format, but if no label
is provided, it will use the attribute name.
vss-cli --columns ID=moref,Path=folder.path,name compute vm ls
Output would be
vss-cli --columns ID=moref,Path=folder.path,Name=name compute vm ls -c 1
ID Path Name
--------- ------------------------------------------ --------------------------
vm-928584 Public > Customer > App > QA 2406Q-app-with-storage-qa1
You may be wondering, how do I get all available attributes per object? The simplest approach change the output (--output
) global option to either yaml
o json
, then run an ls
command with a single (-c 1
) item as follows:
vss-cli --output yaml compute vm ls -c 1
If you are more familiar with json
, replace yaml
with json
like --output json
.
If you would like to get csv
formatted table, use --table-format csv
as a global option
The above command works for other objects such as:
vss-cli compute [object] ls
vss-cli request [object] ls
vss-cli service [object] ls
Additional global options are shown in the ITS Private Cloud CLI (vss-cli) Cheat Sheet
Example: List Virtual Machines disks and networks (compute vm ls
)
In this example we need to get a list of virtual machines with the following attributes:
Moref
Name
Folder Path
Disks Capacity
Disks Labels
Networks Name
Run the following command to obtain the equivalent attributes:
Then identify object defined attribute
disks
andnetworks
and their sub-attributes to require. In this casedisks.label
,disks.capacity_gib
andnetworks.name
.Use
jsonpath
to extract the proper values:disks[*].capacity_gib
disks[*].label
networks[*].name
Join the columns in and add them to the
--columns
option as follows.An example result would be as follows:
Example: List Virtual Machines disks and networks (compute vm ls
) and filter by folder path
In addition to the previous example, you can add the local --filter-by
option to the ls
command, in this case, to the vss-cli compute vm ls
. Filtering with the vss-cli
has the following format: <field_name>=<operator>,<value>
. Where operator
is any of the following:
like
: default value. Matches value as substring.eq
: equal, or exact value.ne
: non-equal to value.lt
: lower than value.le
: lower or equal value.gt
: greater than value.ge
: greater and equal to value.in
: in multiple values.
Now that we know the --filter-by/-f
syntax and the possible operators, let's get on to the example.
In this case, we need to filter by Folder Path, and first we have to get the right attribute name.
Filtering works on any object attribute, in case of virtual machines, you can show available attributes to filter with:
Based on the previous output, folder
path
is an attribute offolder
, thus it will be accessible usingfolder.path
in the--filter-by
option as follows:
Example: List Virtual Machines disks and networks (compute vm ls
) and filter by multiple names
Filtering by multiple values is also possible with the --filter-by/-f
option added to the ls
command, in this case, to the vss-cli compute vm ls
. Filtering with the vss-cli
has the following format: <field_name>=<operator>,<value>
. Where operator
is any of the following:
like
: default value. Matches value as substring.eq
: equal, or exact value.ne
: non-equal to value.lt
: lower than value.le
: lower or equal value.gt
: greater than value.ge
: greater and equal to value.in
: in multiple values. *
Now that we know the --filter-by/-f
syntax and the possible operators, let's get on to the example.
In this case, we need to filter by multiple names, and first we have to get the right attribute name.
Filtering works on any object attribute, in case of virtual machines, you can show available attributes to filter with:
Based on the previous output,
name
is the attribute to use, along with thein
operator as follows:
Related articles
University of Toronto - Since 1827