Skip to main content

Service Group

The ServiceGroup service manages service group objects in Strata Cloud Manager, organizing collections of services for use in security policies and NAT rules.

Class Overview

The ServiceGroup class provides CRUD operations for service group objects. It is accessed through the client.service_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 ServiceGroup service
service_groups = client.service_group

Key Attributes

AttributeTypeRequiredDescription
namestrYesName of group (max 63 chars)
idUUIDYes*Unique identifier (*response only)
membersList[str]YesList of service members (1-1024 items)
tagList[str]NoList of tags
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 Service Groups

Retrieves a list of service group objects with optional filtering.

groups = client.service_group.list(
folder="Texas",
values=["HTTP", "HTTPS"],
tags=["Production"]
)

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

Fetch a Service Group

Retrieves a single service group by name and container.

group = client.service_group.fetch(name="web-services", folder="Texas")
print(f"Found group: {group.name}")

Create a Service Group

Creates a new service group object.

new_group = client.service_group.create({
"name": "web-services",
"members": ["HTTP", "HTTPS"],
"folder": "Texas",
"tag": ["Web"]
})

Update a Service Group

Updates an existing service group.

existing = client.service_group.fetch(name="web-services", folder="Texas")
existing.members = ["HTTP", "HTTPS", "HTTP-8080"]
existing.tag = ["Web", "Updated"]

updated = client.service_group.update(existing)

Delete a Service Group

Deletes a service group by ID.

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

Use Cases

Organizing Services by Function

Group related services for simplified policy management.

from scm.client import Scm

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

# Web services group
client.service_group.create({
"name": "web-services",
"members": ["HTTP", "HTTPS"],
"folder": "Texas",
"tag": ["Web"]
})

# Application services group
client.service_group.create({
"name": "app-services",
"members": ["HTTP", "HTTPS", "SSH", "FTP"],
"folder": "Texas",
"tag": ["Application", "Production"]
})

Filtering Service Groups

Use advanced filtering to find specific groups.

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

for group in filtered:
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.service_group.create({
"name": "test-group",
"members": ["HTTP", "HTTPS"],
"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}")