@@ -69,6 +69,15 @@ def add_session(self, session: SessionDetails) -> None:
6969
7070 self ._sessions [session .id ] = session
7171
72+ # aura behaviour of paused instances not being in an orchestra
73+ def _mimic_paused_db_behaviour (self , dbid : str ) -> None :
74+ db = self .list_instance (dbid )
75+ if db and db .status == "paused" :
76+ response = Response ()
77+ response .status_code = 404
78+ response ._content = b"database not found"
79+ raise HTTPError (request = None , response = response )
80+
7281 def create_instance (
7382 self , name : str , memory : SessionMemoryValue , cloud_provider : str , region : str
7483 ) -> InstanceCreateDetails :
@@ -104,20 +113,16 @@ def delete_instance(self, instance_id: str) -> InstanceSpecificDetails:
104113 return self ._instances .pop (instance_id )
105114
106115 def list_sessions (self , dbid : str ) -> List [SessionDetails ]:
107- # mimic aura behaviour of paused instances not being in an orchestra
108- db = self .list_instance (dbid )
109- if db and db .status == "paused" :
110- response = Response ()
111- response .status_code = 404
112- response ._content = b"database not found"
113- raise HTTPError (request = None , response = response )
116+ self ._mimic_paused_db_behaviour (dbid )
114117
115118 return [v for _ , v in self ._sessions .items () if v .instance_id == dbid ]
116119
117120 def list_instances (self ) -> List [InstanceDetails ]:
118121 return [v for _ , v in self ._instances .items ()]
119122
120123 def list_session (self , session_id : str , dbid : str ) -> Optional [SessionDetails ]:
124+ self ._mimic_paused_db_behaviour (dbid )
125+
121126 matched_instance = self ._sessions .get (session_id , None )
122127
123128 if matched_instance :
@@ -399,6 +404,35 @@ def test_delete_nonunique_session(aura_api: AuraApi) -> None:
399404 assert len (sessions .list ()) == 2
400405
401406
407+ def test_delete_session_paused_instance (aura_api : AuraApi ) -> None :
408+ fake_aura_api = cast (FakeAuraApi , aura_api )
409+
410+ fake_aura_api .id_counter += 1
411+ paused_db = InstanceSpecificDetails (
412+ id = "4242" ,
413+ status = "paused" ,
414+ connection_url = "foo.bar" ,
415+ memory = SessionMemory .m_16GB .value ,
416+ type = "" ,
417+ region = "dresden" ,
418+ name = "paused-db" ,
419+ tenant_id = fake_aura_api ._tenant_id ,
420+ cloud_provider = "aws" ,
421+ )
422+ fake_aura_api ._instances [paused_db .id ] = paused_db
423+
424+ session = aura_api .create_session (
425+ name = "gds-session-my-session-name" ,
426+ dbid = paused_db .id ,
427+ pwd = "some_pwd" ,
428+ memory = SessionMemory .m_8GB .value ,
429+ )
430+ sessions = DedicatedSessions (aura_api )
431+
432+ # cannot delete session running against a paused instance
433+ assert not sessions .delete (session .name )
434+
435+
402436def test_create_waiting_forever () -> None :
403437 aura_api = FakeAuraApi (status_after_creating = "updating" )
404438 _setup_db_instance (aura_api )
0 commit comments