@@ -166,6 +166,70 @@ func (d *Deployer) CancelDeployment(contractID uint64, netContractID uint64, dlT
166166 return nil
167167}
168168
169+ func (d * Deployer ) CleanExpiredVMs (ctx context.Context ) {
170+ ticker := time .NewTicker (24 * time .Hour )
171+ for range ticker .C {
172+ users , err := d .db .ListAllUsers ()
173+ if err != nil {
174+ log .Error ().Err (err ).Msg ("failed to get all users" )
175+ return
176+ }
177+
178+ for _ , user := range users {
179+ vms , err := d .db .GetAllVms (user .UserID )
180+ if err != nil {
181+ log .Error ().Err (err ).Msg ("failed to get all user vms" )
182+ continue
183+ }
184+
185+ for _ , vm := range vms {
186+ if vm .ExpirationDate .Before (time .Now ()) {
187+ err = d .CancelDeployment (vm .ContractID , vm .NetworkContractID , "vm" , vm .Name )
188+ if err != nil {
189+ log .Error ().Err (err ).Msg ("failed to cancel contract of expired vm" )
190+ }
191+ err := d .db .DeleteVMByID (vm .ID )
192+ if err != nil {
193+ log .Error ().Err (err ).Msg ("failed to delete expired vm" )
194+ }
195+ }
196+ }
197+ }
198+ }
199+ }
200+
201+ func (d * Deployer ) CleanExpiredK8S (ctx context.Context ) {
202+ ticker := time .NewTicker (24 * time .Hour )
203+ for range ticker .C {
204+ users , err := d .db .ListAllUsers ()
205+ if err != nil {
206+ log .Error ().Err (err ).Msg ("failed to get all users" )
207+ return
208+ }
209+
210+ for _ , user := range users {
211+ k8s , err := d .db .GetAllK8s (user .UserID )
212+ if err != nil {
213+ log .Error ().Err (err ).Msg ("failed to get all user k8s clusters" )
214+ continue
215+ }
216+
217+ for _ , k := range k8s {
218+ if k .ExpirationDate .Before (time .Now ()) {
219+ err = d .CancelDeployment (uint64 (k .ClusterContract ), uint64 (k .NetworkContract ), "k8s" , k .Master .Name )
220+ if err != nil {
221+ log .Error ().Err (err ).Msg ("failed to cancel contract of expired k8s cluster" )
222+ }
223+ err := d .db .DeleteVMByID (k .ID )
224+ if err != nil {
225+ log .Error ().Err (err ).Msg ("failed to delete expired k8s cluster" )
226+ }
227+ }
228+ }
229+ }
230+ }
231+ }
232+
169233func buildNetwork (node uint32 , name string ) workloads.ZNet {
170234 return workloads.ZNet {
171235 Name : name ,
0 commit comments