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#[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}