diff --git a/src/worker.rs b/src/worker.rs index 7068b9a..c2a2ff8 100644 --- a/src/worker.rs +++ b/src/worker.rs @@ -13,7 +13,7 @@ use lnvps_db::LNVpsDb; use log::{debug, error, info}; use nostr::{EventBuilder, PublicKey}; use nostr_sdk::Client; -use std::ops::Add; +use std::ops::{Add, Sub}; use tokio::sync::mpsc::{unbounded_channel, UnboundedReceiver, UnboundedSender}; #[derive(Debug)] @@ -209,6 +209,7 @@ impl Worker { } } + // check VM status from db vm list let db_vms = self.db.list_vms().await?; for vm in db_vms { let state = if let Some(s) = self.vm_state_cache.get_state(vm.id).await { @@ -221,9 +222,16 @@ impl Worker { None }; - if state.is_none() && vm.expires > Utc::now() { + // create VM if not spawned yet + if vm.expires > Utc::now() && state.is_none() { self.check_vm(vm.id).await?; } + + // delete vm if not paid (in new state) + if vm.expires < Utc::now().sub(Days::new(1)) && state.is_none() { + info!("Deleting unpaid VM {}", vm.id); + self.provisioner.delete_vm(vm.id).await?; + } } self.last_check_vms = Utc::now();