git subrepo clone (merge) https://github.com/kubernetes-incubator/metrics-server.git metrics-server
subrepo:
subdir: "metrics-server"
merged: "92d8412"
upstream:
origin: "https://github.com/kubernetes-incubator/metrics-server.git"
branch: "master"
commit: "92d8412"
git-subrepo:
version: "0.4.0"
origin: "???"
commit: "???"
diff --git a/metrics-server/vendor/k8s.io/apiserver/pkg/server/options/server_run_options.go b/metrics-server/vendor/k8s.io/apiserver/pkg/server/options/server_run_options.go
new file mode 100644
index 0000000..fccb24e
--- /dev/null
+++ b/metrics-server/vendor/k8s.io/apiserver/pkg/server/options/server_run_options.go
@@ -0,0 +1,158 @@
+/*
+Copyright 2016 The Kubernetes Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package options
+
+import (
+ "fmt"
+ "net"
+ "time"
+
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "k8s.io/apimachinery/pkg/runtime/serializer"
+ "k8s.io/apiserver/pkg/server"
+ utilfeature "k8s.io/apiserver/pkg/util/feature"
+
+ // add the generic feature gates
+ _ "k8s.io/apiserver/pkg/features"
+
+ "github.com/spf13/pflag"
+)
+
+// ServerRunOptions contains the options while running a generic api server.
+type ServerRunOptions struct {
+ AdvertiseAddress net.IP
+
+ CorsAllowedOriginList []string
+ ExternalHost string
+ MaxRequestsInFlight int
+ MaxMutatingRequestsInFlight int
+ RequestTimeout time.Duration
+ MinRequestTimeout int
+ TargetRAMMB int
+}
+
+func NewServerRunOptions() *ServerRunOptions {
+ defaults := server.NewConfig(serializer.CodecFactory{})
+ return &ServerRunOptions{
+ MaxRequestsInFlight: defaults.MaxRequestsInFlight,
+ MaxMutatingRequestsInFlight: defaults.MaxMutatingRequestsInFlight,
+ RequestTimeout: defaults.RequestTimeout,
+ MinRequestTimeout: defaults.MinRequestTimeout,
+ }
+}
+
+// ApplyOptions applies the run options to the method receiver and returns self
+func (s *ServerRunOptions) ApplyTo(c *server.Config) error {
+ c.CorsAllowedOriginList = s.CorsAllowedOriginList
+ c.ExternalAddress = s.ExternalHost
+ c.MaxRequestsInFlight = s.MaxRequestsInFlight
+ c.MaxMutatingRequestsInFlight = s.MaxMutatingRequestsInFlight
+ c.RequestTimeout = s.RequestTimeout
+ c.MinRequestTimeout = s.MinRequestTimeout
+ c.PublicAddress = s.AdvertiseAddress
+
+ return nil
+}
+
+// DefaultAdvertiseAddress sets the field AdvertiseAddress if unset. The field will be set based on the SecureServingOptions.
+func (s *ServerRunOptions) DefaultAdvertiseAddress(secure *SecureServingOptions) error {
+ if secure == nil {
+ return nil
+ }
+
+ if s.AdvertiseAddress == nil || s.AdvertiseAddress.IsUnspecified() {
+ hostIP, err := secure.DefaultExternalAddress()
+ if err != nil {
+ return fmt.Errorf("Unable to find suitable network address.error='%v'. "+
+ "Try to set the AdvertiseAddress directly or provide a valid BindAddress to fix this.", err)
+ }
+ s.AdvertiseAddress = hostIP
+ }
+
+ return nil
+}
+
+// Validate checks validation of ServerRunOptions
+func (s *ServerRunOptions) Validate() []error {
+ errors := []error{}
+ if s.TargetRAMMB < 0 {
+ errors = append(errors, fmt.Errorf("--target-ram-mb can not be negative value"))
+ }
+ if s.MaxRequestsInFlight < 0 {
+ errors = append(errors, fmt.Errorf("--max-requests-inflight can not be negative value"))
+ }
+ if s.MaxMutatingRequestsInFlight < 0 {
+ errors = append(errors, fmt.Errorf("--max-mutating-requests-inflight can not be negative value"))
+ }
+
+ if s.RequestTimeout.Nanoseconds() < 0 {
+ errors = append(errors, fmt.Errorf("--request-timeout can not be negative value"))
+ }
+
+ if s.MinRequestTimeout < 0 {
+ errors = append(errors, fmt.Errorf("--min-request-timeout can not be negative value"))
+ }
+
+ return errors
+}
+
+// AddFlags adds flags for a specific APIServer to the specified FlagSet
+func (s *ServerRunOptions) AddUniversalFlags(fs *pflag.FlagSet) {
+ // Note: the weird ""+ in below lines seems to be the only way to get gofmt to
+ // arrange these text blocks sensibly. Grrr.
+
+ fs.IPVar(&s.AdvertiseAddress, "advertise-address", s.AdvertiseAddress, ""+
+ "The IP address on which to advertise the apiserver to members of the cluster. This "+
+ "address must be reachable by the rest of the cluster. If blank, the --bind-address "+
+ "will be used. If --bind-address is unspecified, the host's default interface will "+
+ "be used.")
+
+ fs.StringSliceVar(&s.CorsAllowedOriginList, "cors-allowed-origins", s.CorsAllowedOriginList, ""+
+ "List of allowed origins for CORS, comma separated. An allowed origin can be a regular "+
+ "expression to support subdomain matching. If this list is empty CORS will not be enabled.")
+
+ fs.IntVar(&s.TargetRAMMB, "target-ram-mb", s.TargetRAMMB,
+ "Memory limit for apiserver in MB (used to configure sizes of caches, etc.)")
+
+ fs.StringVar(&s.ExternalHost, "external-hostname", s.ExternalHost,
+ "The hostname to use when generating externalized URLs for this master (e.g. Swagger API Docs).")
+
+ deprecatedMasterServiceNamespace := metav1.NamespaceDefault
+ fs.StringVar(&deprecatedMasterServiceNamespace, "master-service-namespace", deprecatedMasterServiceNamespace, ""+
+ "DEPRECATED: the namespace from which the kubernetes master services should be injected into pods.")
+
+ fs.IntVar(&s.MaxRequestsInFlight, "max-requests-inflight", s.MaxRequestsInFlight, ""+
+ "The maximum number of non-mutating requests in flight at a given time. When the server exceeds this, "+
+ "it rejects requests. Zero for no limit.")
+
+ fs.IntVar(&s.MaxMutatingRequestsInFlight, "max-mutating-requests-inflight", s.MaxMutatingRequestsInFlight, ""+
+ "The maximum number of mutating requests in flight at a given time. When the server exceeds this, "+
+ "it rejects requests. Zero for no limit.")
+
+ fs.DurationVar(&s.RequestTimeout, "request-timeout", s.RequestTimeout, ""+
+ "An optional field indicating the duration a handler must keep a request open before timing "+
+ "it out. This is the default request timeout for requests but may be overridden by flags such as "+
+ "--min-request-timeout for specific types of requests.")
+
+ fs.IntVar(&s.MinRequestTimeout, "min-request-timeout", s.MinRequestTimeout, ""+
+ "An optional field indicating the minimum number of seconds a handler must keep "+
+ "a request open before timing it out. Currently only honored by the watch request "+
+ "handler, which picks a randomized value above this number as the connection timeout, "+
+ "to spread out load.")
+
+ utilfeature.DefaultFeatureGate.AddFlag(fs)
+}