func CaptureKubernetes()

in cmd/hub/kube/kubernetes.go [58:143]


func CaptureKubernetes(component *manifest.ComponentRef, stackBaseDir string, componentsBaseDir string,
	componentOutputs parameters.CapturedOutputs) parameters.CapturedOutputs {

	outputs := make(parameters.CapturedOutputs)

	componentName := manifest.ComponentQualifiedNameFromRef(component)
	flavor := "k8s-aws"
	if o, exist := componentOutputs[parameters.OutputQualifiedName(kubernetesFlavorOutput, componentName)]; exist {
		flavor = util.String(o.Value)
	}

	domainQName := parameters.OutputQualifiedName(stackDomainOutput, componentName)
	if _, exists := componentOutputs[domainQName]; !exists {
		util.Warn("Component `%s` declared to provide Kubernetes but no `%s` output found", componentName, domainQName)
		if len(componentOutputs) > 0 {
			log.Print("Outputs:")
			parameters.PrintCapturedOutputs(componentOutputs)
		}
		return outputs
	}

	switch flavor {
	case "k8s-aws":
		var missing []string
		for _, outputName := range KubernetesKeysParameters {
			outputQName := parameters.OutputQualifiedName(outputName, componentName)
			if _, exists := componentOutputs[outputQName]; !exists {
				missing = append(missing, outputName)
			}
		}
		if len(missing) > 0 {
			util.Warn("Component `%s` declared to provide Kubernetes but some key/certs output(s) are missing: %v",
				componentName, missing)
		}

	case "eks":
		caQName := parameters.OutputQualifiedName(kubernetesApiCaCertOutput, componentName)
		_, exists := componentOutputs[caQName]
		if !exists {
			util.Warn("Component `%s` declared to provide EKS Kubernetes but no `%s` output found", componentName, caQName)
			if config.Debug && len(componentOutputs) > 0 {
				log.Print("Outputs:")
				parameters.PrintCapturedOutputs(componentOutputs)
			}
		}

	case "openshift":
		tokenQName := parameters.OutputQualifiedName(kubernetesApiTokenOutput, componentName)
		_, exists := componentOutputs[tokenQName]
		if !exists {
			util.Warn("Component `%s` declared to provide OpenShift Kubernetes but no `%s` output found", componentName, tokenQName)
			if config.Debug && len(componentOutputs) > 0 {
				log.Print("Outputs:")
				parameters.PrintCapturedOutputs(componentOutputs)
			}
		}

	case "gke":
		caQName := parameters.OutputQualifiedName(kubernetesApiCaCertOutput, componentName)
		tokenQName := parameters.OutputQualifiedName(kubernetesApiTokenOutput, componentName)
		_, caExists := componentOutputs[caQName]
		_, tokenExists := componentOutputs[tokenQName]
		if !caExists || !tokenExists {
			util.Warn("Component `%s` declared to provide GKE Kubernetes but no `%s` or `%s` output found", componentName, tokenQName, caQName)
			if config.Debug && len(componentOutputs) > 0 {
				log.Print("Outputs:")
				parameters.PrintCapturedOutputs(componentOutputs)
			}
		}

	case "aks":
		caQName := parameters.OutputQualifiedName(kubernetesApiCaCertOutput, componentName)
		tokenQName := parameters.OutputQualifiedName(kubernetesApiTokenOutput, componentName)
		_, caExists := componentOutputs[caQName]
		_, tokenExists := componentOutputs[tokenQName]
		if !caExists || !tokenExists {
			util.Warn("Component `%s` declared to provide AKS Kubernetes but no `%s` or `%s` output found", componentName, tokenQName, caQName)
			if config.Debug && len(componentOutputs) > 0 {
				log.Print("Outputs:")
				parameters.PrintCapturedOutputs(componentOutputs)
			}
		}
	}

	return outputs
}