Documentation ¶
Index ¶
- Constants
- Variables
- func AddNewPolicyVersion(awsClient *aws.Client, policyARN string, policyDocument string) error
- func AutoGenerateSpotConfig(spotConfig *SpotConfig, region string, instanceType string)
- func BucketName(accountID, clusterName, region string) string
- func CheckSpotInstanceCompatibility(target aws.InstanceMetadata, suggested aws.InstanceMetadata) error
- func CheckSpotInstancePriceCompatibility(target aws.InstanceMetadata, suggested aws.InstanceMetadata, maxPrice *float64, ...) error
- func CreateDefaultPolicy(awsClient *aws.Client, args CortexPolicyTemplateArgs) error
- func DefaultPolicyARN(accountID string, clusterName string, region string) string
- func DefaultPolicyName(clusterName string, region string) string
- func ErrorAMDGPUInstancesNotSupported(instanceType string) error
- func ErrorAlevoInstancesNotSupported(instanceType string) error
- func ErrorAvailabilityZoneSpecifiedTwice(zone string) error
- func ErrorCantOverrideDefaultTag() error
- func ErrorConfigCannotBeChangedOnConfigure() error
- func ErrorConfiguredWhenSpotIsNotEnabled(configKey string) error
- func ErrorDependentFieldMustBeSpecified(configuredField string, dependencyField string) error
- func ErrorDidNotMatchStrictS3Regex() error
- func ErrorDisallowedField(field string) error
- func ErrorDuplicateNodeGroupName(duplicateNgName string) error
- func ErrorFPGAInstancesNotSupported(instanceType string) error
- func ErrorFieldConfigurationDependentOnCondition(configuredField string, configuredFieldValue string, dependencyField string, ...) error
- func ErrorGPUInstancesNotSupported(instanceType string) error
- func ErrorGaudiInstancesNotSupported(instanceType string) error
- func ErrorIAMPolicyARNNotFound(policyARN string) error
- func ErrorIOPSNotSupported(volumeType VolumeType) error
- func ErrorIOPSToThroughputRatio(volumeType VolumeType, ratio, iops, throughput int64) error
- func ErrorIOPSToVolumeSizeRatio(volumeType VolumeType, ratio, iops int64, volumeSize int64) error
- func ErrorIOPSTooLarge(volumeType VolumeType, iops, maxIOPS int64) error
- func ErrorIOPSTooSmall(volumeType VolumeType, iops, minIOPS int64) error
- func ErrorIncompatibleSpotInstanceTypeCPU(target aws.InstanceMetadata, suggested aws.InstanceMetadata) error
- func ErrorIncompatibleSpotInstanceTypeGPU(target aws.InstanceMetadata, suggested aws.InstanceMetadata) error
- func ErrorIncompatibleSpotInstanceTypeInf(suggested aws.InstanceMetadata) error
- func ErrorIncompatibleSpotInstanceTypeMemory(target aws.InstanceMetadata, suggested aws.InstanceMetadata) error
- func ErrorInferentiaInstancesNotSupported(instanceType string) error
- func ErrorInstanceTypeNotSupportedByCortex(instanceType string) error
- func ErrorInstanceTypeNotSupportedInRegion(instanceType string, region string) error
- func ErrorInstanceTypeTooSmall(instanceType string) error
- func ErrorInvalidAvailabilityZone(userZone string, allZones strset.Set, region string) error
- func ErrorInvalidLegacyProvider(providerStr string) error
- func ErrorInvalidProvider(providerStr string) error
- func ErrorInvalidRegion(region string) error
- func ErrorMacInstancesNotSupported(instanceType string) error
- func ErrorMaxNodesToAddOnClusterConfigure(requestedNodes, currentNodes, maxNodes int64) error
- func ErrorMaxNodesToAddOnClusterUp(requestedNodes, maxNodes int64) error
- func ErrorMaxNumOfNodeGroupsReached(maxNodeGroups int64) error
- func ErrorMinInstancesGreaterThanMax(min int64, max int64) error
- func ErrorNATRequiredWithPrivateSubnetVisibility() error
- func ErrorNoNATGatewayWithSubnets() error
- func ErrorNodeGroupCanOnlyBeScaled() error
- func ErrorNodeGroupMaxInstancesIsZero() error
- func ErrorNotEnoughDefaultSupportedZones(region string, validZones strset.Set, instanceType string, ...) error
- func ErrorOnDemandBaseCapacityGreaterThanMax(onDemandBaseCapacity int64, max int64) error
- func ErrorS3RegionDiffersFromCluster(bucketName string, bucketRegion string, clusterRegion string) error
- func ErrorSSLCertificateARNNotFound(sslCertificateARN string, region string) error
- func ErrorSpecifyOneOrNone(fieldName1 string, fieldName2 string, fieldNames ...string) error
- func ErrorSpecifyTwoOrNone(fieldName1 string, fieldName2 string, fieldNames ...string) error
- func ErrorSpotPriceGreaterThanMaxPrice(suggestedSpotPrice float64, maxPrice float64, suggested aws.InstanceMetadata) error
- func ErrorSpotPriceGreaterThanTargetOnDemand(spotPrice float64, target aws.InstanceMetadata, suggested aws.InstanceMetadata) error
- func ErrorSubnetMaskOutOfRange(requestedMaskSize, minMaskSize, maxMaskSize int) error
- func ErrorThroughputNotSupported(volumeType VolumeType) error
- func ErrorTrainiumInstancesNotSupported(instanceType string) error
- func ErrorUnsupportedAvailabilityZone(userZone string, instanceType string, instanceTypes ...string) error
- func GetNodeGroupNames(nodeGroups []*NodeGroup) []string
- func LoadBalancerSchemeStrings() []string
- func LoadBalancerTypeStrings() []string
- func NATGatewayStrings() []string
- func RegionValidator(region string) (string, error)
- func SQSNamePrefix(clusterName string) string
- func SubnetVisibilityStrings() []string
- func ValidateRegion(region string) error
- func VerifyNetworkQuotas(awsClient *aws.Client, requiredInternetGateways int, natGatewayRequired bool, ...) error
- func VerifyNetworkQuotasOnConfigure(awsClient *aws.Client, availabilityZones strset.Set, numNodeGroups int, ...) error
- func VolumeTypesStrings() []string
- type AccessConfig
- type Config
- func (cc *Config) DeepCopy() (Config, error)
- func (cc *Config) GetNodeGroupByName(name string) *NodeGroup
- func (cc *Config) Hash() (string, error)
- func (cc *Config) ToAccessConfig() AccessConfig
- func (cc *Config) ValidateOnConfigure(awsClient *aws.Client, k8sClient *k8s.Client, oldConfig Config, ...) (ConfigureChanges, error)
- func (cc *Config) ValidateOnInstall(awsClient *aws.Client) error
- type ConfigureChanges
- type CoreConfig
- type CortexPolicyTemplateArgs
- type InternalConfig
- type LoadBalancerScheme
- type LoadBalancerType
- type ManagedConfig
- type NATGateway
- type NodeGroup
- func (ng *NodeGroup) DeepCopy() (NodeGroup, error)
- func (ng *NodeGroup) FillEmptySpotFields(region string)
- func (ng *NodeGroup) HasChanged(old *NodeGroup) bool
- func (ng *NodeGroup) Hash() (string, error)
- func (ng *NodeGroup) MaxPossibleOnDemandInstances() int64
- func (ng *NodeGroup) MaxPossibleSpotInstances() int64
- func (ng *NodeGroup) SpotConfigOnDemandValues() (int64, int64)
- func (ng *NodeGroup) UpdatePlan(old *NodeGroup) string
- type OperatorMetadata
- type SpotConfig
- type Subnet
- type SubnetVisibility
- type VolumeType
Constants ¶
const ( // MaxNodeGroups represents the max number of node groups in a cluster MaxNodeGroups = 100 // MaxNodesToAddOnClusterUp represents the max number of nodes to add on cluster up // Limited to 200 nodes (rounded down from 248 nodes) for two reasons: // // * To prevent overloading the API servers when the nodes are being added. // // * To prevent hitting the 500 targets per LB (when the cross-load balancing is enabled) limit (quota code L-B211E961); // 500 divided by 2 target listeners - 1 operator node - 1 prometheus node => 248 MaxNodesToAddOnClusterUp = 200 // MaxNodesToAddOnClusterConfigure represents the max number of nodes to add on cluster up/configure MaxNodesToAddOnClusterConfigure = 100 // ClusterNameTag is the tag used for storing a cluster's name in AWS resources ClusterNameTag = "cortex.dev/cluster-name" // SQSQueueDelimiter is the delimiter character used for naming cortex SQS queues (e.g. cx_<cluster_hash>_b_<api_name>_<jon_id>) // In this case, _ was chosen to simplify the retrieval of information for the queue's name, // since the api naming scheme does not allow this character. SQSQueueDelimiter = "_" )
const ( BucketKey = "bucket" ClusterUIDKey = "cluster_uid" ClusterNameKey = "cluster_name" RegionKey = "region" PrometheusInstanceTypeKey = "prometheus_instance_type" NodeGroupsKey = "node_groups" InstanceTypeKey = "instance_type" AcceleratorTypeKey = "accelerator_type" AcceleratorsPerInstanceKey = "accelerators_per_instance" MinInstancesKey = "min_instances" MaxInstancesKey = "max_instances" PriorityKey = "priority" SpotKey = "spot" SpotConfigKey = "spot_config" InstanceDistributionKey = "instance_distribution" OnDemandBaseCapacityKey = "on_demand_base_capacity" OnDemandPercentageAboveBaseCapacityKey = "on_demand_percentage_above_base_capacity" InstanceVolumeSizeKey = "instance_volume_size" InstanceVolumeTypeKey = "instance_volume_type" InstanceVolumeIOPSKey = "instance_volume_iops" InstanceVolumeThroughputKey = "instance_volume_throughput" InstancePoolsKey = "instance_pools" MaxPriceKey = "max_price" NetworkKey = "network" SubnetKey = "subnet" TagsKey = "tags" AvailabilityZonesKey = "availability_zones" SubnetsKey = "subnets" AvailabilityZoneKey = "availability_zone" SubnetIDKey = "subnet_id" SSLCertificateARNKey = "ssl_certificate_arn" CortexPolicyARNKey = "cortex_policy_arn" IAMPolicyARNsKey = "iam_policy_arns" SubnetVisibilityKey = "subnet_visibility" NATGatewayKey = "nat_gateway" APILoadBalancerSchemeKey = "api_load_balancer_scheme" OperatorLoadBalancerSchemeKey = "operator_load_balancer_scheme" APILoadBalancerCIDRWhiteListKey = "api_load_balancer_cidr_white_list" OperatorLoadBalancerCIDRWhiteListKey = "operator_load_balancer_cidr_white_list" VPCCIDRKey = "vpc_cidr" AccountIDKey = "account_id" TelemetryKey = "telemetry" )
const ( ErrInvalidProvider = "clusterconfig.invalid_provider" ErrInvalidLegacyProvider = "clusterconfig.invalid_legacy_provider" ErrDisallowedField = "clusterconfig.disallowed_field" ErrInvalidRegion = "clusterconfig.invalid_region" ErrNodeGroupMaxInstancesIsZero = "clusterconfig.node_group_max_instances_is_zero" ErrMaxNumOfNodeGroupsReached = "clusterconfig.max_num_of_nodegroups_reached" ErrDuplicateNodeGroupName = "clusterconfig.duplicate_nodegroup_name" ErrMaxNodesToAddOnClusterUp = "clusterconfig.max_nodes_to_add_on_cluster_up" ErrMaxNodesToAddOnClusterConfigure = "clusterconfig.max_nodes_to_add_on_cluster_configure" ErrInstanceTypeTooSmall = "clusterconfig.instance_type_too_small" ErrMinInstancesGreaterThanMax = "clusterconfig.min_instances_greater_than_max" ErrInstanceTypeNotSupportedInRegion = "clusterconfig.instance_type_not_supported_in_region" ErrIncompatibleSpotInstanceTypeMemory = "clusterconfig.incompatible_spot_instance_type_memory" ErrIncompatibleSpotInstanceTypeCPU = "clusterconfig.incompatible_spot_instance_type_cpu" ErrIncompatibleSpotInstanceTypeGPU = "clusterconfig.incompatible_spot_instance_type_gpu" ErrIncompatibleSpotInstanceTypeInf = "clusterconfig.incompatible_spot_instance_type_inf" ErrSpotPriceGreaterThanTargetOnDemand = "clusterconfig.spot_price_greater_than_target_on_demand" ErrSpotPriceGreaterThanMaxPrice = "clusterconfig.spot_price_greater_than_max_price" ErrInstanceTypeNotSupportedByCortex = "clusterconfig.instance_type_not_supported_by_cortex" ErrAMDGPUInstancesNotSupported = "clusterconfig.amd_gpu_instances_not_supported" ErrGPUInstancesNotSupported = "clusterconfig.gpu_instance_not_supported" ErrInferentiaInstancesNotSupported = "clusterconfig.inferentia_instances_not_supported" ErrMacInstancesNotSupported = "clusterconfig.mac_instances_not_supported" ErrFPGAInstancesNotSupported = "clusterconfig.fpga_instances_not_supported" ErrAlevoInstancesNotSupported = "clusterconfig.alevo_instances_not_supported" ErrGaudiInstancesNotSupported = "clusterconfig.gaudi_instances_not_supported" ErrTrainiumInstancesNotSupported = "clusterconfig.trainium_instances_not_supported" ErrAtLeastOneInstanceDistribution = "clusterconfig.at_least_one_instance_distribution" ErrNoCompatibleSpotInstanceFound = "clusterconfig.no_compatible_spot_instance_found" ErrConfiguredWhenSpotIsNotEnabled = "clusterconfig.configured_when_spot_is_not_enabled" ErrOnDemandBaseCapacityGreaterThanMax = "clusterconfig.on_demand_base_capacity_greater_than_max" ErrInvalidAvailabilityZone = "clusterconfig.invalid_availability_zone" ErrAvailabilityZoneSpecifiedTwice = "clusterconfig.availability_zone_specified_twice" ErrUnsupportedAvailabilityZone = "clusterconfig.unsupported_availability_zone" ErrNotEnoughValidDefaultAvailibilityZones = "clusterconfig.not_enough_valid_default_availability_zones" ErrNoNATGatewayWithSubnets = "clusterconfig.no_nat_gateway_with_subnets" ErrSubnetMaskOutOfRange = "clusterconfig.subnet_mask_out_of_range" ErrConfigCannotBeChangedOnConfigure = "clusterconfig.config_cannot_be_changed_on_configure" ErrNodeGroupCanOnlyBeScaled = "clusterconfig.node_group_can_only_be_scaled" ErrSpecifyOneOrNone = "clusterconfig.specify_one_or_none" ErrSpecifyTwoOrNone = "clusterconfig.specify_two_or_none" ErrDependentFieldMustBeSpecified = "clusterconfig.dependent_field_must_be_specified" ErrFieldConfigurationDependentOnCondition = "clusterconfig.field_configuration_dependent_on_condition" ErrDidNotMatchStrictS3Regex = "clusterconfig.did_not_match_strict_s3_regex" ErrNATRequiredWithPrivateSubnetVisibility = "clusterconfig.nat_required_with_private_subnet_visibility" ErrS3RegionDiffersFromCluster = "clusterconfig.s3_region_differs_from_cluster" ErrIOPSNotSupported = "clusterconfig.iops_not_supported" ErrThroughputNotSupported = "clusterconfig.throughput_not_supported" ErrIOPSTooSmall = "clusterconfig.iops_too_small" ErrIOPSTooLarge = "clusterconfig.iops_too_large" ErrIOPSToVolumeSizeRatio = "clusterconfig.iops_to_volume_size_ratio" ErrIOPSToThroughputRatio = "clusterconfig.iops_to_throughput_ratio" ErrCantOverrideDefaultTag = "clusterconfig.cant_override_default_tag" ErrSSLCertificateARNNotFound = "clusterconfig.ssl_certificate_arn_not_found" ErrIAMPolicyARNNotFound = "clusterconfig.iam_policy_arn_not_found" )
Variables ¶
var AccessValidation = &cr.StructValidation{ AllowExtraFields: true, StructFieldValidations: []*cr.StructFieldValidation{ { StructField: "ClusterName", StringValidation: &cr.StringValidation{ Default: "cortex", MaxLength: 54, MinLength: 3, Validator: validateClusterName, }, }, { StructField: "Region", StringValidation: &cr.StringValidation{ Required: true, MinLength: 1, Validator: RegionValidator, }, }, { StructField: "ImageManager", StringValidation: &cr.StringValidation{ Default: consts.DefaultRegistry() + "/manager:" + consts.CortexVersion, Validator: validateImageVersion, }, }, }, }
var CoreConfigStructFieldValidations = []*cr.StructFieldValidation{ { StructField: "ClusterName", StringValidation: &cr.StringValidation{ Default: "cortex", MaxLength: 54, MinLength: 3, Validator: validateClusterName, }, }, { StructField: "Region", StringValidation: &cr.StringValidation{ Required: true, MinLength: 1, Validator: RegionValidator, }, }, { StructField: "PrometheusInstanceType", StringValidation: &cr.StringValidation{ MinLength: 1, Default: "t3.medium", Validator: validatePrometheusInstanceType, }, }, { StructField: "Telemetry", BoolValidation: &cr.BoolValidation{ Default: true, }, }, { StructField: "ImageOperator", StringValidation: &cr.StringValidation{ Default: consts.DefaultRegistry() + "/operator:" + consts.CortexVersion, Validator: validateImageVersion, }, }, { StructField: "ImageControllerManager", StringValidation: &cr.StringValidation{ Default: consts.DefaultRegistry() + "/controller-manager:" + consts.CortexVersion, Validator: validateImageVersion, }, }, { StructField: "ImageManager", StringValidation: &cr.StringValidation{ Default: consts.DefaultRegistry() + "/manager:" + consts.CortexVersion, Validator: validateImageVersion, }, }, { StructField: "ImageKubexit", StringValidation: &cr.StringValidation{ Default: consts.DefaultRegistry() + "/kubexit:" + consts.CortexVersion, Validator: validateImageVersion, }, }, { StructField: "ImageProxy", StringValidation: &cr.StringValidation{ Default: consts.DefaultRegistry() + "/proxy:" + consts.CortexVersion, Validator: validateImageVersion, }, }, { StructField: "ImageActivator", StringValidation: &cr.StringValidation{ Default: consts.DefaultRegistry() + "/activator:" + consts.CortexVersion, Validator: validateImageVersion, }, }, { StructField: "ImageAutoscaler", StringValidation: &cr.StringValidation{ Default: consts.DefaultRegistry() + "/autoscaler:" + consts.CortexVersion, Validator: validateImageVersion, }, }, { StructField: "ImageAsyncGateway", StringValidation: &cr.StringValidation{ Default: consts.DefaultRegistry() + "/async-gateway:" + consts.CortexVersion, Validator: validateImageVersion, }, }, { StructField: "ImageEnqueuer", StringValidation: &cr.StringValidation{ Default: consts.DefaultRegistry() + "/enqueuer:" + consts.CortexVersion, Validator: validateImageVersion, }, }, { StructField: "ImageDequeuer", StringValidation: &cr.StringValidation{ Default: consts.DefaultRegistry() + "/dequeuer:" + consts.CortexVersion, Validator: validateImageVersion, }, }, { StructField: "ImageClusterAutoscaler", StringValidation: &cr.StringValidation{ Default: consts.DefaultRegistry() + "/cluster-autoscaler:" + consts.CortexVersion, Validator: validateImageVersion, }, }, { StructField: "ImageMetricsServer", StringValidation: &cr.StringValidation{ Default: consts.DefaultRegistry() + "/metrics-server:" + consts.CortexVersion, Validator: validateImageVersion, }, }, { StructField: "ImageNvidiaDevicePlugin", StringValidation: &cr.StringValidation{ Default: consts.DefaultRegistry() + "/nvidia-device-plugin:" + consts.CortexVersion, Validator: validateImageVersion, }, }, { StructField: "ImageNeuronDevicePlugin", StringValidation: &cr.StringValidation{ Default: consts.DefaultRegistry() + "/neuron-device-plugin:" + consts.CortexVersion, Validator: validateImageVersion, }, }, { StructField: "ImageNeuronScheduler", StringValidation: &cr.StringValidation{ Default: consts.DefaultRegistry() + "/neuron-scheduler:" + consts.CortexVersion, Validator: validateImageVersion, }, }, { StructField: "ImageFluentBit", StringValidation: &cr.StringValidation{ Default: consts.DefaultRegistry() + "/fluent-bit:" + consts.CortexVersion, Validator: validateImageVersion, }, }, { StructField: "ImageIstioProxy", StringValidation: &cr.StringValidation{ Default: consts.DefaultRegistry() + "/istio-proxy:" + consts.CortexVersion, Validator: validateImageVersion, }, }, { StructField: "ImageIstioPilot", StringValidation: &cr.StringValidation{ Default: consts.DefaultRegistry() + "/istio-pilot:" + consts.CortexVersion, Validator: validateImageVersion, }, }, { StructField: "ImagePrometheus", StringValidation: &cr.StringValidation{ Default: consts.DefaultRegistry() + "/prometheus:" + consts.CortexVersion, Validator: validateImageVersion, }, }, { StructField: "ImagePrometheusConfigReloader", StringValidation: &cr.StringValidation{ Default: consts.DefaultRegistry() + "/prometheus-config-reloader:" + consts.CortexVersion, Validator: validateImageVersion, }, }, { StructField: "ImagePrometheusOperator", StringValidation: &cr.StringValidation{ Default: consts.DefaultRegistry() + "/prometheus-operator:" + consts.CortexVersion, Validator: validateImageVersion, }, }, { StructField: "ImagePrometheusStatsDExporter", StringValidation: &cr.StringValidation{ Default: consts.DefaultRegistry() + "/prometheus-statsd-exporter:" + consts.CortexVersion, Validator: validateImageVersion, }, }, { StructField: "ImagePrometheusDCGMExporter", StringValidation: &cr.StringValidation{ Default: consts.DefaultRegistry() + "/prometheus-dcgm-exporter:" + consts.CortexVersion, Validator: validateImageVersion, }, }, { StructField: "ImagePrometheusKubeStateMetrics", StringValidation: &cr.StringValidation{ Default: consts.DefaultRegistry() + "/prometheus-kube-state-metrics:" + consts.CortexVersion, Validator: validateImageVersion, }, }, { StructField: "ImagePrometheusNodeExporter", StringValidation: &cr.StringValidation{ Default: consts.DefaultRegistry() + "/prometheus-node-exporter:" + consts.CortexVersion, Validator: validateImageVersion, }, }, { StructField: "ImageKubeRBACProxy", StringValidation: &cr.StringValidation{ Default: consts.DefaultRegistry() + "/kube-rbac-proxy:" + consts.CortexVersion, Validator: validateImageVersion, }, }, { StructField: "ImageGrafana", StringValidation: &cr.StringValidation{ Default: consts.DefaultRegistry() + "/grafana:" + consts.CortexVersion, Validator: validateImageVersion, }, }, { StructField: "ImageEventExporter", StringValidation: &cr.StringValidation{ Default: consts.DefaultRegistry() + "/event-exporter:" + consts.CortexVersion, Validator: validateImageVersion, }, }, { StructField: "NodeGroups", StructListValidation: &cr.StructListValidation{ AllowExplicitNull: true, TreatNullAsEmpty: true, StructValidation: nodeGroupsFieldValidation, }, }, { StructField: "Tags", StringMapValidation: &cr.StringMapValidation{ AllowExplicitNull: true, AllowEmpty: true, ConvertNullToEmpty: true, KeyStringValidator: &cr.StringValidation{ MinLength: 1, MaxLength: 127, DisallowLeadingWhitespace: true, DisallowTrailingWhitespace: true, InvalidPrefixes: _invalidTagPrefixes, AWSTag: true, }, ValueStringValidator: &cr.StringValidation{ MinLength: 1, MaxLength: 255, DisallowLeadingWhitespace: true, DisallowTrailingWhitespace: true, InvalidPrefixes: _invalidTagPrefixes, AWSTag: true, }, }, }, { StructField: "SSLCertificateARN", StringPtrValidation: &cr.StringPtrValidation{ AllowExplicitNull: true, }, }, { StructField: "IAMPolicyARNs", StringListValidation: &cr.StringListValidation{ Default: _defaultIAMPolicies, AllowEmpty: true, AllowExplicitNull: true, }, }, { StructField: "AvailabilityZones", StringListValidation: &cr.StringListValidation{ AllowEmpty: true, AllowExplicitNull: true, DisallowDups: true, InvalidLengths: []int{1}, }, }, { StructField: "SubnetVisibility", StringValidation: &cr.StringValidation{ AllowedValues: SubnetVisibilityStrings(), Default: PublicSubnetVisibility.String(), }, Parser: func(str string) (interface{}, error) { return SubnetVisibilityFromString(str), nil }, }, { StructField: "Subnets", StructListValidation: &cr.StructListValidation{ AllowExplicitNull: true, MinLength: 2, StructValidation: &cr.StructValidation{ StructFieldValidations: []*cr.StructFieldValidation{ { StructField: "AvailabilityZone", StringValidation: &cr.StringValidation{}, }, { StructField: "SubnetID", StringValidation: &cr.StringValidation{}, }, }, }, }, }, { StructField: "NATGateway", StringValidation: &cr.StringValidation{ AllowedValues: NATGatewayStrings(), }, Parser: func(str string) (interface{}, error) { return NATGatewayFromString(str), nil }, DefaultDependentFields: []string{"SubnetVisibility", "Subnets"}, DefaultDependentFieldsFunc: func(vals []interface{}) interface{} { subnetVisibility := vals[0].(SubnetVisibility) subnets := vals[1].([]*Subnet) if len(subnets) > 0 { return NoneNATGateway.String() } if subnetVisibility == PublicSubnetVisibility { return NoneNATGateway.String() } return SingleNATGateway.String() }, }, { StructField: "APILoadBalancerType", StringValidation: &cr.StringValidation{ AllowedValues: LoadBalancerTypeStrings(), Default: NLBLoadBalancerType.String(), }, Parser: func(str string) (interface{}, error) { return LoadBalancerTypeFromString(str), nil }, }, { StructField: "APILoadBalancerScheme", StringValidation: &cr.StringValidation{ AllowedValues: LoadBalancerSchemeStrings(), Default: InternetFacingLoadBalancerScheme.String(), }, Parser: func(str string) (interface{}, error) { return LoadBalancerSchemeFromString(str), nil }, }, { StructField: "APILoadBalancerCIDRWhiteList", StringListValidation: &cr.StringListValidation{ Validator: func(addresses []string) ([]string, error) { for i, address := range addresses { _, err := validateCIDR(address) if err != nil { return nil, errors.Wrap(err, fmt.Sprintf("index %d", i)) } } return addresses, nil }, }, }, { StructField: "OperatorLoadBalancerCIDRWhiteList", StringListValidation: &cr.StringListValidation{ Validator: func(addresses []string) ([]string, error) { for i, address := range addresses { _, err := validateCIDR(address) if err != nil { return nil, errors.Wrap(err, fmt.Sprintf("index %d", i)) } } return addresses, nil }, }, }, { StructField: "OperatorLoadBalancerScheme", StringValidation: &cr.StringValidation{ AllowedValues: LoadBalancerSchemeStrings(), Default: InternetFacingLoadBalancerScheme.String(), }, Parser: func(str string) (interface{}, error) { return LoadBalancerSchemeFromString(str), nil }, }, { StructField: "VPCCIDR", StringPtrValidation: &cr.StringPtrValidation{ Validator: validateVPCCIDR, }, }, }
var FullConfigValidation = &cr.StructValidation{ Required: true, StructFieldValidations: append(CoreConfigStructFieldValidations, ManagedConfigStructFieldValidations...), AllowExtraFields: false, }
var ManagedConfigStructFieldValidations = []*cr.StructFieldValidation{ { StructField: "ClusterUID", StringValidation: &cr.StringValidation{ Default: "", AllowEmpty: true, TreatNullAsEmpty: true, }, }, { StructField: "Bucket", StringValidation: &cr.StringValidation{ Default: "", AllowEmpty: true, TreatNullAsEmpty: true, }, }, { StructField: "CortexPolicyARN", StringValidation: &cr.StringValidation{ Required: false, AllowEmpty: true, TreatNullAsEmpty: true, }, }, { StructField: "AccountID", StringValidation: &cr.StringValidation{ Required: false, AllowEmpty: true, TreatNullAsEmpty: true, }, }, }
Functions ¶
func AddNewPolicyVersion ¶ added in v0.30.0
func AutoGenerateSpotConfig ¶
func AutoGenerateSpotConfig(spotConfig *SpotConfig, region string, instanceType string)
func BucketName ¶ added in v0.35.0
func CheckSpotInstanceCompatibility ¶
func CheckSpotInstanceCompatibility(target aws.InstanceMetadata, suggested aws.InstanceMetadata) error
func CheckSpotInstancePriceCompatibility ¶ added in v0.15.0
func CheckSpotInstancePriceCompatibility(target aws.InstanceMetadata, suggested aws.InstanceMetadata, maxPrice *float64, spotInstancePrice float64) error
func CreateDefaultPolicy ¶ added in v0.30.0
func CreateDefaultPolicy(awsClient *aws.Client, args CortexPolicyTemplateArgs) error
func DefaultPolicyARN ¶ added in v0.30.0
func DefaultPolicyName ¶ added in v0.30.0
func ErrorAMDGPUInstancesNotSupported ¶ added in v0.35.0
func ErrorAlevoInstancesNotSupported ¶ added in v0.42.0
func ErrorAvailabilityZoneSpecifiedTwice ¶ added in v0.26.0
func ErrorCantOverrideDefaultTag ¶ added in v0.18.0
func ErrorCantOverrideDefaultTag() error
func ErrorConfigCannotBeChangedOnConfigure ¶ added in v0.37.0
func ErrorConfigCannotBeChangedOnConfigure() error
func ErrorDependentFieldMustBeSpecified ¶ added in v0.27.0
func ErrorDidNotMatchStrictS3Regex ¶
func ErrorDidNotMatchStrictS3Regex() error
func ErrorDisallowedField ¶ added in v0.35.0
func ErrorDuplicateNodeGroupName ¶ added in v0.31.0
func ErrorFPGAInstancesNotSupported ¶ added in v0.42.0
func ErrorFieldConfigurationDependentOnCondition ¶ added in v0.27.0
func ErrorGPUInstancesNotSupported ¶ added in v0.38.0
func ErrorGaudiInstancesNotSupported ¶ added in v0.42.0
func ErrorIAMPolicyARNNotFound ¶ added in v0.30.0
func ErrorIOPSNotSupported ¶ added in v0.16.0
func ErrorIOPSNotSupported(volumeType VolumeType) error
func ErrorIOPSToThroughputRatio ¶ added in v0.35.0
func ErrorIOPSToThroughputRatio(volumeType VolumeType, ratio, iops, throughput int64) error
func ErrorIOPSToVolumeSizeRatio ¶ added in v0.35.0
func ErrorIOPSToVolumeSizeRatio(volumeType VolumeType, ratio, iops int64, volumeSize int64) error
func ErrorIOPSTooLarge ¶ added in v0.16.0
func ErrorIOPSTooLarge(volumeType VolumeType, iops, maxIOPS int64) error
func ErrorIOPSTooSmall ¶ added in v0.35.0
func ErrorIOPSTooSmall(volumeType VolumeType, iops, minIOPS int64) error
func ErrorIncompatibleSpotInstanceTypeCPU ¶
func ErrorIncompatibleSpotInstanceTypeCPU(target aws.InstanceMetadata, suggested aws.InstanceMetadata) error
func ErrorIncompatibleSpotInstanceTypeGPU ¶
func ErrorIncompatibleSpotInstanceTypeGPU(target aws.InstanceMetadata, suggested aws.InstanceMetadata) error
func ErrorIncompatibleSpotInstanceTypeInf ¶ added in v0.18.0
func ErrorIncompatibleSpotInstanceTypeInf(suggested aws.InstanceMetadata) error
func ErrorIncompatibleSpotInstanceTypeMemory ¶
func ErrorIncompatibleSpotInstanceTypeMemory(target aws.InstanceMetadata, suggested aws.InstanceMetadata) error
func ErrorInferentiaInstancesNotSupported ¶ added in v0.38.0
func ErrorInstanceTypeNotSupportedByCortex ¶ added in v0.35.0
func ErrorInvalidLegacyProvider ¶ added in v0.32.0
func ErrorInvalidProvider ¶ added in v0.32.0
func ErrorInvalidRegion ¶ added in v0.15.0
func ErrorMacInstancesNotSupported ¶ added in v0.37.0
func ErrorMaxNodesToAddOnClusterConfigure ¶ added in v0.39.0
func ErrorMaxNodesToAddOnClusterUp ¶ added in v0.39.0
func ErrorMaxNumOfNodeGroupsReached ¶ added in v0.31.0
func ErrorNATRequiredWithPrivateSubnetVisibility ¶ added in v0.16.0
func ErrorNATRequiredWithPrivateSubnetVisibility() error
func ErrorNoNATGatewayWithSubnets ¶ added in v0.26.0
func ErrorNoNATGatewayWithSubnets() error
func ErrorNodeGroupCanOnlyBeScaled ¶ added in v0.37.0
func ErrorNodeGroupCanOnlyBeScaled() error
func ErrorNodeGroupMaxInstancesIsZero ¶ added in v0.34.0
func ErrorNodeGroupMaxInstancesIsZero() error
func ErrorNotEnoughDefaultSupportedZones ¶ added in v0.15.0
func ErrorSSLCertificateARNNotFound ¶ added in v0.17.0
func ErrorSpecifyOneOrNone ¶ added in v0.26.0
func ErrorSpecifyTwoOrNone ¶ added in v0.35.0
func ErrorSpotPriceGreaterThanMaxPrice ¶
func ErrorSpotPriceGreaterThanMaxPrice(suggestedSpotPrice float64, maxPrice float64, suggested aws.InstanceMetadata) error
func ErrorSpotPriceGreaterThanTargetOnDemand ¶
func ErrorSpotPriceGreaterThanTargetOnDemand(spotPrice float64, target aws.InstanceMetadata, suggested aws.InstanceMetadata) error
func ErrorSubnetMaskOutOfRange ¶ added in v0.39.0
func ErrorThroughputNotSupported ¶ added in v0.35.0
func ErrorThroughputNotSupported(volumeType VolumeType) error
func ErrorTrainiumInstancesNotSupported ¶ added in v0.42.0
func ErrorUnsupportedAvailabilityZone ¶ added in v0.15.0
func GetNodeGroupNames ¶ added in v0.37.0
func LoadBalancerSchemeStrings ¶ added in v0.16.0
func LoadBalancerSchemeStrings() []string
func LoadBalancerTypeStrings ¶ added in v0.42.0
func LoadBalancerTypeStrings() []string
func NATGatewayStrings ¶ added in v0.16.0
func NATGatewayStrings() []string
func RegionValidator ¶ added in v0.16.0
func SQSNamePrefix ¶ added in v0.19.0
func SubnetVisibilityStrings ¶ added in v0.16.0
func SubnetVisibilityStrings() []string
func ValidateRegion ¶ added in v0.15.0
func VerifyNetworkQuotas ¶ added in v0.37.0
func VerifyNetworkQuotasOnConfigure ¶ added in v0.37.0
func VolumeTypesStrings ¶ added in v0.16.0
func VolumeTypesStrings() []string
Types ¶
type AccessConfig ¶
type AccessConfig struct { ClusterName string `json:"cluster_name" yaml:"cluster_name"` Region string `json:"region" yaml:"region"` ImageManager string `json:"image_manager" yaml:"image_manager"` }
The bare minimum to identify a cluster
type Config ¶
type Config struct { CoreConfig `yaml:",inline"` ManagedConfig `yaml:",inline"` }
func NewForFile ¶ added in v0.35.0
NewForFile initializes and validates the cluster config from the YAML config file
func (*Config) GetNodeGroupByName ¶ added in v0.37.0
func (*Config) ToAccessConfig ¶
func (cc *Config) ToAccessConfig() AccessConfig
func (*Config) ValidateOnConfigure ¶ added in v0.37.0
func (cc *Config) ValidateOnConfigure(awsClient *aws.Client, k8sClient *k8s.Client, oldConfig Config, eksNodeGroupStacks []*cloudformation.StackSummary) (ConfigureChanges, error)
type ConfigureChanges ¶ added in v0.37.0
type ConfigureChanges struct { NodeGroupsToAdd []string NodeGroupsToRemove []string NodeGroupsToUpdate []string EKSNodeGroupsToRemove []string // EKS node group names of (NodeGroupsToRemove ∩ Cortex-converted EKS node groups) ∪ (Cortex-converted EKS node groups - the new cluster config's nodegroups) FieldsToUpdate []string }
func (*ConfigureChanges) GetGhostEKSNodeGroups ¶ added in v0.37.0
func (c *ConfigureChanges) GetGhostEKSNodeGroups() []string
GetGhostEKSNodeGroups returns the set difference between EKSNodeGroupsToRemove and the EKS-converted NodeGroupsToRemove
func (*ConfigureChanges) HasChanges ¶ added in v0.37.0
func (c *ConfigureChanges) HasChanges() bool
type CoreConfig ¶ added in v0.28.0
type CoreConfig struct { ClusterName string `json:"cluster_name" yaml:"cluster_name"` Region string `json:"region" yaml:"region"` PrometheusInstanceType string `json:"prometheus_instance_type" yaml:"prometheus_instance_type"` ImageOperator string `json:"image_operator" yaml:"image_operator"` ImageControllerManager string `json:"image_controller_manager" yaml:"image_controller_manager"` ImageManager string `json:"image_manager" yaml:"image_manager"` ImageKubexit string `json:"image_kubexit" yaml:"image_kubexit"` ImageProxy string `json:"image_proxy" yaml:"image_proxy"` ImageActivator string `json:"image_activator" yaml:"image_activator"` ImageAutoscaler string `json:"image_autoscaler" yaml:"image_autoscaler"` ImageAsyncGateway string `json:"image_async_gateway" yaml:"image_async_gateway"` ImageEnqueuer string `json:"image_enqueuer" yaml:"image_enqueuer"` ImageDequeuer string `json:"image_dequeuer" yaml:"image_dequeuer"` ImageClusterAutoscaler string `json:"image_cluster_autoscaler" yaml:"image_cluster_autoscaler"` ImageMetricsServer string `json:"image_metrics_server" yaml:"image_metrics_server"` ImageNvidiaDevicePlugin string `json:"image_nvidia_device_plugin" yaml:"image_nvidia_device_plugin"` ImageNeuronDevicePlugin string `json:"image_neuron_device_plugin" yaml:"image_neuron_device_plugin"` ImageNeuronScheduler string `json:"image_neuron_scheduler" yaml:"image_neuron_scheduler"` ImageFluentBit string `json:"image_fluent_bit" yaml:"image_fluent_bit"` ImageIstioProxy string `json:"image_istio_proxy" yaml:"image_istio_proxy"` ImageIstioPilot string `json:"image_istio_pilot" yaml:"image_istio_pilot"` ImagePrometheus string `json:"image_prometheus" yaml:"image_prometheus"` ImagePrometheusConfigReloader string `json:"image_prometheus_config_reloader" yaml:"image_prometheus_config_reloader"` ImagePrometheusOperator string `json:"image_prometheus_operator" yaml:"image_prometheus_operator"` ImagePrometheusStatsDExporter string `json:"image_prometheus_statsd_exporter" yaml:"image_prometheus_statsd_exporter"` ImagePrometheusDCGMExporter string `json:"image_prometheus_dcgm_exporter" yaml:"image_prometheus_dcgm_exporter"` ImagePrometheusKubeStateMetrics string `json:"image_prometheus_kube_state_metrics" yaml:"image_prometheus_kube_state_metrics"` ImagePrometheusNodeExporter string `json:"image_prometheus_node_exporter" yaml:"image_prometheus_node_exporter"` ImageKubeRBACProxy string `json:"image_kube_rbac_proxy" yaml:"image_kube_rbac_proxy"` ImageGrafana string `json:"image_grafana" yaml:"image_grafana"` ImageEventExporter string `json:"image_event_exporter" yaml:"image_event_exporter"` NodeGroups []*NodeGroup `json:"node_groups" yaml:"node_groups"` Tags map[string]string `json:"tags" yaml:"tags"` AvailabilityZones []string `json:"availability_zones" yaml:"availability_zones"` SSLCertificateARN *string `json:"ssl_certificate_arn,omitempty" yaml:"ssl_certificate_arn,omitempty"` IAMPolicyARNs []string `json:"iam_policy_arns" yaml:"iam_policy_arns"` SubnetVisibility SubnetVisibility `json:"subnet_visibility" yaml:"subnet_visibility"` Subnets []*Subnet `json:"subnets,omitempty" yaml:"subnets,omitempty"` NATGateway NATGateway `json:"nat_gateway" yaml:"nat_gateway"` APILoadBalancerType LoadBalancerType `json:"api_load_balancer_type" yaml:"api_load_balancer_type"` APILoadBalancerScheme LoadBalancerScheme `json:"api_load_balancer_scheme" yaml:"api_load_balancer_scheme"` OperatorLoadBalancerScheme LoadBalancerScheme `json:"operator_load_balancer_scheme" yaml:"operator_load_balancer_scheme"` APILoadBalancerCIDRWhiteList []string `json:"api_load_balancer_cidr_white_list,omitempty" yaml:"api_load_balancer_cidr_white_list,omitempty"` OperatorLoadBalancerCIDRWhiteList []string `json:"operator_load_balancer_cidr_white_list,omitempty" yaml:"operator_load_balancer_cidr_white_list,omitempty"` VPCCIDR *string `json:"vpc_cidr,omitempty" yaml:"vpc_cidr,omitempty"` Telemetry bool `json:"telemetry" yaml:"telemetry"` }
func (*CoreConfig) GetNodeGroupByName ¶ added in v0.39.0
func (cc *CoreConfig) GetNodeGroupByName(name string) *NodeGroup
func (*CoreConfig) GetNodeGroupNames ¶ added in v0.39.0
func (cc *CoreConfig) GetNodeGroupNames() []string
func (*CoreConfig) SQSNamePrefix ¶ added in v0.28.0
func (cc *CoreConfig) SQSNamePrefix() string
SQSNamePrefix returns a string with the hash of cluster name and adds trailing "_" e.g. cx_abcd1234_
func (*CoreConfig) TelemetryEvent ¶ added in v0.28.0
func (cc *CoreConfig) TelemetryEvent() map[string]interface{}
type CortexPolicyTemplateArgs ¶ added in v0.30.0
type InternalConfig ¶
type InternalConfig struct { Config // Populated by operator OperatorMetadata }
type LoadBalancerScheme ¶ added in v0.16.0
type LoadBalancerScheme int
const ( UnknownLoadBalancerScheme LoadBalancerScheme = iota InternetFacingLoadBalancerScheme InternalLoadBalancerScheme )
func LoadBalancerSchemeFromString ¶ added in v0.16.0
func LoadBalancerSchemeFromString(s string) LoadBalancerScheme
func (LoadBalancerScheme) MarshalBinary ¶ added in v0.16.0
func (t LoadBalancerScheme) MarshalBinary() ([]byte, error)
MarshalBinary satisfies BinaryMarshaler
func (LoadBalancerScheme) MarshalText ¶ added in v0.16.0
func (t LoadBalancerScheme) MarshalText() ([]byte, error)
MarshalText satisfies TextMarshaler
func (LoadBalancerScheme) String ¶ added in v0.16.0
func (t LoadBalancerScheme) String() string
func (*LoadBalancerScheme) UnmarshalBinary ¶ added in v0.16.0
func (t *LoadBalancerScheme) UnmarshalBinary(data []byte) error
UnmarshalBinary satisfies BinaryUnmarshaler Needed for msgpack
func (*LoadBalancerScheme) UnmarshalText ¶ added in v0.16.0
func (t *LoadBalancerScheme) UnmarshalText(text []byte) error
UnmarshalText satisfies TextUnmarshaler
type LoadBalancerType ¶ added in v0.42.0
type LoadBalancerType int
const ( UnknownLoadBalancerType LoadBalancerType = iota NLBLoadBalancerType ELBLoadBalancerType )
func LoadBalancerTypeFromString ¶ added in v0.42.0
func LoadBalancerTypeFromString(s string) LoadBalancerType
func (LoadBalancerType) MarshalBinary ¶ added in v0.42.0
func (t LoadBalancerType) MarshalBinary() ([]byte, error)
MarshalBinary satisfies BinaryMarshaler
func (LoadBalancerType) MarshalText ¶ added in v0.42.0
func (t LoadBalancerType) MarshalText() ([]byte, error)
MarshalText satisfies TextMarshaler
func (LoadBalancerType) String ¶ added in v0.42.0
func (t LoadBalancerType) String() string
func (*LoadBalancerType) UnmarshalBinary ¶ added in v0.42.0
func (t *LoadBalancerType) UnmarshalBinary(data []byte) error
UnmarshalBinary satisfies BinaryUnmarshaler Needed for msgpack
func (*LoadBalancerType) UnmarshalText ¶ added in v0.42.0
func (t *LoadBalancerType) UnmarshalText(text []byte) error
UnmarshalText satisfies TextUnmarshaler
type ManagedConfig ¶ added in v0.28.0
type NATGateway ¶ added in v0.16.0
type NATGateway int
const ( UnknownNATGateway NATGateway = iota NoneNATGateway SingleNATGateway HighlyAvailableNATGateway )
func NATGatewayFromString ¶ added in v0.16.0
func NATGatewayFromString(s string) NATGateway
func (NATGateway) MarshalBinary ¶ added in v0.16.0
func (t NATGateway) MarshalBinary() ([]byte, error)
MarshalBinary satisfies BinaryMarshaler
func (NATGateway) MarshalText ¶ added in v0.16.0
func (t NATGateway) MarshalText() ([]byte, error)
MarshalText satisfies TextMarshaler
func (NATGateway) String ¶ added in v0.16.0
func (t NATGateway) String() string
func (*NATGateway) UnmarshalBinary ¶ added in v0.16.0
func (t *NATGateway) UnmarshalBinary(data []byte) error
UnmarshalBinary satisfies BinaryUnmarshaler Needed for msgpack
func (*NATGateway) UnmarshalText ¶ added in v0.16.0
func (t *NATGateway) UnmarshalText(text []byte) error
UnmarshalText satisfies TextUnmarshaler
type NodeGroup ¶ added in v0.31.0
type NodeGroup struct { Name string `json:"name" yaml:"name"` InstanceType string `json:"instance_type" yaml:"instance_type"` MinInstances int64 `json:"min_instances" yaml:"min_instances"` MaxInstances int64 `json:"max_instances" yaml:"max_instances"` Priority int64 `json:"priority" yaml:"priority"` InstanceVolumeSize int64 `json:"instance_volume_size" yaml:"instance_volume_size"` InstanceVolumeType VolumeType `json:"instance_volume_type" yaml:"instance_volume_type"` InstanceVolumeIOPS *int64 `json:"instance_volume_iops" yaml:"instance_volume_iops"` InstanceVolumeThroughput *int64 `json:"instance_volume_throughput" yaml:"instance_volume_throughput"` Spot bool `json:"spot" yaml:"spot"` SpotConfig *SpotConfig `json:"spot_config" yaml:"spot_config"` }
func (*NodeGroup) FillEmptySpotFields ¶ added in v0.31.0
func (*NodeGroup) HasChanged ¶ added in v0.40.0
compares the supported updatable fields of a nodegroup
func (*NodeGroup) MaxPossibleOnDemandInstances ¶ added in v0.31.0
func (*NodeGroup) MaxPossibleSpotInstances ¶ added in v0.31.0
func (*NodeGroup) SpotConfigOnDemandValues ¶ added in v0.31.0
func (*NodeGroup) UpdatePlan ¶ added in v0.40.0
type OperatorMetadata ¶ added in v0.28.0
type SpotConfig ¶
type SpotConfig struct { InstanceDistribution []string `json:"instance_distribution" yaml:"instance_distribution"` OnDemandBaseCapacity *int64 `json:"on_demand_base_capacity" yaml:"on_demand_base_capacity"` OnDemandPercentageAboveBaseCapacity *int64 `json:"on_demand_percentage_above_base_capacity" yaml:"on_demand_percentage_above_base_capacity"` MaxPrice *float64 `json:"max_price" yaml:"max_price"` InstancePools *int64 `json:"instance_pools" yaml:"instance_pools"` }
type SubnetVisibility ¶ added in v0.16.0
type SubnetVisibility int
const ( UnknownSubnetVisibility SubnetVisibility = iota PublicSubnetVisibility PrivateSubnetVisibility )
func SubnetVisibilityFromString ¶ added in v0.16.0
func SubnetVisibilityFromString(s string) SubnetVisibility
func (SubnetVisibility) MarshalBinary ¶ added in v0.16.0
func (t SubnetVisibility) MarshalBinary() ([]byte, error)
MarshalBinary satisfies BinaryMarshaler
func (SubnetVisibility) MarshalText ¶ added in v0.16.0
func (t SubnetVisibility) MarshalText() ([]byte, error)
MarshalText satisfies TextMarshaler
func (SubnetVisibility) String ¶ added in v0.16.0
func (t SubnetVisibility) String() string
func (*SubnetVisibility) UnmarshalBinary ¶ added in v0.16.0
func (t *SubnetVisibility) UnmarshalBinary(data []byte) error
UnmarshalBinary satisfies BinaryUnmarshaler Needed for msgpack
func (*SubnetVisibility) UnmarshalText ¶ added in v0.16.0
func (t *SubnetVisibility) UnmarshalText(text []byte) error
UnmarshalText satisfies TextUnmarshaler
type VolumeType ¶ added in v0.16.0
type VolumeType int
const ( UnknownVolumeType VolumeType = iota GP2VolumeType GP3VolumeType IO1VolumeType SC1VolumeType ST1VolumeType )
func VolumeTypeFromString ¶ added in v0.16.0
func VolumeTypeFromString(s string) VolumeType
VolumeTypeFromString turns string into StorageType
func (VolumeType) MarshalBinary ¶ added in v0.16.0
func (t VolumeType) MarshalBinary() ([]byte, error)
MarshalBinary satisfies BinaryMarshaler
func (VolumeType) MarshalText ¶ added in v0.16.0
func (t VolumeType) MarshalText() ([]byte, error)
MarshalText satisfies TextMarshaler
func (VolumeType) String ¶ added in v0.16.0
func (t VolumeType) String() string
func (*VolumeType) UnmarshalBinary ¶ added in v0.16.0
func (t *VolumeType) UnmarshalBinary(data []byte) error
UnmarshalBinary satisfies BinaryUnmarshaler Needed for msgpack
func (*VolumeType) UnmarshalText ¶ added in v0.16.0
func (t *VolumeType) UnmarshalText(text []byte) error
UnmarshalText satisfies TextUnmarshaler