From 69eae4e2a0c72061855b44ccfddaf40d647d5600 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Frank=20M=C3=A4rkle?= Date: Thu, 19 Dec 2024 14:44:04 +0100 Subject: [PATCH] CLEO -> Introduce `opendut-cleo create uuid` command for randomly generating a UUID. This is useful in the `opendut-cleo apply` command. --- doc/src/user-manual/cleo/commands.md | 3 +++ opendut-cleo/src/main.rs | 16 +++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/doc/src/user-manual/cleo/commands.md b/doc/src/user-manual/cleo/commands.md index 53e26bcd..650da766 100644 --- a/doc/src/user-manual/cleo/commands.md +++ b/doc/src/user-manual/cleo/commands.md @@ -97,6 +97,9 @@ spec: ``` +The `id` fields contain UUIDs. You can generate a random UUID when newly creating a resource with the `opendut-cleo create uuid` command. + + ## Generating PeerSetup Strings To create a PeerSetup, it is necessary to provide the PeerID of the peer: diff --git a/opendut-cleo/src/main.rs b/opendut-cleo/src/main.rs index 139d0058..393f9897 100644 --- a/opendut-cleo/src/main.rs +++ b/opendut-cleo/src/main.rs @@ -5,7 +5,7 @@ use std::process::ExitCode; use clap::{CommandFactory, Parser, Subcommand, ValueEnum}; use clap_complete::Shell; use console::Style; - +use uuid::Uuid; use opendut_carl_api::carl::{CaCertInfo, CarlClient}; use opendut_types::topology::{DeviceId, DeviceName}; use opendut_util::settings::{load_config, FileFormat, LoadedConfig}; @@ -123,7 +123,9 @@ enum CreateResource { Peer(commands::peer::create::CreatePeerCli), ContainerExecutor(commands::executor::create::CreateContainerExecutorCli), NetworkInterface(commands::network_interface::create::CreateNetworkInterfaceCli), - Device(commands::device::create::CreateDeviceCli) + Device(commands::device::create::CreateDeviceCli), + /// Generate a random UUID, which can be used for assigning a new ID to a resource + Uuid, } #[derive(Subcommand)] @@ -244,26 +246,34 @@ async fn execute_command(commands: Commands, settings: &LoadedConfig) -> Result< implementation.execute(&mut carl).await?; } Commands::Create { resource, output } => { - let mut carl = create_carl_client(&settings.config).await; match *resource { CreateResource::ClusterConfiguration(implementation) => { + let mut carl = create_carl_client(&settings.config).await; implementation.execute(&mut carl, output).await?; } CreateResource::ClusterDeployment(implementation) => { + let mut carl = create_carl_client(&settings.config).await; implementation.execute(&mut carl, output).await?; } CreateResource::Peer(implementation) => { + let mut carl = create_carl_client(&settings.config).await; implementation.execute(&mut carl, output).await?; } CreateResource::ContainerExecutor(implementation) => { + let mut carl = create_carl_client(&settings.config).await; implementation.execute(&mut carl, output).await?; } CreateResource::NetworkInterface(implementation) => { + let mut carl = create_carl_client(&settings.config).await; implementation.execute(&mut carl, output).await?; } CreateResource::Device(implementation) => { + let mut carl = create_carl_client(&settings.config).await; implementation.execute(&mut carl, output).await?; } + CreateResource::Uuid => { + println!("{}", Uuid::new_v4()); + } } } Commands::GenerateSetupString(implementation) => {