Cleanup how multi-string flags are handled in main()
This commit is contained in:
parent
35f3c92a70
commit
53fc344eca
|
|
@ -66,10 +66,13 @@ func (flag *MultiStringFlag) Set(value string) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
func multiStringFlag(name string, usage string) *MultiStringFlag {
|
||||||
nodeGroupsFlag MultiStringFlag
|
value := new(MultiStringFlag)
|
||||||
nodeGroupAutoDiscoveryFlag MultiStringFlag
|
flag.Var(value, name, usage)
|
||||||
|
return value
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
clusterName = flag.String("cluster-name", "", "Autoscaled cluster name, if available")
|
clusterName = flag.String("cluster-name", "", "Autoscaled cluster name, if available")
|
||||||
address = flag.String("address", ":8085", "The address to expose prometheus metrics.")
|
address = flag.String("address", ":8085", "The address to expose prometheus metrics.")
|
||||||
kubernetes = flag.String("kubernetes", "", "Kubernetes master location. Leave blank for default")
|
kubernetes = flag.String("kubernetes", "", "Kubernetes master location. Leave blank for default")
|
||||||
|
|
@ -116,6 +119,16 @@ var (
|
||||||
maxTotalUnreadyPercentage = flag.Float64("max-total-unready-percentage", 45, "Maximum percentage of unready nodes in the cluster. After this is exceeded, CA halts operations")
|
maxTotalUnreadyPercentage = flag.Float64("max-total-unready-percentage", 45, "Maximum percentage of unready nodes in the cluster. After this is exceeded, CA halts operations")
|
||||||
okTotalUnreadyCount = flag.Int("ok-total-unready-count", 3, "Number of allowed unready nodes, irrespective of max-total-unready-percentage")
|
okTotalUnreadyCount = flag.Int("ok-total-unready-count", 3, "Number of allowed unready nodes, irrespective of max-total-unready-percentage")
|
||||||
maxNodeProvisionTime = flag.Duration("max-node-provision-time", 15*time.Minute, "Maximum time CA waits for node to be provisioned")
|
maxNodeProvisionTime = flag.Duration("max-node-provision-time", 15*time.Minute, "Maximum time CA waits for node to be provisioned")
|
||||||
|
nodeGroupsFlag = multiStringFlag(
|
||||||
|
"nodes",
|
||||||
|
"sets min,max size and other configuration data for a node group in a format accepted by cloud provider. Can be used multiple times. Format: <min>:<max>:<other...>")
|
||||||
|
nodeGroupAutoDiscoveryFlag = multiStringFlag(
|
||||||
|
"node-group-auto-discovery",
|
||||||
|
"One or more definition(s) of node group auto-discovery. "+
|
||||||
|
"A definition is expressed `<name of discoverer>:[<key>[=<value>]]`. "+
|
||||||
|
"The `aws` and `gce` cloud providers are currently supported. AWS matches by ASG tags, e.g. `asg:tag=tagKey,anotherTagKey`. "+
|
||||||
|
"GCE matches by IG name prefix, and requires you to specify min and max nodes per IG, e.g. `mig:namePrefix=pfx,min=0,max=10` "+
|
||||||
|
"Can be used multiple times.")
|
||||||
|
|
||||||
estimatorFlag = flag.String("estimator", estimator.BinpackingEstimatorName,
|
estimatorFlag = flag.String("estimator", estimator.BinpackingEstimatorName,
|
||||||
"Type of resource estimator to be used in scale up. Available values: ["+strings.Join(estimator.AvailableEstimators, ",")+"]")
|
"Type of resource estimator to be used in scale up. Available values: ["+strings.Join(estimator.AvailableEstimators, ",")+"]")
|
||||||
|
|
@ -150,7 +163,7 @@ func createAutoscalingOptions() context.AutoscalingOptions {
|
||||||
return context.AutoscalingOptions{
|
return context.AutoscalingOptions{
|
||||||
CloudConfig: *cloudConfig,
|
CloudConfig: *cloudConfig,
|
||||||
CloudProviderName: *cloudProviderFlag,
|
CloudProviderName: *cloudProviderFlag,
|
||||||
NodeGroupAutoDiscovery: nodeGroupAutoDiscoveryFlag,
|
NodeGroupAutoDiscovery: *nodeGroupAutoDiscoveryFlag,
|
||||||
MaxTotalUnreadyPercentage: *maxTotalUnreadyPercentage,
|
MaxTotalUnreadyPercentage: *maxTotalUnreadyPercentage,
|
||||||
OkTotalUnreadyCount: *okTotalUnreadyCount,
|
OkTotalUnreadyCount: *okTotalUnreadyCount,
|
||||||
EstimatorName: *estimatorFlag,
|
EstimatorName: *estimatorFlag,
|
||||||
|
|
@ -163,7 +176,7 @@ func createAutoscalingOptions() context.AutoscalingOptions {
|
||||||
MinCoresTotal: minCoresTotal,
|
MinCoresTotal: minCoresTotal,
|
||||||
MaxMemoryTotal: maxMemoryTotal,
|
MaxMemoryTotal: maxMemoryTotal,
|
||||||
MinMemoryTotal: minMemoryTotal,
|
MinMemoryTotal: minMemoryTotal,
|
||||||
NodeGroups: nodeGroupsFlag,
|
NodeGroups: *nodeGroupsFlag,
|
||||||
ScaleDownDelayAfterAdd: *scaleDownDelayAfterAdd,
|
ScaleDownDelayAfterAdd: *scaleDownDelayAfterAdd,
|
||||||
ScaleDownDelayAfterDelete: *scaleDownDelayAfterDelete,
|
ScaleDownDelayAfterDelete: *scaleDownDelayAfterDelete,
|
||||||
ScaleDownDelayAfterFailure: *scaleDownDelayAfterFailure,
|
ScaleDownDelayAfterFailure: *scaleDownDelayAfterFailure,
|
||||||
|
|
@ -282,13 +295,7 @@ func main() {
|
||||||
leaderElection.LeaderElect = true
|
leaderElection.LeaderElect = true
|
||||||
|
|
||||||
bindFlags(&leaderElection, pflag.CommandLine)
|
bindFlags(&leaderElection, pflag.CommandLine)
|
||||||
flag.Var(&nodeGroupsFlag, "nodes", "sets min,max size and other configuration data for a node group in a format accepted by cloud provider."+
|
|
||||||
"Can be used multiple times. Format: <min>:<max>:<other...>")
|
|
||||||
flag.Var(&nodeGroupAutoDiscoveryFlag, "node-group-auto-discovery", "One or more definition(s) of node group auto-discovery. "+
|
|
||||||
"A definition is expressed `<name of discoverer>:[<key>[=<value>]]`. "+
|
|
||||||
"The `aws` and `gce` cloud providers are currently supported. AWS matches by ASG tags, e.g. `asg:tag=tagKey,anotherTagKey`. "+
|
|
||||||
"GCE matches by IG name prefix, and requires you to specify min and max nodes per IG, e.g. `mig:namePrefix=pfx,min=0,max=10` "+
|
|
||||||
"Can be used multiple times.")
|
|
||||||
kube_flag.InitFlags()
|
kube_flag.InitFlags()
|
||||||
|
|
||||||
healthCheck := metrics.NewHealthCheck(*maxInactivityTimeFlag, *maxFailingTimeFlag)
|
healthCheck := metrics.NewHealthCheck(*maxInactivityTimeFlag, *maxFailingTimeFlag)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue