From 5daf1c5d9688f4079807efda8d6f70f54bb89265 Mon Sep 17 00:00:00 2001 From: MacLikorne Date: Tue, 15 Feb 2022 17:24:33 +0100 Subject: [PATCH] fix: handle all digital ocean general purpose instance types (#606) --- .../digitalocean/kubernetes/node.rs | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/src/cloud_provider/digitalocean/kubernetes/node.rs b/src/cloud_provider/digitalocean/kubernetes/node.rs index 6e1d957b..b90a4d9b 100644 --- a/src/cloud_provider/digitalocean/kubernetes/node.rs +++ b/src/cloud_provider/digitalocean/kubernetes/node.rs @@ -4,15 +4,24 @@ use core::fmt; use serde::{Deserialize, Serialize}; use std::str::FromStr; +// flavors helper: https://pcr.cloud-mercato.com/providers/flavors?provider=digitalocean #[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] pub enum DoInstancesType { S1vcpu1gb, S1vcpu2gb, S1vcpu3gb, + S2vcpu2gb, S2vcpu4gb, + S3vcpu1gb, S4vcpu8gb, S6vcpu16gb, + S8vcpu16gb, S8vcpu32gb, + S12vcpu48gb, + S16vcpu64gb, + S20vcpu96gb, + S24vcpu128gb, + S32vcpu192gb, } impl InstanceType for DoInstancesType { @@ -21,10 +30,18 @@ impl InstanceType for DoInstancesType { DoInstancesType::S1vcpu1gb => "s-1vcpu-1gb", DoInstancesType::S1vcpu2gb => "s-1vcpu-2gb", DoInstancesType::S1vcpu3gb => "s-1vcpu-3gb", + DoInstancesType::S2vcpu2gb => "s-2vcpu-2gb", + DoInstancesType::S3vcpu1gb => "s-3vcpu-1gb", DoInstancesType::S2vcpu4gb => "s-2vcpu-4gb", DoInstancesType::S4vcpu8gb => "s-4vcpu-8gb", DoInstancesType::S6vcpu16gb => "s-6vcpu-16gb", + DoInstancesType::S8vcpu16gb => "s-8vcpu-16gb", DoInstancesType::S8vcpu32gb => "s-8vcpu-32gb", + DoInstancesType::S12vcpu48gb => "s-12vcpu-48gb", + DoInstancesType::S16vcpu64gb => "s-16vcpu-64gb", + DoInstancesType::S20vcpu96gb => "s-20vcpu-96gb", + DoInstancesType::S24vcpu128gb => "s-24vcpu-128gb", + DoInstancesType::S32vcpu192gb => "s-32vcpu-192gb", } .to_string() } @@ -36,10 +53,18 @@ impl DoInstancesType { DoInstancesType::S1vcpu1gb => "s-1vcpu-1gb", DoInstancesType::S1vcpu2gb => "s-1vcpu-2gb", DoInstancesType::S1vcpu3gb => "s-1vcpu-3gb", + DoInstancesType::S2vcpu2gb => "s-2vcpu-2gb", DoInstancesType::S2vcpu4gb => "s-2vcpu-4gb", + DoInstancesType::S3vcpu1gb => "s-3vcpu-1gb", DoInstancesType::S4vcpu8gb => "s-4vcpu-8gb", DoInstancesType::S6vcpu16gb => "s-6vcpu-16gb", + DoInstancesType::S8vcpu16gb => "s-8vcpu-16gb", DoInstancesType::S8vcpu32gb => "s-8vcpu-32gb", + DoInstancesType::S12vcpu48gb => "s-12vcpu-48gb", + DoInstancesType::S16vcpu64gb => "s-16vcpu-64gb", + DoInstancesType::S20vcpu96gb => "s-20vcpu-96gb", + DoInstancesType::S24vcpu128gb => "s-24vcpu-128gb", + DoInstancesType::S32vcpu192gb => "s-32vcpu-192gb", } } } @@ -50,10 +75,18 @@ impl fmt::Display for DoInstancesType { DoInstancesType::S1vcpu1gb => write!(f, "s-1vcpu-1gb"), DoInstancesType::S1vcpu2gb => write!(f, "s-1vcpu-2gb"), DoInstancesType::S1vcpu3gb => write!(f, "s-1vcpu-3gb"), + DoInstancesType::S2vcpu2gb => write!(f, "s-2vcpu-2gb"), DoInstancesType::S2vcpu4gb => write!(f, "s-2vcpu-4gb"), + DoInstancesType::S3vcpu1gb => write!(f, "s-3vcpu-1gb"), DoInstancesType::S4vcpu8gb => write!(f, "s-4vcpu-8gb"), DoInstancesType::S6vcpu16gb => write!(f, "s-6vcpu-16gb"), + DoInstancesType::S8vcpu16gb => write!(f, "s-8vcpu-16gb"), DoInstancesType::S8vcpu32gb => write!(f, "s-8vcpu-32gb"), + DoInstancesType::S12vcpu48gb => write!(f, "s-12vcpu-48gb"), + DoInstancesType::S16vcpu64gb => write!(f, "s-16vcpu-64gb"), + DoInstancesType::S20vcpu96gb => write!(f, "s-20vcpu-96gb"), + DoInstancesType::S24vcpu128gb => write!(f, "s-24vcpu-128gb"), + DoInstancesType::S32vcpu192gb => write!(f, "s-32vcpu-192gb"), } } } @@ -66,10 +99,18 @@ impl FromStr for DoInstancesType { "s-1vcpu-1gb" => Ok(DoInstancesType::S1vcpu1gb), "s-1vcpu-2gb" => Ok(DoInstancesType::S1vcpu2gb), "s-1vcpu-3gb" => Ok(DoInstancesType::S1vcpu3gb), + "s-2vcpu-2gb" => Ok(DoInstancesType::S2vcpu2gb), "s-2vcpu-4gb" => Ok(DoInstancesType::S2vcpu4gb), + "s-3vcpu-1gb" => Ok(DoInstancesType::S3vcpu1gb), "s-4vcpu-8gb" => Ok(DoInstancesType::S4vcpu8gb), "s-6vcpu-16gb" => Ok(DoInstancesType::S6vcpu16gb), + "s-8vcpu-16gb" => Ok(DoInstancesType::S8vcpu16gb), "s-8vcpu-32gb" => Ok(DoInstancesType::S8vcpu32gb), + "s-12vcpu-48gb" => Ok(DoInstancesType::S12vcpu48gb), + "s-16vcpu-64gb" => Ok(DoInstancesType::S16vcpu64gb), + "s-20vcpu-96gb" => Ok(DoInstancesType::S20vcpu96gb), + "s-24vcpu-128gb" => Ok(DoInstancesType::S24vcpu128gb), + "s-32vcpu-192gb" => Ok(DoInstancesType::S32vcpu192gb), _ => { let message = format!("`{}` instance type is not supported", s); return Err(CommandError::new(message.clone(), Some(message)));