Skip to main content

Address Group

The AddressGroup service manages address group objects in Strata Cloud Manager, supporting static groups with explicit member lists and dynamic groups with tag-based filters.

Class Overview

The AddressGroup class provides CRUD operations for address group objects. It is accessed through the client.address_group 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 AddressGroup service
address_groups = client.address_group

Key Attributes

AttributeTypeRequiredDescription
namestrYesName of group (max 63 chars)
idUUIDYes*Unique identifier (*response only)
staticList[str]One RequiredList of static addresses
dynamicDynamicFilterOne RequiredTag-based filter for dynamic membership
descriptionstrNoObject description (max 1023 chars)
tagList[str]NoList of tags (max 127 chars each)
folderstrYes**Folder location (**one container required)
snippetstrYes**Snippet location (**one container required)
devicestrYes**Device location (**one container required)

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

Methods

List Address Groups

Retrieves a list of address group objects with optional filtering.

groups = client.address_group.list(
folder="Texas",
types=["static"],
tags=["Production"]
)

for group in groups:
print(f"Name: {group.name}")
if group.static:
print(f"Members: {', '.join(group.static)}")

Fetch an Address Group

Retrieves a single address group by name and container.

group = client.address_group.fetch(name="web_servers", folder="Texas")
print(f"Found group: {group.name}")

Create an Address Group

Creates a new address group object.

# Static group
static_group = client.address_group.create({
"name": "web_servers",
"static": ["webserver", "prod-server"],
"description": "Web server group",
"folder": "Texas",
"tag": ["Production", "Web"]
})

# Dynamic group
dynamic_group = client.address_group.create({
"name": "python_servers",
"dynamic": {"filter": "'Python' and 'Production'"},
"description": "Python production servers",
"folder": "Texas"
})

Update an Address Group

Updates an existing address group object.

existing = client.address_group.fetch(name="web_servers", folder="Texas")
existing.static = ["webserver", "prod-server", "staging-server"]
existing.description = "Updated web server group"

updated = client.address_group.update(existing)

Delete an Address Group

Deletes an address group object by ID.

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

Use Cases

Managing Static and Dynamic Groups

Create both types of groups for different use cases.

from scm.client import Scm

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

# Static group for known servers
client.address_group.create({
"name": "database_servers",
"static": ["db-primary", "db-replica-1", "db-replica-2"],
"folder": "Texas",
"tag": ["Database", "Production"]
})

# Dynamic group that auto-updates based on tags
client.address_group.create({
"name": "all_production",
"dynamic": {"filter": "'Production'"},
"folder": "Texas",
"description": "All production-tagged addresses"
})

Filtering Address Groups

Use advanced filtering to find specific groups.

# Only return groups defined exactly in 'Texas'
exact = client.address_group.list(
folder="Texas",
exact_match=True
)

# Combine filters
combined = client.address_group.list(
folder="Texas",
exact_match=True,
exclude_folders=["All"],
exclude_snippets=["default"]
)

for group in combined:
print(f"Group: {group.name} in {group.folder}")

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_group = client.address_group.create({
"name": "test_group",
"static": ["server1", "server2"],
"folder": "Texas",
"tag": ["Test"]
})
except InvalidObjectError as e:
print(f"Invalid group data: {e.message}")
except NameNotUniqueError as e:
print(f"Group name already exists: {e.message}")
except ObjectNotPresentError as e:
print(f"Group not found: {e.message}")
except ReferenceNotZeroError as e:
print(f"Group still in use: {e.message}")
except MissingQueryParameterError as e:
print(f"Missing parameter: {e.message}")