Address Group Configuration Object
The AddressGroup
class is used to manage address groups in the Strata Cloud Manager. Address groups can be either
static (containing a list of addresses) or dynamic (using a tag-based filter).
Importing the AddressGroup Class
Methods
create(data: Dict[str, Any]) -> AddressGroupResponseModel
Creates a new address group.
Parameters:
data
(Dict[str, Any]): A dictionary containing the address group data.
Example 1 (Static Group):
"name": "example-static-group",
"description": "This is a static address group",
"static": ["server1", "server2", "server3"],
"folder": "Prisma Access",
}
new_address_group = address_group.create(address_group_data)
print(f"Created static address group with ID: {new_address_group.id}")
Example 2 (Dynamic Group):
"name": "example-dynamic-group",
"description": "This is a dynamic address group",
"dynamic": {
"filter": "'aws-tag' and 'production'"
},
"folder": "Prisma Access",
}
new_address_group = address_group.create(address_group_data)
print(f"Created dynamic address group with ID: {new_address_group.id}")
get(object_id: str) -> AddressGroupResponseModel
Retrieves an address group by its ID.
Parameters:
object_id
(str): The UUID of the address group.
Example:
group_object = address_group.get(group_id)
print(f"Address Group Name: {group_object.name}")
print(f"Address Group Type: {'Dynamic' if group_object.dynamic else 'Static'}")
update(object_id: str, data: Dict[str, Any]) -> AddressGroupResponseModel
Updates an existing address group.
Parameters:
object_id
(str): The UUID of the address group.data
(Dict[str, Any]): A dictionary containing the updated address group data.
Example 3 (Updating a Static Group):
"description": "Updated static group description",
"static": ["server1", "server2", "server3", "server4"],
}
updated_group = address_group.update(group_id, update_data)
print(f"Updated static address group with ID: {updated_group.id}")
print(f"New static addresses: {updated_group.static}")
Example 4 (Updating a Dynamic Group):
"description": "Updated dynamic group description",
"dynamic": {
"filter": "'aws-tag' and 'production' or 'staging'"
},
}
updated_group = address_group.update(group_id, update_data)
print(f"Updated dynamic address group with ID: {updated_group.id}")
print(f"New dynamic filter: {updated_group.dynamic.filter}")
delete(object_id: str) -> None
Deletes an address group by its ID.
Parameters:
object_id
(str): The UUID of the address group.
Example:
print(f"Deleted address group with ID: {group_id}")
list(folder: Optional[str] = None, snippet: Optional[str] = None, device: Optional[str] = None, **filters) -> List[AddressGroupResponseModel]
Lists address groups, optionally filtered by folder, snippet, device, or other criteria.
Parameters:
folder
(Optional[str]): The folder to list address groups from.snippet
(Optional[str]): The snippet to list address groups from.device
(Optional[str]): The device to list address groups from.**filters
: Additional filters.
Example 5 (Listing Address Groups in a Folder):
for group in groups:
print(f"Address Group Name: {group.name}")
print(f"Type: {'Dynamic' if group.dynamic else 'Static'}")
print(f"Description: {group.description}")
print("---")
Example 6 (Listing Address Groups with Filters):
for group in groups:
print(f"Address Group Name: {group.name}")
print(f"Type: {'Dynamic' if group.dynamic else 'Static'}")
print(f"Tags: {group.tag}")
print("---")
Full Usage Example
Here's a complete example demonstrating how to use the AddressGroup
class:
from scm.config.objects import AddressGroup
# Initialize the SCM clientapi_client = Scm(
client_id="your_client_id",
client_secret="your_client_secret",
tsg_id="your_tsg_id",
)
# Create an AddressGroup instanceaddress_group = AddressGroup(api_client)
# Create a new static address groupstatic_group_data = {
"name": "web-servers",
"description": "Web server address group",
"static": ["web1.example.com", "web2.example.com"],
"folder": "Prisma Access",
"tag": ["production", "web"]
}
new_static_group = address_group.create(static_group_data)
print(f"Created static address group with ID: {new_static_group.id}")
# Create a new dynamic address groupdynamic_group_data = {
"name": "dynamic-db-servers",
"description": "Dynamic database server address group",
"dynamic": {
"filter": "'database-server' and 'production'"
},
"folder": "Prisma Access",
"tag": ["production", "database"]
}
new_dynamic_group = address_group.create(dynamic_group_data)
print(f"Created dynamic address group with ID: {new_dynamic_group.id}")
# List all address groups in the foldergroups = address_group.list(folder='Prisma Access')
for group in groups:
print(f"Address Group: {group.name}")
print(f"Type: {'Dynamic' if group.dynamic else 'Static'}")
print(f"Description: {group.description}")
print(f"Tags: {group.tag}")
print("---")
# Update the static groupupdate_static_data = {
"description": "Updated web server address group",
"static": ["web1.example.com", "web2.example.com", "web3.example.com"],
}
updated_static_group = address_group.update(new_static_group.id, update_static_data)
print(f"Updated static group: {updated_static_group.name}")
print(f"New static addresses: {updated_static_group.static}")
# Delete the dynamic groupaddress_group.delete(new_dynamic_group.id)
print(f"Deleted dynamic group with ID: {new_dynamic_group.id}")