/*!
* A Colony is cloud-init data that can be used to set up a new planet
**/
/*
* Colonies basically need to store things like any files that need to be created in the VM and
* users that should be added. This needs to be serialized into a cloud-init document that can then
* (somehow) be thrown into QEMU
*/
use serde::{Deserialize, Serialize};
use ulid::Ulid;
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct Colony {
pub user_data: UserData,
pub meta_data: MetaData,
}
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct UserData {
pub users: Vec<User>,
}
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct User {
pub name: String,
pub groups: Vec<String>,
pub ssh_authorized_keys: Vec<String>,
}
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct MetaData {
#[serde(rename = "instance-id")]
pub instance_id: Ulid,
#[serde(rename = "local-hostname")]
pub hostname: String
}