@@ -170,31 +170,34 @@ class Files(Endpoint):
170
170
endpoint = "files"
171
171
172
172
@cached (ttl = ONE_HOUR_IN_SECONDS )
173
- def _get_client (self , container : str ) -> ContainerWrapper :
173
+ def _get_client (self , container : primitives . Container ) -> ContainerWrapper :
174
174
sas = self .onefuzz .containers .get (container ).sas_url
175
175
return ContainerWrapper (sas )
176
176
177
- def list (self , container : str ) -> models .Files :
177
+ def list (self , container : primitives . Container ) -> models .Files :
178
178
""" Get a list of files in a container """
179
179
self .logger .debug ("listing files in container: %s" , container )
180
180
client = self ._get_client (container )
181
181
return models .Files (files = client .list_blobs ())
182
182
183
- def delete (self , container : str , filename : str ) -> None :
183
+ def delete (self , container : primitives . Container , filename : str ) -> None :
184
184
""" delete a file from a container """
185
185
self .logger .debug ("deleting in container: %s:%s" , container , filename )
186
186
client = self ._get_client (container )
187
187
client .delete_blob (filename )
188
188
189
- def get (self , container : str , filename : str ) -> bytes :
189
+ def get (self , container : primitives . Container , filename : str ) -> bytes :
190
190
""" get a file from a container """
191
191
self .logger .debug ("getting file from container: %s:%s" , container , filename )
192
192
client = self ._get_client (container )
193
193
downloaded = client .download_blob (filename )
194
194
return downloaded
195
195
196
196
def upload_file (
197
- self , container : str , file_path : str , blob_name : Optional [str ] = None
197
+ self ,
198
+ container : primitives .Container ,
199
+ file_path : str ,
200
+ blob_name : Optional [str ] = None ,
198
201
) -> None :
199
202
""" uploads a file to a container """
200
203
if not blob_name :
@@ -212,7 +215,7 @@ def upload_file(
212
215
client = self ._get_client (container )
213
216
client .upload_file (file_path , blob_name )
214
217
215
- def upload_dir (self , container : str , dir_path : str ) -> None :
218
+ def upload_dir (self , container : primitives . Container , dir_path : str ) -> None :
216
219
""" uploads a directory to a container """
217
220
218
221
self .logger .debug ("uploading directory to container %s:%s" , container , dir_path )
@@ -476,7 +479,9 @@ def get(self, vm_id: UUID_EXPANSION) -> models.Repro:
476
479
"GET" , models .Repro , data = requests .ReproGet (vm_id = vm_id_expanded )
477
480
)
478
481
479
- def create (self , container : str , path : str , duration : int = 24 ) -> models .Repro :
482
+ def create (
483
+ self , container : primitives .Container , path : str , duration : int = 24
484
+ ) -> models .Repro :
480
485
""" Create a Reproduction VM from a Crash Report """
481
486
self .logger .info (
482
487
"creating repro vm: %s %s (%d hours)" , container , path , duration
@@ -651,7 +656,7 @@ def func() -> Tuple[bool, str, models.Repro]:
651
656
652
657
def create_and_connect (
653
658
self ,
654
- container : str ,
659
+ container : primitives . Container ,
655
660
path : str ,
656
661
duration : int = 24 ,
657
662
delete_after_use : bool = False ,
@@ -670,14 +675,16 @@ class Notifications(Endpoint):
670
675
endpoint = "notifications"
671
676
672
677
def create (
673
- self , container : str , config : models .NotificationConfig
678
+ self , container : primitives . Container , config : models .NotificationConfig
674
679
) -> models .Notification :
675
680
""" Create a notification based on a config file """
676
681
677
682
config = requests .NotificationCreate (container = container , config = config .config )
678
683
return self ._req_model ("POST" , models .Notification , data = config )
679
684
680
- def create_teams (self , container : str , url : str ) -> models .Notification :
685
+ def create_teams (
686
+ self , container : primitives .Container , url : str
687
+ ) -> models .Notification :
681
688
""" Create a Teams notification integration """
682
689
683
690
self .logger .debug ("create teams notification integration: %s" , container )
@@ -687,7 +694,7 @@ def create_teams(self, container: str, url: str) -> models.Notification:
687
694
688
695
def create_ado (
689
696
self ,
690
- container : str ,
697
+ container : primitives . Container ,
691
698
project : str ,
692
699
base_url : str ,
693
700
auth_token : str ,
@@ -804,7 +811,7 @@ def create(
804
811
ensemble_sync_delay : Optional [int ] = None ,
805
812
generator_exe : Optional [str ] = None ,
806
813
generator_options : Optional [List [str ]] = None ,
807
- pool_name : str ,
814
+ pool_name : primitives . PoolName ,
808
815
prereq_tasks : Optional [List [UUID ]] = None ,
809
816
reboot_after_setup : bool = False ,
810
817
rename_output : bool = False ,
@@ -1049,7 +1056,7 @@ def create(
1049
1056
),
1050
1057
)
1051
1058
1052
- def get_config (self , pool_name : str ) -> models .AgentConfig :
1059
+ def get_config (self , pool_name : primitives . PoolName ) -> models .AgentConfig :
1053
1060
""" Get the agent configuration for the pool """
1054
1061
1055
1062
pool = self .get (pool_name )
@@ -1168,17 +1175,19 @@ def list(
1168
1175
* ,
1169
1176
state : Optional [List [enums .NodeState ]] = None ,
1170
1177
scaleset_id : Optional [UUID_EXPANSION ] = None ,
1171
- pool_name : Optional [str ] = None ,
1178
+ pool_name : Optional [primitives . PoolName ] = None ,
1172
1179
) -> List [models .Node ]:
1173
1180
self .logger .debug ("list nodes" )
1174
1181
scaleset_id_expanded : Optional [UUID ] = None
1175
1182
1176
1183
if pool_name is not None :
1177
- pool_name = self ._disambiguate (
1178
- "name" ,
1179
- pool_name ,
1180
- lambda x : False ,
1181
- lambda : [x .name for x in self .onefuzz .pools .list ()],
1184
+ pool_name = primitives .PoolName (
1185
+ self ._disambiguate (
1186
+ "name" ,
1187
+ str (pool_name ),
1188
+ lambda x : False ,
1189
+ lambda : [x .name for x in self .onefuzz .pools .list ()],
1190
+ )
1182
1191
)
1183
1192
1184
1193
if scaleset_id is not None :
@@ -1242,12 +1251,12 @@ def _expand_scaleset_machine(
1242
1251
1243
1252
def create (
1244
1253
self ,
1245
- pool_name : str ,
1254
+ pool_name : primitives . PoolName ,
1246
1255
size : int ,
1247
1256
* ,
1248
1257
image : Optional [str ] = None ,
1249
1258
vm_sku : Optional [str ] = "Standard_D2s_v3" ,
1250
- region : Optional [str ] = None ,
1259
+ region : Optional [primitives . Region ] = None ,
1251
1260
spot_instances : bool = False ,
1252
1261
tags : Optional [Dict [str , str ]] = None ,
1253
1262
) -> models .Scaleset :
@@ -1375,7 +1384,7 @@ def delete(
1375
1384
),
1376
1385
)
1377
1386
1378
- def reset (self , region : str ) -> responses .BoolResult :
1387
+ def reset (self , region : primitives . Region ) -> responses .BoolResult :
1379
1388
""" Reset the proxy for an existing region """
1380
1389
1381
1390
return self ._req_model (
0 commit comments