Skip to main content

Tag

The Tag service manages tag objects in Strata Cloud Manager, providing color-coded labels for organizing and categorizing resources across security policies.

Class Overview​

The Tag class provides CRUD operations for tag objects. It is accessed through the client.tag attribute on an initialized Scm instance.

from scm.client import Scm

client = Scm(
client_id="your_client_id",
client_secret="your_client_secret",
tsg_id="your_tsg_id"
)

# Access the Tag service
tags = client.tag

Key Attributes​

AttributeTypeRequiredDescription
namestrYesName of the tag object (max 127 chars)
idUUIDYes*Unique identifier (*response only)
colorstrNoColor from a predefined list
commentsstrNoComments (max 1023 chars)
folderstrYes**Folder location (max 64 chars)
snippetstrYes**Snippet location (max 64 chars)
devicestrYes**Device location (max 64 chars)

* Exactly one of folder, snippet, or device is required.

Methods​

List Tags​

Retrieves a list of tag objects with optional filtering.

tags = client.tag.list(
folder="Texas",
colors=["Red", "Blue"]
)

for tag in tags:
print(f"Name: {tag.name}, Color: {tag.color}")

Fetch a Tag​

Retrieves a single tag by name and container.

tag = client.tag.fetch(name="Production", folder="Texas")
print(f"Found tag: {tag.name}, Color: {tag.color}")

Create a Tag​

Creates a new tag object.

new_tag = client.tag.create({
"name": "Production",
"color": "Red",
"comments": "Production environment resources",
"folder": "Texas"
})

Update a Tag​

Updates an existing tag object.

existing = client.tag.fetch(name="Production", folder="Texas")
existing.color = "Azure Blue"
existing.comments = "Updated production environment tag"

updated = client.tag.update(existing)

Delete a Tag​

Deletes a tag object by ID.

client.tag.delete("123e4567-e89b-12d3-a456-426655440000")

Use Cases​

Creating an Environment Tag Set​

Define tags for different environments with consistent color coding.

from scm.client import Scm

client = Scm(
client_id="your_client_id",
client_secret="your_client_secret",
tsg_id="your_tsg_id"
)

environments = [
{"name": "Production", "color": "Red", "comments": "Production resources"},
{"name": "Development", "color": "Blue", "comments": "Development resources"},
{"name": "Web-Servers", "color": "Green", "comments": "Web server resources"},
]

for env in environments:
env["folder"] = "Texas"
client.tag.create(env)
print(f"Created tag: {env['name']}")

Filtering Tags​

Use advanced filtering to find specific tags.

# Filter by color
red_tags = client.tag.list(
folder="Texas",
colors=["Red", "Blue"]
)

# Exact match with exclusions
filtered = client.tag.list(
folder="Texas",
exact_match=True,
exclude_folders=["All"],
exclude_snippets=["default"],
exclude_devices=["DeviceA"],
colors=["Red"]
)

for tag in filtered:
print(f"Tag: {tag.name} in {tag.folder}, Color: {tag.color}")

Batch Tag Operations with Commit​

Create multiple tags and commit the changes.

tag_names = ["Reviewed", "Approved", "Pending"]

for name in tag_names:
client.tag.create({
"name": name,
"color": "Green",
"folder": "Texas"
})

result = client.commit(
folders=["Texas"],
description="Added workflow tags",
sync=True
)
print(f"Commit job ID: {result.job_id}")

Error Handling​

from scm.client import Scm
from scm.exceptions import (
InvalidObjectError,
MissingQueryParameterError,
NameNotUniqueError,
ObjectNotPresentError,
ReferenceNotZeroError
)

client = Scm(
client_id="your_client_id",
client_secret="your_client_secret",
tsg_id="your_tsg_id"
)

try:
new_tag = client.tag.create({
"name": "test_tag",
"color": "Red",
"folder": "Texas",
"comments": "Test tag"
})
except InvalidObjectError as e:
print(f"Invalid tag data: {e.message}")
except NameNotUniqueError as e:
print(f"Tag name already exists: {e.message}")
except ObjectNotPresentError as e:
print(f"Tag not found: {e.message}")
except ReferenceNotZeroError as e:
print(f"Tag still in use: {e.message}")
except MissingQueryParameterError as e:
print(f"Missing parameter: {e.message}")