in cli/pkg/config/config.go [181:232]
func ValidateConf(c *Config) error {
log.Println("⏱ Validating Config...")
// Config-wide vars
if c.TerraformState != "local" && c.TerraformState != "cloud" {
return fmt.Errorf("terraform state must be one of: local, cloud")
}
// if err := validateNodeOS(c.DefaultNodepoolOS); err != nil {
// return err
// }
if err := validateTFModuleRepo(c.TFModuleRepo); err != nil {
return err
}
if c.MinNodeCount < 1 || c.MaxNodeCount > 100 {
return fmt.Errorf("NumNodes must be a number between 1-100")
}
// VPC Config vars
if c.VpcConfig.VpcType != "standalone" && c.VpcConfig.VpcType != "shared" {
return fmt.Errorf("VPC Type must be one of: standalone, shared")
}
if c.VpcConfig.VpcName == "" {
return fmt.Errorf("VPC Name cannot be empty")
}
// err := validateVPC(c.VpcConfig.VpcName, c.VpcConfig.VpcProjectID)
// if err != nil {
// return err
// }
// log.Printf("🌐 VPC name %s is valid + does not yet exist in VPC project %s\n", c.VpcConfig.VpcName, c.VpcConfig.VpcProjectID)
// Validate each ClusterConfig
for i, cc := range c.ClustersConfig {
// TODO - what is cluster type? why is line 125 here?
if cc.ClusterType != "managed" && cc.ClusterType != "on-prem" {
if cc.SubnetName == "" {
return fmt.Errorf("ClustersConfig[%d] SubnetName cannot be empty", i)
}
if err := validateRegionAndZone(c.ClustersProjectID, cc.Region, cc.Zones); err != nil {
return fmt.Errorf("ClustersConfig[%d]: %s", i, err)
}
// if err := validateMachineType(c.ClustersProjectID, cc.MachineType, cc.Zones); err != nil {
// return fmt.Errorf("ClustersConfig[%d]: %s", i, err)
// }
if err := validateNodeOS(c.DefaultNodepoolOS); err != nil {
return fmt.Errorf("ClustersConfig[%d]: %s", i, err)
}
}
}
log.Println("✅ Config is valid.")
return nil
}