// SetOpenShiftClient sets the passed OpenShift client in the application configuration func (c *AppConfig) SetOpenShiftClient(osclient client.Interface, OriginNamespace string) { c.OSClient = osclient c.OriginNamespace = OriginNamespace namespaces := []string{OriginNamespace} if openshiftNamespace := "openshift"; OriginNamespace != openshiftNamespace { namespaces = append(namespaces, openshiftNamespace) } c.ImageStreamSearcher = app.ImageStreamSearcher{ Client: osclient, ImageStreamImages: osclient, Namespaces: namespaces, } c.ImageStreamByAnnotationSearcher = app.NewImageStreamByAnnotationSearcher(osclient, osclient, namespaces) c.TemplateSearcher = app.TemplateSearcher{ Client: osclient, TemplateConfigsNamespacer: osclient, Namespaces: namespaces, } c.TemplateFileSearcher = &app.TemplateFileSearcher{ Typer: c.Typer, Mapper: c.Mapper, ClientMapper: c.ClientMapper, Namespace: OriginNamespace, } c.DockerSearcher = app.ImageImportSearcher{ Client: osclient.ImageStreams(OriginNamespace), AllowInsecure: c.InsecureRegistry, Fallback: c.DockerImageSearcher(), } }
// SetOpenShiftClient sets the passed OpenShift client in the application configuration func (c *AppConfig) SetOpenShiftClient(osclient client.Interface, originNamespace string) { c.osclient = osclient c.originNamespace = originNamespace namespaces := []string{originNamespace} if openshiftNamespace := "openshift"; originNamespace != openshiftNamespace { namespaces = append(namespaces, openshiftNamespace) } c.imageStreamSearcher = app.ImageStreamSearcher{ Client: osclient, ImageStreamImages: osclient, Namespaces: namespaces, StopOnMatch: !c.AsSearch, } c.imageStreamByAnnotationSearcher = app.NewImageStreamByAnnotationSearcher(osclient, osclient, namespaces) c.templateSearcher = app.TemplateSearcher{ Client: osclient, TemplateConfigsNamespacer: osclient, Namespaces: namespaces, } c.templateFileSearcher = &app.TemplateFileSearcher{ Typer: c.typer, Mapper: c.mapper, ClientMapper: c.clientMapper, Namespace: originNamespace, } c.dockerSearcher = app.ImageImportSearcher{ Client: osclient.ImageStreams(originNamespace), AllowInsecure: c.InsecureRegistry, Fallback: c.dockerImageSearcher(), } }
func deleteImageStreams(client osclient.Interface, ns string) error { items, err := client.ImageStreams(ns).List(labels.Everything(), fields.Everything()) if err != nil { return err } for i := range items.Items { err := client.ImageStreams(ns).Delete(items.Items[i].Name) if err != nil && !errors.IsNotFound(err) { return err } } return nil }
func deleteImageStreams(client osclient.Interface, ns string) error { items, err := client.ImageStreams(ns).List(kapi.ListOptions{}) if err != nil { return err } for i := range items.Items { err := client.ImageStreams(ns).Delete(items.Items[i].Name) if err != nil && !errors.IsNotFound(err) { return err } } return nil }
func unloadImageStreamLabel(client osclient.Interface, application *api.Application, labelSelector labels.Selector) error { resourceList, _ := client.ImageStreams(application.Namespace).List(kapi.ListOptions{LabelSelector: labelSelector, FieldSelector: fields.Everything()}) errs := []error{} for _, resource := range resourceList.Items { if !hasItem(application.Spec.Items, api.Item{Kind: "ImageStream", Name: resource.Name}) { delete(resource.Labels, fmt.Sprintf("%s.application.%s", application.Namespace, application.Name)) if _, err := client.ImageStreams(application.Namespace).Update(&resource); err != nil { errs = append(errs, err) } } } return nil }
// SetOpenShiftClient sets the passed OpenShift client in the application configuration func (c *AppConfig) SetOpenShiftClient(osclient client.Interface, OriginNamespace string, dockerclient *docker.Client) { c.OSClient = osclient c.OriginNamespace = OriginNamespace namespaces := []string{OriginNamespace} if openshiftNamespace := "openshift"; OriginNamespace != openshiftNamespace { namespaces = append(namespaces, openshiftNamespace) } c.ImageStreamSearcher = app.ImageStreamSearcher{ Client: osclient, ImageStreamImages: osclient, Namespaces: namespaces, AllowMissingTags: c.AllowMissingImageStreamTags, } c.ImageStreamByAnnotationSearcher = app.NewImageStreamByAnnotationSearcher(osclient, osclient, namespaces) c.TemplateSearcher = app.TemplateSearcher{ Client: osclient, TemplateConfigsNamespacer: osclient, Namespaces: namespaces, } c.TemplateFileSearcher = &app.TemplateFileSearcher{ Typer: c.Typer, Mapper: c.Mapper, ClientMapper: c.ClientMapper, Namespace: OriginNamespace, } // the hierarchy of docker searching is: // 1) if we have an openshift client - query docker registries via openshift, // if we're unable to query via openshift, query the docker registries directly(fallback), // if we don't find a match there and a local docker daemon exists, look in the local registry. // 2) if we don't have an openshift client - query the docker registries directly, // if we don't find a match there and a local docker daemon exists, look in the local registry. c.DockerSearcher = app.DockerClientSearcher{ Client: dockerclient, Insecure: c.InsecureRegistry, AllowMissingImages: c.AllowMissingImages, RegistrySearcher: app.ImageImportSearcher{ Client: osclient.ImageStreams(OriginNamespace), AllowInsecure: c.InsecureRegistry, Fallback: c.DockerRegistrySearcher(), }, } }
// NewImageStreamEvaluator computes resource usage of ImageStreams. Instantiating this is necessary for // resource quota admission controller to properly work on image stream related objects. func NewImageStreamEvaluator(osClient osclient.Interface) kquota.Evaluator { computeResources := []kapi.ResourceName{ imageapi.ResourceImages, } matchesScopeFunc := func(kapi.ResourceQuotaScope, runtime.Object) bool { return true } getFuncByNamespace := func(namespace, name string) (runtime.Object, error) { return osClient.ImageStreams(namespace).Get(name) } listFuncByNamespace := func(namespace string, options kapi.ListOptions) (runtime.Object, error) { return osClient.ImageStreams(namespace).List(options) } return quotautil.NewSharedContextEvaluator( imageStreamEvaluatorName, kapi.Kind("ImageStream"), nil, computeResources, matchesScopeFunc, getFuncByNamespace, listFuncByNamespace, imageStreamConstraintsFunc, makeImageStreamUsageComputerFactory(osClient)) }
func loadImageStreams(g osgraph.Graph, graphLock sync.Mutex, namespace string, kclient kclient.Interface, client client.Interface) error { iss, err := client.ImageStreams(namespace).List(labels.Everything(), fields.Everything()) if err != nil { return err } graphLock.Lock() defer graphLock.Unlock() for i := range iss.Items { imagegraph.EnsureImageStreamNode(g, &iss.Items[i]) imagegraph.EnsureAllImageStreamTagNodes(g, &iss.Items[i]) } return nil }