@@ -54,7 +54,7 @@ def _atexit_cleanup_clusters(*args):
54
54
if not cluster .shutdown_atexit :
55
55
# overridden after register
56
56
continue
57
- if cluster ._controller or cluster ._engine_sets :
57
+ if cluster .controller or cluster .engines :
58
58
print (f"Stopping cluster { cluster } " , file = sys .stderr )
59
59
cluster .stop_cluster_sync ()
60
60
@@ -263,8 +263,8 @@ def _default_log(self):
263
263
return traitlets .log .get_logger ()
264
264
265
265
# private state
266
- _controller = Any ()
267
- _engine_sets = Dict ()
266
+ controller = Any ()
267
+ engines = Dict ()
268
268
269
269
def __init__ (self , ** kwargs ):
270
270
"""Construct a Cluster"""
@@ -275,7 +275,7 @@ def __init__(self, **kwargs):
275
275
def __del__ (self ):
276
276
if not self .shutdown_atexit :
277
277
return
278
- if self ._controller or self ._engine_sets :
278
+ if self .controller or self .engines :
279
279
self .stop_cluster_sync ()
280
280
281
281
def __repr__ (self ):
@@ -295,10 +295,10 @@ def __repr__(self):
295
295
profile_dir = "~" + profile_dir [len (home_dir ) :]
296
296
fields ["profile_dir" ] = repr (profile_dir )
297
297
298
- if self ._controller :
298
+ if self .controller :
299
299
fields ["controller" ] = "<running>"
300
- if self ._engine_sets :
301
- fields ["engine_sets" ] = list (self ._engine_sets )
300
+ if self .engines :
301
+ fields ["engine_sets" ] = list (self .engines )
302
302
303
303
fields_str = ', ' .join (f"{ key } ={ value } " for key , value in fields .items ())
304
304
@@ -316,20 +316,20 @@ def _cls_str(cls):
316
316
317
317
cluster_info ["class" ] = _cls_str (self .__class__ )
318
318
319
- if self ._controller :
319
+ if self .controller :
320
320
d ["controller" ] = {
321
321
"class" : _cls_str (self .controller_launcher_class ),
322
322
"state" : None ,
323
323
}
324
- if self ._controller :
325
- d ["controller" ]["state" ] = self ._controller .to_dict ()
324
+ if self .controller :
325
+ d ["controller" ]["state" ] = self .controller .to_dict ()
326
326
327
327
d ["engines" ] = {
328
328
"class" : _cls_str (self .engine_launcher_class ),
329
329
"sets" : {},
330
330
}
331
331
sets = d ["engines" ]["sets" ]
332
- for engine_set_id , engine_launcher in self ._engine_sets .items ():
332
+ for engine_set_id , engine_launcher in self .engines .items ():
333
333
sets [engine_set_id ] = engine_launcher .to_dict ()
334
334
return d
335
335
@@ -358,13 +358,13 @@ def from_dict(cls, d, **kwargs):
358
358
controller_info = d ["controller" ]
359
359
cls = self .controller_launcher_class = import_item (controller_info ["class" ])
360
360
if controller_info ["state" ]:
361
- self ._controller = cls .from_dict (controller_info ["state" ], parent = self )
361
+ self .controller = cls .from_dict (controller_info ["state" ], parent = self )
362
362
363
363
engine_info = d .get ("engines" )
364
364
if engine_info :
365
365
cls = self .engine_launcher_class = import_item (engine_info ["class" ])
366
366
for engine_set_id , engine_state in engine_info .get ("sets" , {}).items ():
367
- self ._engine_sets [engine_set_id ] = cls .from_dict (
367
+ self .engines [engine_set_id ] = cls .from_dict (
368
368
engine_state ,
369
369
engine_set_id = engine_set_id ,
370
370
parent = self ,
@@ -431,7 +431,7 @@ def update_cluster_file(self):
431
431
# setting cluster_file='' disables saving to disk
432
432
return
433
433
434
- if not self ._controller and not self ._engine_sets :
434
+ if not self .controller and not self .engines :
435
435
self .remove_cluster_file ()
436
436
else :
437
437
self .write_cluster_file ()
@@ -444,17 +444,17 @@ async def start_controller(self, **kwargs):
444
444
# start controller
445
445
# retrieve connection info
446
446
# webhook?
447
- if self ._controller is not None :
447
+ if self .controller is not None :
448
448
raise RuntimeError (
449
- "controller is already running. Call stop_controller () first."
449
+ "controller is already running. Call stopcontroller () first."
450
450
)
451
451
452
452
if self .shutdown_atexit :
453
453
_atexit_clusters .add (self )
454
454
if not _atexit_cleanup_clusters .registered :
455
455
atexit .register (_atexit_cleanup_clusters )
456
456
457
- self ._controller = controller = self .controller_launcher_class (
457
+ self .controller = controller = self .controller_launcher_class (
458
458
work_dir = u'.' ,
459
459
parent = self ,
460
460
log = self .log ,
@@ -486,10 +486,10 @@ def add_args(args):
486
486
487
487
if controller_args is not None :
488
488
# ensure we trigger trait observers after we are done
489
- self ._controller .controller_args = list (controller_args )
489
+ self .controller .controller_args = list (controller_args )
490
490
491
- self ._controller .on_stop (self ._controller_stopped )
492
- r = self ._controller .start ()
491
+ self .controller .on_stop (self ._controller_stopped )
492
+ r = self .controller .start ()
493
493
if inspect .isawaitable (r ):
494
494
await r
495
495
@@ -507,7 +507,7 @@ async def start_engines(self, n=None, engine_set_id=None, **kwargs):
507
507
# TODO: send engines connection info
508
508
if engine_set_id is None :
509
509
engine_set_id = f"{ int (time .time ())} -{ '' .join (random .choice (_suffix_chars ) for i in range (4 ))} "
510
- engine_set = self ._engine_sets [engine_set_id ] = self .engine_launcher_class (
510
+ engine_set = self .engines [engine_set_id ] = self .engine_launcher_class (
511
511
work_dir = u'.' ,
512
512
parent = self ,
513
513
log = self .log ,
@@ -550,17 +550,17 @@ async def stop_engines(self, engine_set_id=None):
550
550
all engines are stopped.
551
551
"""
552
552
if engine_set_id is None :
553
- for engine_set_id in list (self ._engine_sets ):
553
+ for engine_set_id in list (self .engines ):
554
554
await self .stop_engines (engine_set_id )
555
555
return
556
556
self .log .info (f"Stopping engine(s): { engine_set_id } " )
557
- engine_set = self ._engine_sets [engine_set_id ]
557
+ engine_set = self .engines [engine_set_id ]
558
558
r = engine_set .stop ()
559
559
if inspect .isawaitable (r ):
560
560
await r
561
561
# retrieve and cleanup output files
562
562
engine_set .get_output (remove = True )
563
- self ._engine_sets .pop (engine_set_id )
563
+ self .engines .pop (engine_set_id )
564
564
self .update_cluster_file ()
565
565
566
566
async def stop_engine (self , engine_id ):
@@ -574,10 +574,10 @@ async def stop_engine(self, engine_id):
574
574
async def restart_engines (self , engine_set_id = None ):
575
575
"""Restart an engine set"""
576
576
if engine_set_id is None :
577
- for engine_set_id in list (self ._engine_sets ):
577
+ for engine_set_id in list (self .engines ):
578
578
await self .restart_engines (engine_set_id )
579
579
return
580
- engine_set = self ._engine_sets [engine_set_id ]
580
+ engine_set = self .engines [engine_set_id ]
581
581
n = engine_set .n
582
582
await self .stop_engines (engine_set_id )
583
583
await self .start_engines (n , engine_set_id )
@@ -604,27 +604,27 @@ async def signal_engines(self, signum, engine_set_id=None):
604
604
If no engine set is specified, signal all engine sets.
605
605
"""
606
606
if engine_set_id is None :
607
- for engine_set_id in list (self ._engine_sets ):
607
+ for engine_set_id in list (self .engines ):
608
608
await self .signal_engines (signum , engine_set_id )
609
609
return
610
610
self .log .info (f"Sending signal { signum } to engine(s) { engine_set_id } " )
611
- engine_set = self ._engine_sets [engine_set_id ]
611
+ engine_set = self .engines [engine_set_id ]
612
612
r = engine_set .signal (signum )
613
613
if inspect .isawaitable (r ):
614
614
await r
615
615
616
616
async def stop_controller (self ):
617
617
"""Stop the controller"""
618
- if self ._controller and self ._controller .running :
618
+ if self .controller and self .controller .running :
619
619
self .log .info ("Stopping controller" )
620
- r = self ._controller .stop ()
620
+ r = self .controller .stop ()
621
621
if inspect .isawaitable (r ):
622
622
await r
623
623
624
- if self ._controller :
625
- self ._controller .get_output (remove = True )
624
+ if self .controller :
625
+ self .controller .get_output (remove = True )
626
626
627
- self ._controller = None
627
+ self .controller = None
628
628
self .update_cluster_file ()
629
629
630
630
async def stop_cluster (self ):
@@ -638,7 +638,7 @@ async def connect_client(self, **client_kwargs):
638
638
# this assumes local files exist
639
639
from ipyparallel import Client
640
640
641
- connection_info = self ._controller .get_connection_info ()
641
+ connection_info = self .controller .get_connection_info ()
642
642
if inspect .isawaitable (connection_info ):
643
643
connection_info = await connection_info
644
644
0 commit comments