func TestRun(t *testing.T) { certDir, err := ioutil.TempDir("", "") if err != nil { t.Fatalf("Failed to create temporary certificate directory: %v", err) } defer os.RemoveAll(certDir) s := options.NewServerRunOptions() s.SecureServing.ServingOptions.BindPort = securePort s.InsecureServing.BindPort = insecurePort s.Etcd.StorageConfig.ServerList = []string{"http://localhost:2379"} s.SecureServing.ServerCert.CertDirectory = certDir go func() { if err := app.Run(s); err != nil { t.Fatalf("Error in bringing up the server: %v", err) } }() if err := waitForApiserverUp(); err != nil { t.Fatalf("%v", err) } testSwaggerSpec(t) testSupport(t) testAPIGroupList(t) testAPIGroup(t) testAPIResourceList(t) }
// NewFederationAPIServer creates a new hyperkube Server object that includes the // description and flags. func NewFederationAPIServer() *Server { s := options.NewServerRunOptions() hks := Server{ SimpleUsage: "federation-apiserver", Long: "The API entrypoint for the federation control plane", Run: func(_ *Server, args []string) error { return app.Run(s) }, } s.AddFlags(hks.Flags()) return &hks }
// NewAPIServerCommand creates a *cobra.Command object with default parameters func NewAPIServerCommand() *cobra.Command { s := options.NewServerRunOptions() s.AddFlags(pflag.CommandLine) cmd := &cobra.Command{ Use: "federation-apiserver", Long: `The Kubernetes federation API server validates and configures data for the api objects which include pods, services, replicationcontrollers, and others. The API Server services REST operations and provides the frontend to the cluster's shared state through which all other components interact.`, Run: func(cmd *cobra.Command, args []string) { }, } return cmd }
func main() { rand.Seed(time.Now().UTC().UnixNano()) s := options.NewServerRunOptions() s.AddFlags(pflag.CommandLine) flag.InitFlags() logs.InitLogs() defer logs.FlushLogs() verflag.PrintAndExitIfRequested() if err := app.Run(s); err != nil { fmt.Fprintf(os.Stderr, "%v\n", err) os.Exit(1) } }
func TestRun(t *testing.T) { s := options.NewServerRunOptions() s.InsecurePort = insecurePort _, ipNet, _ := net.ParseCIDR("10.10.10.0/24") s.ServiceClusterIPRange = *ipNet s.StorageConfig.ServerList = []string{"http://localhost:2379"} go func() { if err := app.Run(s); err != nil { t.Fatalf("Error in bringing up the server: %v", err) } }() if err := waitForApiserverUp(); err != nil { t.Fatalf("%v", err) } testSwaggerSpec(t) testSupport(t) testAPIGroupList(t) testAPIGroup(t) testAPIResourceList(t) }
func TestLongRunningRequestRegexp(t *testing.T) { regexp := regexp.MustCompile(options.NewServerRunOptions().LongRunningRequestRE) dontMatch := []string{ "/api/v1/watch-namespace/", "/api/v1/namespace-proxy/", "/api/v1/namespace-watch", "/api/v1/namespace-proxy", "/api/v1/namespace-portforward/pods", "/api/v1/portforward/pods", ". anything", "/ that", } doMatch := []string{ "/api/v1/pods/watch", "/api/v1/watch/stuff", "/api/v1/default/service/proxy", "/api/v1/pods/proxy/path/to/thing", "/api/v1/namespaces/myns/pods/mypod/log", "/api/v1/namespaces/myns/pods/mypod/logs", "/api/v1/namespaces/myns/pods/mypod/portforward", "/api/v1/namespaces/myns/pods/mypod/exec", "/api/v1/namespaces/myns/pods/mypod/attach", "/api/v1/namespaces/myns/pods/mypod/log/", "/api/v1/namespaces/myns/pods/mypod/logs/", "/api/v1/namespaces/myns/pods/mypod/portforward/", "/api/v1/namespaces/myns/pods/mypod/exec/", "/api/v1/namespaces/myns/pods/mypod/attach/", "/api/v1/watch/namespaces/myns/pods", } for _, path := range dontMatch { if regexp.MatchString(path) { t.Errorf("path should not have match regexp but did: %s", path) } } for _, path := range doMatch { if !regexp.MatchString(path) { t.Errorf("path should have match regexp did not: %s", path) } } }