@@ -223,8 +223,7 @@ def abort_on_fail(request):
223223 ops_test .aborted = True
224224
225225
226- @pytest .fixture (scope = "module" )
227- @pytest .mark .asyncio
226+ @pytest_asyncio .fixture (scope = "module" )
228227async def ops_test (request , tmp_path_factory ):
229228 check_deps ("juju" , "charmcraft" )
230229 ops_test = OpsTest (request , tmp_path_factory )
@@ -581,17 +580,13 @@ async def juju(self, *args, **kwargs):
581580
582581 return await self .run ("juju" , * args , ** kwargs )
583582
584- async def _add_model (
585- self , controller_name , cloud_name , model_name , keep = False , ** kwargs
586- ):
583+ async def _add_model (self , cloud_name , model_name , keep = False , ** kwargs ):
587584 """
588585 Creates a model used by the test framework which would normally be destroyed
589586 after the tests are run in the module.
590587 """
591588 controller = self ._controller
592- if not controller :
593- controller = Controller ()
594- await controller .connect (controller_name )
589+ controller_name = controller .controller_name
595590 if not cloud_name :
596591 # if not provided, try the default cloud name
597592 cloud_name = self ._init_cloud_name
@@ -657,11 +652,14 @@ async def _setup_model(self):
657652 alias = self ._orig_model_alias
658653 if not self .controller_name :
659654 self .controller_name = self .jujudata .current_controller ()
655+ assert self .controller_name , "No controller selected for ops_test"
656+ if not self ._controller :
657+ self ._controller = Controller ()
658+ await self ._controller .connect (self .controller_name )
660659 if not self ._init_model_name :
661660 # no --model flag specified, automatically generate a model
662661 config = self .read_model_config (self ._init_model_config )
663662 model_state = await self ._add_model (
664- self .controller_name ,
665663 self ._init_cloud_name ,
666664 self .default_model_name ,
667665 config = config ,
@@ -672,9 +670,6 @@ async def _setup_model(self):
672670 self .controller_name , self ._init_model_name
673671 )
674672
675- if not self ._controller :
676- self ._controller = await model_state .model .get_controller ()
677-
678673 self ._models [alias ] = model_state
679674 self ._current_alias = alias
680675
@@ -734,9 +729,7 @@ async def track_model(
734729 else :
735730 cloud_name = cloud_name or self .cloud_name
736731 model_name = model_name or self ._generate_model_name ()
737- model_state = await self ._add_model (
738- self .controller_name , cloud_name , model_name , keep , ** kwargs
739- )
732+ model_state = await self ._add_model (cloud_name , model_name , keep , ** kwargs )
740733 self ._models [alias ] = model_state
741734 return model_state .model
742735
@@ -812,8 +805,7 @@ async def forget_model(
812805 if not self .keep_model :
813806 await self ._reset (model , allow_failure , timeout = timeout )
814807 await self ._controller .destroy_model (model_name , force = True )
815- else :
816- await model .disconnect ()
808+ await model .disconnect ()
817809
818810 # stop managing this model now
819811 log .info (f"Forgetting { alias } ..." )
@@ -862,9 +854,6 @@ async def _destroy(entity_name: str, **kwargs):
862854 log .info (f"Reset { model .info .name } completed successfully." )
863855
864856 async def _cleanup_models (self ):
865- if not self .models :
866- return
867-
868857 # remove models from most recently made, to first made
869858 aliases = list (reversed (self ._models .keys ()))
870859 for models in aliases :
0 commit comments