func()

in internal/kubectl.go [359:399]


func (c Kubectl) Logs(namespace string, selector string, filters internal_filters.Filters, out func(string) (io.Writer, error)) error {
	builder := c.factory.NewBuilder().
		WithScheme(scheme.Scheme, scheme.Scheme.PrioritizedVersionsAllGroups()...).
		NamespaceParam(namespace).
		SingleResourceType().ResourceTypes("pods")

	if selector != "" {
		builder.LabelSelector(selector)
	} else {
		builder.SelectAllParam(true)
	}
	infos, err := builder.Do().Infos()
	if err != nil {
		return err
	}

	for i := range infos {
		obj := infos[i].Object
		switch t := obj.(type) {
		case *corev1.PodList:
			for _, p := range t.Items {
				// ignore pod when filters are being applied, and the pod doesn't match the filters.
				if !filters.Matches(p.Labels) {
					continue
				}
				if err := c.requestLogs(p, out); err != nil {
					return err
				}
			}
		case *corev1.Pod:
			// ignore pod when filters are being applied, and the pod doesn't match the filters.
			if !filters.Matches(t.Labels) {
				continue
			}
			if err := c.requestLogs(*t, out); err != nil {
				return err
			}
		}
	}
	return nil
}