forked from NationTech/harmony
- Adds functionality to download, install, and manage k3d clusters. - Includes methods for downloading the latest release, creating clusters, and verifying cluster existence. - Implements `ensure_k3d_installed`, `get_latest_release_tag`, `download_latest_release`, `is_k3d_installed`, `verify_cluster_exists`, `create_cluster` and `create_kubernetes_client`. - Provides a `get_client` method to access the Kubernetes client. - Includes unit tests for download and installation. - Adds handling for different operating systems. - Improves error handling and logging. - Introduces a `K3d` struct to encapsulate k3d cluster management logic. - Adds the ability to specify the cluster name during K3d initialization.
30 lines
824 B
Rust
30 lines
824 B
Rust
use harmony::{
|
|
data::Version,
|
|
inventory::Inventory,
|
|
maestro::Maestro,
|
|
modules::lamp::{LAMPConfig, LAMPScore},
|
|
topology::{K8sAnywhereTopology, Url},
|
|
};
|
|
|
|
#[tokio::main]
|
|
async fn main() {
|
|
let lamp_stack = LAMPScore {
|
|
name: "harmony-lamp-demo".to_string(),
|
|
domain: Url::Url(url::Url::parse("https://lampdemo.harmony.nationtech.io").unwrap()),
|
|
php_version: Version::from("8.4.4").unwrap(),
|
|
config: LAMPConfig {
|
|
project_root: "./php".into(),
|
|
..Default::default()
|
|
},
|
|
};
|
|
|
|
let mut maestro = Maestro::<K8sAnywhereTopology>::initialize(
|
|
Inventory::autoload(),
|
|
K8sAnywhereTopology::new(),
|
|
)
|
|
.await
|
|
.unwrap();
|
|
maestro.register_all(vec![Box::new(lamp_stack)]);
|
|
harmony_tui::init(maestro).await.unwrap();
|
|
}
|