func getExtraWatchers()

in metricbeat/module/kubernetes/util/kubernetes.go [179:266]


func getExtraWatchers(resourceName string, addResourceMetadata *metadata.AddResourceMetadataConfig) []string {
	switch resourceName {
	case PodResource:
		extra := []string{}
		if addResourceMetadata.Node.Enabled() {
			extra = append(extra, NodeResource)
		}
		if addResourceMetadata.Namespace.Enabled() {
			extra = append(extra, NamespaceResource)
		}

		// We need to create watchers for ReplicaSets and Jobs that it might belong to,
		// in order to be able to retrieve 2nd layer Owner metadata like in case of:
		// Deployment -> Replicaset -> Pod
		// CronJob -> job -> Pod
		if addResourceMetadata.Deployment {
			extra = append(extra, ReplicaSetResource)
		}
		if addResourceMetadata.CronJob {
			extra = append(extra, JobResource)
		}
		return extra
	case ServiceResource:
		extra := []string{}
		if addResourceMetadata.Namespace.Enabled() {
			extra = append(extra, NamespaceResource)
		}
		return extra
	case DeploymentResource:
		extra := []string{}
		if addResourceMetadata.Namespace.Enabled() {
			extra = append(extra, NamespaceResource)
		}
		return extra
	case ReplicaSetResource:
		extra := []string{}
		if addResourceMetadata.Namespace.Enabled() {
			extra = append(extra, NamespaceResource)
		}
		return extra
	case StatefulSetResource:
		extra := []string{}
		if addResourceMetadata.Namespace.Enabled() {
			extra = append(extra, NamespaceResource)
		}
		return extra
	case DaemonSetResource:
		extra := []string{}
		if addResourceMetadata.Namespace.Enabled() {
			extra = append(extra, NamespaceResource)
		}
		return extra
	case JobResource:
		extra := []string{}
		if addResourceMetadata.Namespace.Enabled() {
			extra = append(extra, NamespaceResource)
		}
		return extra
	case CronJobResource:
		extra := []string{}
		if addResourceMetadata.Namespace.Enabled() {
			extra = append(extra, NamespaceResource)
		}
		return extra
	case PersistentVolumeResource:
		return []string{}
	case PersistentVolumeClaimResource:
		extra := []string{}
		if addResourceMetadata.Namespace.Enabled() {
			extra = append(extra, NamespaceResource)
		}
		return extra
	case StorageClassResource:
		return []string{}
	case NodeResource:
		return []string{}
	case NamespaceResource:
		return []string{}
	case HorizontalPodAutoscalerResource:
		extra := []string{}
		if addResourceMetadata.Namespace.Enabled() {
			extra = append(extra, NamespaceResource)
		}
		return extra
	default:
		return []string{}
	}
}