1- """
2- Simvue Tenants
3- ==============
1+ """Simvue Tenants.
42
53Contains a class for remotely connecting to Simvue tenants, or defining
64a new tenant given relevant arguments.
75
86"""
97
108try :
11- from typing import Self
9+ from typing import Self , override
1210except ImportError :
13- from typing_extensions import Self
11+ from typing_extensions import Self , override
12+ from collections .abc import Generator
1413import pydantic
1514import datetime
1615
1918
2019
2120class Tenant (SimvueObject ):
22- """
23- Simvue Tenant
24- =============
21+ """Simvue Tenant.
2522
2623 This class is used to connect to/create tenant objects on the Simvue server,
2724 any modification of instance attributes is mirrored on the remote object.
2825
2926 """
3027
31- def __init__ (self , identifier : str | None = None , ** kwargs ) -> None :
28+ @override
29+ def __init__ (
30+ self ,
31+ identifier : str | None = None ,
32+ server_url : str | None = None ,
33+ server_token : pydantic .SecretStr | None = None ,
34+ ** kwargs ,
35+ ) -> None :
3236 """Initialise a Tenant
3337
3438 If an identifier is provided a connection will be made to the
@@ -41,11 +45,18 @@ def __init__(self, identifier: str | None = None, **kwargs) -> None:
4145 ----------
4246 identifier : str, optional
4347 the remote server unique id for the target folder
48+ server_url: str | None, optional
49+ alternative server URL, default None
50+ server_token : str | None, optional
51+ token for alternative server, default None
4452 **kwargs : dict
4553 any additional arguments to be passed to the object initialiser
4654 """
47- super ().__init__ (identifier , ** kwargs )
55+ super ().__init__ (
56+ identifier , server_url = server_url , server_token = server_token , ** kwargs
57+ )
4858
59+ @override
4960 @classmethod
5061 @pydantic .validate_call
5162 def new (
@@ -57,6 +68,8 @@ def new(
5768 max_runs : int = 0 ,
5869 max_data_volume : int = 0 ,
5970 offline : bool = False ,
71+ server_url : str | None = None ,
72+ server_token : pydantic .SecretStr | None = None ,
6073 ** _ ,
6174 ) -> Self :
6275 """Create a new tenant on the Simvue server.
@@ -77,23 +90,69 @@ def new(
7790 the maximum volume of data allowed within this tenant, default is no limit.
7891 offline: bool, optional
7992 create in offline mode, default is False.
93+ server_url: str | None, optional
94+ alternative server URL, default None
95+ server_token : str | None, optional
96+ token for alternative server, default None
8097
8198 Returns
8299 -------
83100 Tenant
84101 a tenant instance with staged changes
85102
86103 """
87- return Tenant (
104+ return cls (
88105 name = name ,
89106 is_enabled = is_enabled ,
90107 max_request_rate = max_request_rate ,
91108 max_runs = max_runs ,
92109 max_data_volume = max_data_volume ,
110+ server_url = server_url ,
111+ server_token = server_token ,
93112 _read_only = False ,
94113 _offline = offline ,
95114 )
96115
116+ @override
117+ @classmethod
118+ @pydantic .validate_call
119+ def get (
120+ cls ,
121+ * ,
122+ count : pydantic .PositiveInt | None = None ,
123+ offset : pydantic .NonNegativeInt | None = None ,
124+ server_url : str | None = None ,
125+ server_token : pydantic .SecretStr | None = None ,
126+ ** kwargs ,
127+ ) -> Generator [tuple [str , Self | None ]]:
128+ """Retrieve tenants from the server.
129+
130+ Parameters
131+ ----------
132+ count: int | None, optional
133+ limit number of objects
134+ offset : int | None, optional
135+ set start index for objects list
136+ server_url: str | None, optional
137+ alternative server URL, default None
138+ server_token : str | None, optional
139+ token for alternative server, default None
140+
141+ Yields
142+ ------
143+ tuple[str, Tenant | None]
144+ object corresponding to an entry on the server.
145+
146+ Returns
147+ -------
148+ Generator[tuple[str, Tenant | None]]
149+ """
150+ # Currently no tenant filters
151+ _ = kwargs .pop ("filters" , None )
152+ return super ().get (
153+ count = count , offset = offset , server_url = server_url , server_token = server_token
154+ )
155+
97156 @property
98157 def name (self ) -> str :
99158 """Retrieve the name of the tenant"""
0 commit comments