func installFederationAPIs(s *options.APIServer, g *genericapiserver.GenericAPIServer, f genericapiserver.StorageFactory) { storage, err := f.New(federation.Resource("clusters")) if err != nil { glog.Fatalf("Unable to find storage destination for %v, due to %v", "clusters", err.Error()) } clusterStorage, clusterStatusStorage := clusteretcd.NewREST(generic.RESTOptions{ Storage: storage, Decorator: g.StorageDecorator(), DeleteCollectionWorkers: s.DeleteCollectionWorkers, }) federationResources := map[string]rest.Storage{ "clusters": clusterStorage, "clusters/status": clusterStatusStorage, } federationGroupMeta := registered.GroupOrDie(federation.GroupName) apiGroupInfo := genericapiserver.APIGroupInfo{ GroupMeta: *federationGroupMeta, VersionedResourcesStorageMap: map[string]map[string]rest.Storage{ "v1alpha1": federationResources, }, OptionsExternalVersion: ®istered.GroupOrDie(api.GroupName).GroupVersion, Scheme: api.Scheme, ParameterCodec: api.ParameterCodec, NegotiatedSerializer: api.Codecs, } if err := g.InstallAPIGroup(&apiGroupInfo); err != nil { glog.Fatalf("Error in registering group versions: %v", err) } }
func createRESTOptionsOrDie(s *genericoptions.ServerRunOptions, g *genericapiserver.GenericAPIServer, f genericapiserver.StorageFactory, resource unversioned.GroupResource) generic.RESTOptions { storage, err := f.New(resource) if err != nil { glog.Fatalf("Unable to find storage destination for %v, due to %v", resource, err.Error()) } return generic.RESTOptions{ Storage: storage, Decorator: g.StorageDecorator(), DeleteCollectionWorkers: s.DeleteCollectionWorkers, } }