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.
Workspaces can be created either through the Wallaroo Dashboard or through the Wallaroo SDK.
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.
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")
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:
admin
have access to all workspaces and their artifact. For more information, see User Types.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. |
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. |
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': []}
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.
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': []}
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
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': '[]'
}
]
}
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})
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': []}
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': '[]'}]}
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
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
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