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
| Attribute | Type | Required | Description |
|---|---|---|---|
name | str | Yes | Name of group (max 63 chars) |
id | UUID | Yes* | Unique identifier (*response only) |
static | List[str] | One Required | List of static addresses |
dynamic | DynamicFilter | One Required | Tag-based filter for dynamic membership |
description | str | No | Object description (max 1023 chars) |
tag | List[str] | No | List of tags (max 127 chars each) |
folder | str | Yes** | Folder location (**one container required) |
snippet | str | Yes** | Snippet location (**one container required) |
device | str | Yes** | 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}")