// MakeGraph will create the graph of all build configurations and the image streams // they point to via image change triggers in the provided namespace(s) func (d *ChainDescriber) MakeGraph() (osgraph.Graph, error) { g := osgraph.New() loaders := []GraphLoader{} for namespace := range d.namespaces { glog.V(4).Infof("Loading build configurations from %q", namespace) loaders = append(loaders, &bcLoader{namespace: namespace, lister: d.c}) } loadingFuncs := []func() error{} for _, loader := range loaders { loadingFuncs = append(loadingFuncs, loader.Load) } if errs := parallel.Run(loadingFuncs...); len(errs) > 0 { return g, utilerrors.NewAggregate(errs) } for _, loader := range loaders { loader.AddToGraph(g) } buildedges.AddAllInputOutputEdges(g) return g, nil }
func (d *ProjectStatusDescriber) MakeGraph(namespace string) (osgraph.Graph, sets.String, error) { g := osgraph.New() loaders := []GraphLoader{ &serviceLoader{namespace: namespace, lister: d.K}, &serviceAccountLoader{namespace: namespace, lister: d.K}, &secretLoader{namespace: namespace, lister: d.K}, &rcLoader{namespace: namespace, lister: d.K}, &podLoader{namespace: namespace, lister: d.K}, // TODO check swagger for feature enablement and selectively add bcLoader and buildLoader // then remove errors.TolerateNotFoundError method. &bcLoader{namespace: namespace, lister: d.C}, &buildLoader{namespace: namespace, lister: d.C}, &isLoader{namespace: namespace, lister: d.C}, &dcLoader{namespace: namespace, lister: d.C}, &routeLoader{namespace: namespace, lister: d.C}, } loadingFuncs := []func() error{} for _, loader := range loaders { loadingFuncs = append(loadingFuncs, loader.Load) } forbiddenResources := sets.String{} if errs := parallel.Run(loadingFuncs...); len(errs) > 0 { actualErrors := []error{} for _, err := range errs { if kapierrors.IsForbidden(err) { forbiddenErr := err.(*kapierrors.StatusError) if (forbiddenErr.Status().Details != nil) && (len(forbiddenErr.Status().Details.Kind) > 0) { forbiddenResources.Insert(forbiddenErr.Status().Details.Kind) } continue } actualErrors = append(actualErrors, err) } if len(actualErrors) > 0 { return g, forbiddenResources, utilerrors.NewAggregate(actualErrors) } } for _, loader := range loaders { loader.AddToGraph(g) } kubeedges.AddAllExposedPodTemplateSpecEdges(g) kubeedges.AddAllExposedPodEdges(g) kubeedges.AddAllManagedByRCPodEdges(g) kubeedges.AddAllRequestedServiceAccountEdges(g) kubeedges.AddAllMountableSecretEdges(g) kubeedges.AddAllMountedSecretEdges(g) buildedges.AddAllInputOutputEdges(g) buildedges.AddAllBuildEdges(g) deployedges.AddAllTriggerEdges(g) deployedges.AddAllDeploymentEdges(g) imageedges.AddAllImageStreamRefEdges(g) routeedges.AddAllRouteEdges(g) return g, forbiddenResources, nil }
func (o CreateMasterCertsOptions) CreateMasterCerts() error { glog.V(4).Infof("Creating all certs with: %#v", o) signerCertOptions := CreateSignerCertOptions{ CertFile: DefaultCertFilename(o.CertDir, CAFilePrefix), KeyFile: DefaultKeyFilename(o.CertDir, CAFilePrefix), SerialFile: DefaultSerialFilename(o.CertDir, CAFilePrefix), Name: o.SignerName, Overwrite: o.Overwrite, Output: o.Output, } if err := signerCertOptions.Validate(nil); err != nil { return err } if _, err := signerCertOptions.CreateSignerCert(); err != nil { return err } // once we've minted the signer, don't overwrite it getSignerCertOptions := GetSignerCertOptions{ CertFile: DefaultCertFilename(o.CertDir, CAFilePrefix), KeyFile: DefaultKeyFilename(o.CertDir, CAFilePrefix), SerialFile: DefaultSerialFilename(o.CertDir, CAFilePrefix), } errs := parallel.Run( func() error { return o.createServerCerts(&getSignerCertOptions) }, func() error { return o.createAPIClients(&getSignerCertOptions) }, func() error { return o.createEtcdClientCerts(&getSignerCertOptions) }, func() error { return o.createKubeletClientCerts(&getSignerCertOptions) }, func() error { return o.createServiceAccountKeys() }, ) return utilerrors.NewAggregate(errs) }
func (d *ProjectStatusDescriber) MakeGraph(namespace string) (osgraph.Graph, error) { g := osgraph.New() loaders := []GraphLoader{ &serviceLoader{namespace: namespace, lister: d.K}, &serviceAccountLoader{namespace: namespace, lister: d.K}, &secretLoader{namespace: namespace, lister: d.K}, &rcLoader{namespace: namespace, lister: d.K}, &podLoader{namespace: namespace, lister: d.K}, &bcLoader{namespace: namespace, lister: d.C}, &buildLoader{namespace: namespace, lister: d.C}, &isLoader{namespace: namespace, lister: d.C}, &dcLoader{namespace: namespace, lister: d.C}, } loadingFuncs := []func() error{} for _, loader := range loaders { loadingFuncs = append(loadingFuncs, loader.Load) } if errs := parallel.Run(loadingFuncs...); len(errs) > 0 { return g, utilerrors.NewAggregate(errs) } for _, loader := range loaders { loader.AddToGraph(g) } kubeedges.AddAllExposedPodTemplateSpecEdges(g) kubeedges.AddAllExposedPodEdges(g) kubeedges.AddAllManagedByRCPodEdges(g) kubeedges.AddAllRequestedServiceAccountEdges(g) kubeedges.AddAllMountableSecretEdges(g) kubeedges.AddAllMountedSecretEdges(g) buildedges.AddAllInputOutputEdges(g) buildedges.AddAllBuildEdges(g) deployedges.AddAllTriggerEdges(g) deployedges.AddAllDeploymentEdges(g) imageedges.AddAllImageStreamRefEdges(g) return g, nil }