File tree 2 files changed +10
-17
lines changed
2 files changed +10
-17
lines changed Original file line number Diff line number Diff line change @@ -936,26 +936,12 @@ def action_cloudresource(self):
936
936
) as ex : # pragma: no cover
937
937
raise CliException (str (ex ))
938
938
elif assignment :
939
- try :
940
- response = self .quads .update_assignment (assignment .id , data )
941
- self .quads .update_cloud (
942
- cloud .name ,
943
- {
944
- "last_redefined" : ":" .join (
945
- datetime .now ().isoformat ().split (":" )[:- 1 ]
946
- )
947
- },
948
- )
949
-
950
- except (APIServerException , APIBadRequest ) as ex : # pragma: no cover
951
- raise CliException (str (ex ))
952
- if response .status_code == 200 :
953
- self .logger .info ("Assignment updated." )
939
+ raise CliException ("Cloud already has an active assignment." )
954
940
else :
955
941
if self .cli_args .get ("cloud" ) != conf .get ("spare_pool_name" ):
956
942
if not self .cli_args .get ("cloudticket" ):
957
943
self .logger .warning ("No ticket provided." )
958
- self .logger .warning ("No assignment created or updated ." )
944
+ self .logger .warning ("No assignment created." )
959
945
960
946
except ConnectionError : # pragma: no cover
961
947
raise CliException (
Original file line number Diff line number Diff line change 1
1
from datetime import datetime
2
2
from typing import List , Optional , Type
3
3
4
- from sqlalchemy import Boolean , or_
4
+ from sqlalchemy import Boolean , or_ , select
5
5
6
6
from quads .config import Config
7
7
from quads .server .dao .baseDao import (
@@ -72,6 +72,12 @@ def get_clouds() -> List[Cloud]:
72
72
73
73
@staticmethod
74
74
def get_free_clouds () -> List [Cloud ]:
75
+ future_schedule_subquery = (
76
+ select (Schedule .id )
77
+ .join (Assignment , Schedule .assignment_id == Assignment .id )
78
+ .filter (Assignment .cloud_id == Cloud .id , Schedule .start > datetime .now ())
79
+ .exists ()
80
+ )
75
81
free_clouds = (
76
82
db .session .query (Cloud )
77
83
.outerjoin (Assignment , Cloud .id == Assignment .cloud_id )
@@ -83,6 +89,7 @@ def get_free_clouds() -> List[Cloud]:
83
89
Assignment .id == None ,
84
90
Schedule .id == None ,
85
91
),
92
+ ~ future_schedule_subquery ,
86
93
)
87
94
.order_by (Cloud .name .asc ())
88
95
.distinct ()
You can’t perform that action at this time.
0 commit comments