// NewAPIServer creates a new APIServer object with default parameters func NewAPIServer() *APIServer { s := APIServer{ ServerRunOptions: genericapiserver.NewServerRunOptions(), APIGroupPrefix: "/apis", APIPrefix: "/api", AdmissionControl: "AlwaysAdmit", AuthorizationMode: "AlwaysAllow", DeleteCollectionWorkers: 1, EnableLogsSupport: true, StorageConfig: storagebackend.Config{ Prefix: genericapiserver.DefaultEtcdPathPrefix, }, EventTTL: 1 * time.Hour, MasterCount: 1, MasterServiceNamespace: api.NamespaceDefault, RuntimeConfig: make(config.ConfigurationMap), StorageVersions: registered.AllPreferredGroupVersions(), DefaultStorageVersions: registered.AllPreferredGroupVersions(), KubeletConfig: kubeletclient.KubeletClientConfig{ Port: ports.KubeletPort, EnableHttps: true, HTTPTimeout: time.Duration(5) * time.Second, }, } return &s }
func main() { config := genericapiserver.Config{ EnableIndex: true, APIPrefix: "/api", APIGroupPrefix: "/apis", } s := genericapiserver.New(&config) groupVersion := v1.SchemeGroupVersion groupName := groupVersion.Group groupMeta, err := registered.Group(groupName) if err != nil { glog.Fatalf("%v", err) } storageDestinations, err := newStorageDestinations(groupName, groupMeta) if err != nil { glog.Fatalf("Unable to init etcd: %v", err) } restStorageMap := map[string]rest.Storage{ "testtypes": testgroupetcd.NewREST(storageDestinations.Get(groupName, "testtype"), s.StorageDecorator()), } apiGroupInfo := genericapiserver.APIGroupInfo{ GroupMeta: *groupMeta, VersionedResourcesStorageMap: map[string]map[string]rest.Storage{ groupVersion.Version: restStorageMap, }, } if err := s.InstallAPIGroups([]genericapiserver.APIGroupInfo{apiGroupInfo}); err != nil { glog.Fatalf("Error in installing API: %v", err) } s.Run(genericapiserver.NewServerRunOptions()) }
// NewAPIServer creates a new APIServer object with default parameters func NewAPIServer() *APIServer { s := APIServer{ ServerRunOptions: genericapiserver.NewServerRunOptions(), EventTTL: 1 * time.Hour, KubeletConfig: kubeletclient.KubeletClientConfig{ Port: ports.KubeletPort, EnableHttps: true, HTTPTimeout: time.Duration(5) * time.Second, }, } return &s }
// NewAPIServer creates a new APIServer object with default parameters func NewAPIServer() *APIServer { s := APIServer{ ServerRunOptions: genericapiserver.NewServerRunOptions(), AdmissionControl: "AlwaysAdmit", AuthorizationMode: "AlwaysAllow", DefaultStorageMediaType: "application/json", DeleteCollectionWorkers: 1, EventTTL: 1 * time.Hour, MasterServiceNamespace: api.NamespaceDefault, KubeletConfig: kubeletclient.KubeletClientConfig{ Port: ports.KubeletPort, EnableHttps: true, HTTPTimeout: time.Duration(5) * time.Second, }, } return &s }
func main() { runtime.GOMAXPROCS(runtime.NumCPU()) rand.Seed(time.Now().UTC().UnixNano()) s := genericapiserver.NewServerRunOptions() s.AddFlags(pflag.CommandLine) flag.InitFlags() util.InitLogs() defer util.FlushLogs() verflag.PrintAndExitIfRequested() if err := app.Run(s); err != nil { fmt.Fprintf(os.Stderr, "%v\n", err) os.Exit(1) } }
func Run() error { config := genericapiserver.Config{ EnableIndex: true, EnableSwaggerSupport: true, APIPrefix: "/api", APIGroupPrefix: "/apis", Serializer: api.Codecs, } s, err := genericapiserver.New(&config) if err != nil { return fmt.Errorf("Error in bringing up the server: %v", err) } groupVersion := v1.SchemeGroupVersion groupName := groupVersion.Group groupMeta, err := registered.Group(groupName) if err != nil { return fmt.Errorf("%v", err) } storageDestinations, err := newStorageDestinations(groupName, groupMeta) if err != nil { return fmt.Errorf("Unable to init etcd: %v", err) } restStorageMap := map[string]rest.Storage{ "testtypes": testgroupetcd.NewREST(storageDestinations.Get(groupName, "testtype"), s.StorageDecorator()), } apiGroupInfo := genericapiserver.APIGroupInfo{ GroupMeta: *groupMeta, VersionedResourcesStorageMap: map[string]map[string]rest.Storage{ groupVersion.Version: restStorageMap, }, Scheme: api.Scheme, NegotiatedSerializer: api.Codecs, } if err := s.InstallAPIGroups([]genericapiserver.APIGroupInfo{apiGroupInfo}); err != nil { return fmt.Errorf("Error in installing API: %v", err) } serverOptions := genericapiserver.NewServerRunOptions() serverOptions.InsecurePort = InsecurePort serverOptions.SecurePort = SecurePort s.Run(serverOptions) return nil }
func TestRun(t *testing.T) { s := genericapiserver.NewServerRunOptions() s.InsecurePort = insecurePort _, ipNet, _ := net.ParseCIDR("10.10.10.0/24") s.ServiceClusterIPRange = *ipNet s.StorageConfig.ServerList = []string{"http://localhost:4001"} go func() { if err := 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(genericapiserver.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) } } }
// NewAPIServer creates a new APIServer object with default parameters func NewAPIServer() *APIServer { s := APIServer{ ServerRunOptions: genericapiserver.NewServerRunOptions(), AdmissionControl: "AlwaysAdmit", AuthorizationMode: "AlwaysAllow", DeleteCollectionWorkers: 1, EtcdConfig: etcdstorage.EtcdConfig{ Prefix: genericapiserver.DefaultEtcdPathPrefix, DeserializationCacheSize: genericapiserver.DefaultDeserializationCacheSize, }, EventTTL: 1 * time.Hour, MasterServiceNamespace: api.NamespaceDefault, StorageVersions: registered.AllPreferredGroupVersions(), DefaultStorageVersions: registered.AllPreferredGroupVersions(), KubeletConfig: kubeletclient.KubeletClientConfig{ Port: ports.KubeletPort, EnableHttps: true, HTTPTimeout: time.Duration(5) * time.Second, }, } return &s }
func NewServerRunOptions() *genericapiserver.ServerRunOptions { serverOptions := genericapiserver.NewServerRunOptions() serverOptions.InsecurePort = InsecurePort serverOptions.SecurePort = SecurePort return serverOptions }