33 lines
1.2 KiB
Rust
33 lines
1.2 KiB
Rust
use model::{Instance, Subnet};
|
|
|
|
pub mod args;
|
|
pub mod config;
|
|
pub mod model;
|
|
pub mod net;
|
|
|
|
pub use trust_dns_proto;
|
|
|
|
#[tarpc::service]
|
|
pub trait Nazrin {
|
|
/// Creates a new instance.
|
|
async fn new_instance(build_args: args::NewInstance) -> Result<Instance, String>;
|
|
/// Deletes an existing instance.
|
|
///
|
|
/// This should involve deleting all related disks and clearing
|
|
/// the lease information from the subnet data, if any.
|
|
async fn delete_instance(name: String) -> Result<(), String>;
|
|
/// Gets a list of existing instances.
|
|
async fn get_instances() -> Result<Vec<Instance>, String>;
|
|
/// Cleans up unusable entries in the database.
|
|
async fn garbage_collect() -> Result<(), String>;
|
|
/// Creates a new subnet.
|
|
///
|
|
/// Unlike instances, subnets shouldn't perform any changes to the
|
|
/// interfaces they reference. This should be used primarily for
|
|
/// ease-of-use and bookkeeping (e.g., assigning dynamic leases).
|
|
async fn new_subnet(build_args: Subnet) -> Result<Subnet, String>;
|
|
/// Gets a list of existing subnets.
|
|
async fn get_subnets() -> Result<Vec<Subnet>, String>;
|
|
/// Deletes an existing subnet.
|
|
async fn delete_subnet(interface: String) -> Result<(), String>;
|
|
}
|