raws_eks/
lib.rs

1use aws_sdk_eks as eks;
2use clap::{Args, Subcommand};
3
4use config::Config;
5use error::RawsError;
6
7mod addon;
8mod cluster;
9mod update;
10
11type EksResult<T = Box<dyn show::Show>> = Result<T, eks::Error>;
12
13/// Amazon Elastic Kubernetes Service (Amazon EKS)
14#[derive(Debug, Subcommand)]
15pub enum Eks {
16    CreateCluster(cluster::CreateCluster),
17    DeleteCluster(cluster::DeleteCluster),
18    ListClusters(cluster::ListClusters),
19    DescribeCluster(cluster::DescribeCluster),
20    ListUpdates(update::ListUpdates),
21    DescribeUpdate(update::DescribeUpdate),
22    ListAddons(addon::ListAddons),
23    DescribeAddon(addon::DescribeAddon),
24}
25
26impl Eks {
27    async fn execute(self, config: &Config) -> EksResult {
28        match self {
29            Self::CreateCluster(create_cluster) => create_cluster.execute(config).await,
30            Self::DeleteCluster(delete_cluster) => delete_cluster.execute(config).await,
31            Self::ListClusters(list_cluster) => list_cluster.execute(config).await,
32            Self::DescribeCluster(describe_cluster) => describe_cluster.execute(config).await,
33            Self::ListUpdates(list_updates) => list_updates.execute(config).await,
34            Self::DescribeUpdate(describe_update) => describe_update.execute(config).await,
35            Self::ListAddons(list_addons) => list_addons.execute(config).await,
36            Self::DescribeAddon(describe_addon) => describe_addon.execute(config).await,
37        }
38    }
39
40    pub async fn dispatch(self, config: Config) -> Result<(), RawsError<eks::Error>> {
41        self.execute(&config)
42            .await
43            .map(|output| config.show(output))?;
44        Ok(())
45    }
46}