Ah yes. Tagging. The one above them all. A simple feature, but nonetheless powerful.
We have actually had tagging in Purity for quite some time. But it was hidden–we initially used it only for Virtual Volume metadata. Though there are a ton of use cases for tags beyond vVols–use cases I know customers need, and use cases that I need.
So in Purity 6.0 we added tagging–the ability to assign key value tags to a volume or a snapshot. As of Purity 6.0, these tags are available in the CLI or the REST API–GUI support is upcoming. For this post I will walk through using the CLI to demonstrate the tags, stay tuned for information on using the REST and specific scripting tools.
Tags involve a few parts:
- Key–the name of the tag
- Value–the data of the tag
- Namespace–allowing for different groups/integrations to create tags without name collisions
- Copyable–is the tag copied when you create a copy of that volume?
Creating a Tag
Okay step one is to create a tag. But let’s create a volume first.
To then create a tag you need to at least specify the volume name, the key and the value:
purevol tag codytagVol-01 --key owner --value cody
By default, it will go into what is called the default namespace. You can also specify a new namespace. A namespace is created the first time that namespace is specified:
purevol tag codytagVol-01 --key owner --value cody --namespace cody-tags
How does one list tags? Well a few ways.
First just listing the tags in the default namespace.
purevol list --tags
If you don’t list a namespace, you will only see tags in the default namespace. If you want to see a specific namespace you can add it to the query (case sensitive for namespaces):
purevol list --tags --namespace Geography
You can comma separate namespaces
purevol list --tags --namespace Geography,default
Or use wildcards:
purevol list --tags --namespace *
You can query by key name:
purevol list --tags --filter "key='owner'"
purevol list --tags --filter "value='cody'"
purevol list --tags --filter "key='owner' and value='cody'"
If you want to list tags on snapshots, add the –snap switch
purevol list --tags --snap
There is the copyable flag–this means that when you copy the volume the tags will go with it (or not).
By default tags are copyable. By adding the the –non-copyable switch it will make it not copyable:
If you create a snapshot, all tags (copyable or not) are inherited by the snapshot:
But if you copy a volume (or snapshot) to a new volume, the tags with copyable set to false, will not be copied:
How do you edit a tag? You can change the value, but not the namespace or key. To change the value just basically rerun the tag operation with a new value:
To change a key, remove the tag, then create it new. See below for removing a tag.
To remove a tag, specify the volume and the key (and optionally namespace)
purevol untag codytagVol-04 --key app
You can also remove tags from a snapshot, but you do not need to add –snap for the untag operation:
Yes tags are supported with all forms of replication! ActiveCluster, ActiveDR, Protection Group, Offload to NFS/Object. You tag the source volume the snapshots will inherit them and be replicated to whereever. For ActiveCluster they will be immediately there on both arrays for that volume or snapshot. For ActiveDR they will be replicated to the target in seconds and will appear on their DR target volumes in a matter of minutes.