Wallaroo Workspace Management Guide
Table of Contents
Manage Workspaces via the Wallaroo Dashboard
Workspaces are used to segment groups of models into separate environments. This allows different users to either manage or have access to each workspace, controlling the models and pipelines assigned to the workspace.
When working with ML Models, pipelines, ML Workload Orchestrations, or other resources, it starts with the workspace.
How to Set the Current Workspace
The Current Workspace shows the selected workspace and its pipelines and models that are contained in the workspace.
To set the current workspace in your Wallaroo session:
- From the top left navigation panel, select the workspace. By default, this is My Workspace.
- Select the workspace to set as the current workspace.
How to View All Workspaces
To view all workspaces:
- From the top left navigation panel, select the Workspace icon (resembles an office desk with monitor).
- Select View Workspaces from the bottom of the list.
- A list of current workspaces and their owners will be displayed.
How to Create a New Workspace
Workspaces can be created either through the Wallaroo Dashboard or through the Wallaroo SDK.
NOTICE
Workspace names are not forced to be unique. You can have 50 workspaces all named my-amazing-workspace
, which can cause confusion in determining which workspace to use.
It is recommended that organizations agree on a naming convention and select the workspace to use rather than creating a new one each time.
To create a new workspace from the Wallaroo interface:
- From the top left navigation panel, select the Workspace icon (resembles an office desk with monitor).
- Select View Workspaces from the bottom of the list.
- Select the text box marked Workspace name and enter the name of the new workspace. It is recommended to make workspace names unique.
- Select Create Workspace.
Manage Collaborators
Workspace collaborators are other users in your Wallaroo instance that can access the workspace either as a collaborator or as a co-owner.
How to Add a Workspace Collaborator
To add a collaborator to the workspace:
- From the top left navigation panel, select the workspace. By default, this is My Workspace.
- Select the workspace to set as the current workspace.
- Select Invite Users from the Collaborators list.
- Select from the users listed. Note that only users in your Wallaroo instance can be invited.
- To add the user as a co-owner, select the checkbox “Add as Co-Owner?” next to their name.
- Select Send Invitations.
Each invited collaborator will receive an email inviting them to use the workspace, and a link to the Wallaroo instance and the workspace in question.
How to Promote or Demote a Collaborator
To promote or demote a collaborator in a workspace:
- From the top left navigation panel, select the workspace. By default, this is My Workspace.
- Select the workspace to set as the current workspace.
- From the Collaborators list, select the user
...
to the right of the user to promote or demote.- If the user is a co-owner, select Demote to Collaborator.
- If the user is a collaborator, select Promote to Owner.
How to Remove a Collaborator from a Workspace
To promote or demote a collaborator:
- From the top left navigation panel, select the workspace. By default, this is My Workspace.
- Select the workspace to set as the current workspace.
- From the Collaborators list, select the user
...
to the right of the user remove. - Select Remove from Workspace.
- Confirm the removal of the user from the workspace.
Manage Workspaces via the Wallaroo SDK
Create a Workspace
Workspaces can be created either through the Wallaroo Dashboard or through the Wallaroo SDK.
Workspace Naming Requirements
Workspace names map onto Kubernetes objects, and must be DNS compliant. Workspace names must be ASCII alpha-numeric characters or dash (-) only. .
and _
are not allowed.
IMPORTANT NOTICE
Workspace names are unique across the Wallaroo workspace. If the create workspace method is used with an existing workspace, an error is returned.To create a workspace, use the wallaroo.client.create_workspace("{WORKSPACE NAME}")
method through an established Wallaroo connection and store the workspace settings into a new variable. Once the new workspace is created, the user who created the workspace is assigned as its owner. The following template is an example:
{New Workspace Variable} = {Wallaroo Connection}.create_workspace("{New Workspace Name}")
For example, if the connection is stored in the variable wl
and the new workspace will be named imdb
, then the command to store it in the new_workspace
variable would be:
new_workspace = wl.create_workspace("imdb-workspace")
Get Workspace
Workspaces are created or retrieved with the wallaroo.client.get_workspace
method. This retrieves a reference to the workspace in question. The following conditions apply:
- The user requesting access to the workspace must have either be the workspace owner or have been granted access to the workspace.
- Users of type
admin
have access to all workspaces and their artifact. For more information, see User Types.
- Users of type
- Workspace names are unique across the Wallaroo instance. If a workspace is created with the same name as an existing workspace that the user does not have access to, an error is returned.
Get Workspace Parameters
wallaroo.client.get_workspace
takes the following parameters.
Parameter | Type | Description |
---|---|---|
name | String (Required) | The name of the workspace to retrieve. This name is unique across the entire Wallaroo Ops instance. If combined with create_if_not_exist=True , the workspace is created if it does not already exist. |
create_if_not_exist | Boolean (Optional) (Default: False) | True : Create the workspace if one with the same name does not exist. False : Do not create a workspace with the same name if it does not already exist. |
Get Workspace Returns
Retrieves an object of the type wallaroo.workspace.Workspace
that includes the following fields.
Parameter | Type | Description |
---|---|---|
name | String | The name of the workspace. |
id | Integer | The numerical id of the workspace. |
archived | Boolean | If the workspace is archived. |
created_by | String | The user id of the user that created the workspace in UUID format. |
created_at | DateTime | The date and time the workspace was created. |
models | List(wallaroo.model.Model) | A List of models assigned to the workspace. |
pipelines | List(wallaroo.pipeline.Pipeline) | A List of pipelines associated with the workspace. |
Get Workspace Examples
Get Existing Workspace Example
The following example demonstrates retrieving an existing workspace without creating a new one.
workspace_name = 'helper-demo-workspace-1'
workspace = wl.get_workspace(name=workspace_name)
display(workspace)
{'name': 'helper-demo-workspace-1', 'id': 18, 'archived': False, 'created_by': '464316c9-45dd-4926-ba40-c3817485fb9b', 'created_at': '2024-04-04T18:03:33.453716+00:00', 'models': [], 'pipelines': []}
Get Existing Workspace Error
The following shows the error when the workspace requested does not exist.
workspace_name = 'helper-demo-workspace-1'
workspace = wl.get_workspace(name=workspace_name)
---------------------------------------------------------------------------
Exception Traceback (most recent call last)
/tmp/ipykernel_208/1781751922.py in <module>
----> 1 workspace = wl.get_workspace(name=workspace_name)
~/.local/lib/python3.9/site-packages/wallaroo/client.py in get_workspace(self, name, create_if_not_exist)
2383 :return: The workspace with the given name.
2384 """
-> 2385 return Workspace.get_workspace(
2386 client=self, name=name, create_if_not_exist=create_if_not_exist
2387 )
~/.local/lib/python3.9/site-packages/wallaroo/workspace.py in get_workspace(client, name, create_if_not_exist)
229 workspace = Workspace._create_workspace(client, name)
230 else:
--> 231 raise Exception(
232 f"Error: Workspace with name {name} does not exist."
233 f" If you would like to create one, send in the request with `create_if_not_exist` flag set to True."
Exception: Error: Workspace with name helper-demo-workspace-1 does not exist. If you would like to create one, send in the request with `create_if_not_exist` flag set to True.
Get Existing or Create Workspace
The following demonstrates retrieving an existing workspace OR creating it if it does not already exist.
workspace_name = 'helper-demo-workspace-1'
workspace = wl.get_workspace(name=workspace_name, create_if_not_exist=True)
display(workspace)
{'name': 'helper-demo-workspace-1', 'id': 18, 'archived': False, 'created_by': '464316c9-45dd-4926-ba40-c3817485fb9b', 'created_at': '2024-04-04T18:03:33.453716+00:00', 'models': [], 'pipelines': []}
List Workspaces
The command list_workspaces()
displays the workspaces that are part of the current Wallaroo connection. The following details are returned as an array:
Parameter | Type | Description |
---|---|---|
Name | String | The name of the workspace. Note that workspace names are not unique. |
Created At | DateTime | The date and time the workspace was created. |
Users | Array[Users] | A list of all users assigned to this workspace. |
Models | Integer | The number of models uploaded to the workspace. |
Pipelines | Integer | The number of pipelines in the environment. |
For example, for the Wallaroo connection wl
the following workspaces are returned:
wl.list_workspaces()
Name Created At Users Models Pipelines
aloha-workspace 2022-03-29 20:15:38 ['steve@ex.co'] 1 1
ccfraud-workspace 2022-03-29 20:20:55 ['steve@ex.co'] 1 1
demandcurve-workspace 2022-03-29 20:21:32 ['steve@ex.co'] 3 1
imdb-workspace 2022-03-29 20:23:08 ['steve@ex.co'] 2 1
aloha-workspace 2022-03-29 20:33:54 ['steve@ex.co'] 1 1
imdb-workspace 2022-03-30 17:09:23 ['steve@ex.co'] 2 1
imdb-workspace 2022-03-30 17:43:09 ['steve@ex.co'] 0 0
Get Current Workspace
The command get_current_workspace
displays the current workspace used for the Wallaroo connection. The following information is returned by default:
Parameter | Type | Description |
---|---|---|
name | String | The name of the current workspace. |
id | Integer | The ID of the current workspace. |
archived | Bool | Whether the workspace is archived or not. |
created_by | String | The identifier code for the user that created the workspace. |
created_at | DateTime | When the timestamp for when workspace was created. |
models | Array[Models] | The models that are uploaded to this workspace. |
pipelines | Array[Pipelines] | The pipelines created for the workspace. |
For example, the following will display the current workspace for the wl
connection that contains a single pipeline and multiple models:
wl.get_current_workspace()
{'name': 'imdb-workspace', 'id': 6, 'archived': False, 'created_by': '45e6b641-fe57-4fb2-83d2-2c2bd201efe8', 'created_at': '2022-03-30T17: 09: 23.960406+00: 00', 'models': [
{'name': 'embedder-o', 'version': '6dbe5524-7bc3-4ff3-8ca8-d454b2cbd0e4', 'file_name': 'embedder.onnx', 'last_update_time': datetime.datetime(2022,
3,
30,
17,
34,
18,
321105, tzinfo=tzutc())
},
{'name': 'smodel-o', 'version': '6eb7f824-3d77-417f-9169-6a301d20d842', 'file_name': 'sentiment_model.onnx', 'last_update_time': datetime.datetime(2022,
3,
30,
17,
34,
18,
783485, tzinfo=tzutc())
}
], 'pipelines': [
{'name': 'imdb-pipeline', 'create_time': datetime.datetime(2022,
3,
30,
17,
34,
19,
318819, tzinfo=tzutc()), 'definition': '[]'
}
]
}
Set the Current Workspace
The current workspace can be set through set_current_workspace
for the Wallaroo connection through the following call, and returns the workspace details as a JSON object:
{Wallaroo Connection}.set_current_workspace({Workspace Object})
Set Current Workspace from a New Workspace
The following example creates the workspace imdb-workspace
through the Wallaroo connection stored in the variable wl
, then sets it as the current workspace:
new_workspace = wl.create_workspace("imdb-workspace")
wl.set_current_workspace(new_workspace)
{'name': 'imdb-workspace', 'id': 7, 'archived': False, 'created_by': '45e6b641-fe57-4fb2-83d2-2c2bd201efe8', 'created_at': '2022-03-30T17:43:09.405038+00:00', 'models': [], 'pipelines': []}
Set the Current Workspace an Existing Workspace
To set the current workspace from an established workspace, the easiest method is to use list_workspaces()
then set the current workspace as the array value displayed. For example, from the following list_workspaces()
command the 3rd workspace element demandcurve-workspace
can be assigned as the current workspace:
wl.list_workspaces()
Name Created At Users Models Pipelines
aloha-workspace 2022-03-29 20:15:38 ['steve@ex.co'] 1 1
ccfraud-workspace 2022-03-29 20:20:55 ['steve@ex.co'] 1 1
demandcurve-workspace 2022-03-29 20:21:32 ['steve@ex.co'] 3 1
imdb-workspace 2022-03-29 20:23:08 ['steve@ex.co'] 2 1
aloha-workspace 2022-03-29 20:33:54 ['steve@ex.co'] 1 1
imdb-workspace 2022-03-30 17:09:23 ['steve@ex.co'] 2 1
imdb-workspace 2022-03-30 17:43:09 ['steve@ex.co'] 0 0
wl.set_current_workspace(wl.list_workspaces()[2])
{'name': 'demandcurve-workspace', 'id': 3, 'archived': False, 'created_by': '45e6b641-fe57-4fb2-83d2-2c2bd201efe8', 'created_at': '2022-03-29T20:21:32.732178+00:00', 'models': [{'name': 'demandcurve', 'version': '4f5193fc-9c18-4851-8489-42e61d095588', 'file_name': 'demand_curve_v1.onnx', 'last_update_time': datetime.datetime(2022, 3, 29, 20, 21, 32, 822812, tzinfo=tzutc())}, {'name': 'preprocess', 'version': '159b9e99-edb6-4c5e-8336-63bc6000623e', 'file_name': 'preprocess.py', 'last_update_time': datetime.datetime(2022, 3, 29, 20, 21, 32, 984117, tzinfo=tzutc())}, {'name': 'postprocess', 'version': '77ee154c-d64c-49dd-985a-96f4c2931b6e', 'file_name': 'postprocess.py', 'last_update_time': datetime.datetime(2022, 3, 29, 20, 21, 33, 119037, tzinfo=tzutc())}], 'pipelines': [{'name': 'demand-curve-pipeline', 'create_time': datetime.datetime(2022, 3, 29, 20, 21, 33, 264321, tzinfo=tzutc()), 'definition': '[]'}]}
Add a User to a Workspace
Users are added to the workspace via their email address through the wallaroo.workspace.Workspace.add_user({email address})
command. The email address must be assigned to a current user in the Wallaroo platform before they can be assigned to the workspace.
For example, the following workspace imdb-workspace
has the user steve@ex.co
. We will add the user john@ex.co
to this workspace:
wl.list_workspaces()
Name Created At Users Models Pipelines
aloha-workspace 2022-03-29 20:15:38 ['steve@ex.co'] 1 1
ccfraud-workspace 2022-03-29 20:20:55 ['steve@ex.co'] 1 1
demandcurve-workspace 2022-03-29 20:21:32 ['steve@ex.co'] 3 1
imdb-workspace 2022-03-29 20:23:08 ['steve@ex.co'] 2 1
aloha-workspace 2022-03-29 20:33:54 ['steve@ex.co'] 1 1
imdb-workspace 2022-03-30 17:09:23 ['steve@ex.co'] 2 1
imdb-workspace 2022-03-30 17:43:09 ['steve@ex.co'] 0 0
current_workspace = wl.list_workspaces()[3]
current_workspace.add_user("john@ex.co")
{'name': 'imdb-workspace', 'id': 4, 'archived': False, 'created_by': '45e6b641-fe57-4fb2-83d2-2c2bd201efe8', 'created_at': '2022-03-29T20:23:08.742676+00:00', 'models': [{'name': 'embedder-o', 'version': '23a33c3d-68e6-4bdb-a8bc-32ea846908ee', 'file_name': 'embedder.onnx', 'last_update_time': datetime.datetime(2022, 3, 29, 20, 23, 8, 833716, tzinfo=tzutc())}, {'name': 'smodel-o', 'version': '2c298aa9-be9d-482d-8188-e3564bdbab43', 'file_name': 'sentiment_model.onnx', 'last_update_time': datetime.datetime(2022, 3, 29, 20, 23, 9, 49881, tzinfo=tzutc())}], 'pipelines': [{'name': 'imdb-pipeline', 'create_time': datetime.datetime(2022, 3, 29, 20, 23, 28, 518946, tzinfo=tzutc()), 'definition': '[]'}]}
wl.list_workspaces()
Name Created At Users Models Pipelines
aloha-workspace 2022-03-29 20:15:38 ['steve@ex.co'] 1 1
ccfraud-workspace 2022-03-29 20:20:55 ['steve@ex.co'] 1 1
demandcurve-workspace 2022-03-29 20:21:32 ['steve@ex.co'] 3 1
imdb-workspace 2022-03-29 20:23:08 ['steve@ex.co', 'john@ex.co'] 2 1
aloha-workspace 2022-03-29 20:33:54 ['steve@ex.co'] 1 1
imdb-workspace 2022-03-30 17:09:23 ['steve@ex.co'] 2 1
imdb-workspace 2022-03-30 17:43:09 ['steve@ex.co'] 0 0
Remove a User to a Workspace
Removing a user from a workspace is performed through the wallaroo.workspace.Workspace.remove_user({email address})
command, where the {email address}
matches a user in the workspace.
In the following example, the user john@ex.co
is removed from the workspace imdb-workspace
.
wl.list_workspaces()
Name Created At Users Models Pipelines
aloha-workspace 2022-03-29 20:15:38 ['steve@ex.co'] 1 1
ccfraud-workspace 2022-03-29 20:20:55 ['steve@ex.co'] 1 1
demandcurve-workspace 2022-03-29 20:21:32 ['steve@ex.co'] 3 1
imdb-workspace 2022-03-29 20:23:08 ['steve@ex.co', 'john@ex.co'] 2 1
aloha-workspace 2022-03-29 20:33:54 ['steve@ex.co'] 1 1
imdb-workspace 2022-03-30 17:09:23 ['steve@ex.co'] 2 1
imdb-workspace 2022-03-30 17:43:09 ['steve@ex.co'] 0 0
current_workspace = wl.list_workspaces()[3]
current_workspace.remove_user("john@ex.co")
wl.list_workspaces()
Name Created At Users Models Pipelines
aloha-workspace 2022-03-29 20:15:38 ['steve@ex.co'] 1 1
ccfraud-workspace 2022-03-29 20:20:55 ['steve@ex.co'] 1 1
demandcurve-workspace 2022-03-29 20:21:32 ['steve@ex.co'] 3 1
imdb-workspace 2022-03-29 20:23:08 ['steve@ex.co'] 2 1
aloha-workspace 2022-03-29 20:33:54 ['steve@ex.co'] 1 1
imdb-workspace 2022-03-30 17:09:23 ['steve@ex.co'] 2 1
imdb-workspace 2022-03-30 17:43:09 ['steve@ex.co'] 0 0
Add a Workspace Owner
To update the owner of workspace, or promote an existing user of a workspace to the owner of workspace, use the wallaroo.workspace.Workspace.add_owner({email address})
command. The email address must be assigned to a current user in the Wallaroo platform before they can be assigned as the owner to the workspace.
The following example shows assigning the user john@ex.co
as an owner to the workspace imdb-workspace
:
wl.list_workspaces()
Name Created At Users Models Pipelines
aloha-workspace 2022-03-29 20:15:38 ['steve@ex.co'] 1 1
ccfraud-workspace 2022-03-29 20:20:55 ['steve@ex.co'] 1 1
demandcurve-workspace 2022-03-29 20:21:32 ['steve@ex.co'] 3 1
imdb-workspace 2022-03-29 20:23:08 ['steve@ex.co'] 2 1
aloha-workspace 2022-03-29 20:33:54 ['steve@ex.co'] 1 1
imdb-workspace 2022-03-30 17:09:23 ['steve@ex.co'] 2 1
imdb-workspace 2022-03-30 17:43:09 ['steve@ex.co'] 0 0
current_workspace = wl.list_workspaces()[3]
current_workspace.add_owner("john@ex.co")
{'name': 'imdb-workspace', 'id': 4, 'archived': False, 'created_by': '45e6b641-fe57-4fb2-83d2-2c2bd201efe8', 'created_at': '2022-03-29T20:23:08.742676+00:00', 'models': [{'name': 'embedder-o', 'version': '23a33c3d-68e6-4bdb-a8bc-32ea846908ee', 'file_name': 'embedder.onnx', 'last_update_time': datetime.datetime(2022, 3, 29, 20, 23, 8, 833716, tzinfo=tzutc())}, {'name': 'smodel-o', 'version': '2c298aa9-be9d-482d-8188-e3564bdbab43', 'file_name': 'sentiment_model.onnx', 'last_update_time': datetime.datetime(2022, 3, 29, 20, 23, 9, 49881, tzinfo=tzutc())}], 'pipelines': [{'name': 'imdb-pipeline', 'create_time': datetime.datetime(2022, 3, 29, 20, 23, 28, 518946, tzinfo=tzutc()), 'definition': '[]'}]}
wl.list_workspaces()
Name Created At Users Models Pipelines
aloha-workspace 2022-03-29 20:15:38 ['steve@ex.co'] 1 1
ccfraud-workspace 2022-03-29 20:20:55 ['steve@ex.co'] 1 1
demandcurve-workspace 2022-03-29 20:21:32 ['steve@ex.co'] 3 1
imdb-workspace 2022-03-29 20:23:08 ['steve@ex.co', 'john@ex.co'] 2 1
aloha-workspace 2022-03-29 20:33:54 ['steve@ex.co'] 1 1
imdb-workspace 2022-03-30 17:09:23 ['steve@ex.co'] 2 1
imdb-workspace 2022-03-30 17:43:09 ['steve@ex.co'] 0 0