Groups#


Like users, groups also exist within the scope of an organization within Control Hub. Groups encompass 1 or more users, and help further filter and categorize users within an organization.

Creating a new Group#

You can create a new streamsets.sdk.sch_models.Group instance within a Control Hub organization via the streamsets.sdk.sch_models.GroupBuilder class. Use the streamsets.sdk.ControlHub.get_group_builder() method to instantiate the builder object:

group_builder = sch.get_group_builder()
group = group_builder.build(id='test@admin', display_name='Test Group')
group.users = ['admin@admin']
sch.add_group(group)

Retrieving existing groups#

Retrieving existing groups from a Control Hub instance is as simple as asking for the groups attribute from the streamsets.sdk.ControlHub instance. You can further filter the available groups by specifying items like id and display_name:

# Get all groups belonging to current organization
sch.groups

# Get a particular group
group = sch.groups.get(id='test@admin')
group

# Validate the users that are members of this group
group.users

Output:

# sch.groups
[<Group (id=all@admin, display_name=all)>,
 <Group (id=test@admin, display_name=Test Group)>]

# group
<Group (id=test@admin, display_name=Test Group)>

# group.users
['test@admin', 'johnsmith@admin', 'janedoe@admin']

Updating an existing Group#

The SDK also allows for updating existing groups within an organization. Simply retrieve the group to be modified from Control Hub, make the desired changes (such as adding a new user, or removing a role from the group), and then pass the streamsets.sdk.sch_models.Group instance to the streamsets.sdk.ControlHub.update_group() method:

group = sch.groups.get(display_name='Test Group')
group.users.append('test@admin')
group.roles.append('Data SLA User')
group.roles.remove('Data SLA Editor')
sch.update_group(group)

Deleting existing Groups#

Deleting existing groups from an organization is also done in a similar fashion. Simply retrieve the group(s) to be deleted from Control Hub, and then pass the streamsets.sdk.sch_models.Group instance(s) to the streamsets.sdk.ControlHub.delete_group() method:

# Delete a single group
group = sch.groups.get(display_name='Test Group')
sch.delete_group(group)

# Delete multiple groups
groups = sch.groups.get_all(display_name='Test Group')
sch.delete_group(*groups)