func Container()

in internal/manifests/neuronmonitor/container.go [21:73]


func Container(cfg config.Config, logger logr.Logger, exporter v1alpha1.NeuronMonitor) corev1.Container {
	image := exporter.Spec.Image
	if len(image) == 0 {
		image = cfg.NeuronMonitorImage()
	}

	ports := make([]corev1.ContainerPort, 0, len(exporter.Spec.Ports))
	for _, p := range exporter.Spec.Ports {
		ports = append(ports, corev1.ContainerPort{
			Name:          p.Name,
			ContainerPort: p.Port,
			Protocol:      p.Protocol,
		})
	}

	command := exporter.Spec.Command

	argsMap := exporter.Spec.Args
	if argsMap == nil {
		argsMap = map[string]string{}
	}
	var args []string
	for k, v := range argsMap {
		args = append(args, "--"+k, v)
	}
	args = append(args, "--neuron-monitor-config", fmt.Sprintf("%s/%s", configmapMountPath, NeuronMonitorJson))

	var volumeMounts []corev1.VolumeMount
	volumeMounts = append(volumeMounts, corev1.VolumeMount{
		Name:      NeuronConfigMapVolumeName,
		MountPath: configmapMountPath,
	})
	if len(exporter.Spec.VolumeMounts) > 0 {
		volumeMounts = append(volumeMounts, exporter.Spec.VolumeMounts...)
	}

	var envVars = exporter.Spec.Env
	if exporter.Spec.Env == nil {
		envVars = []corev1.EnvVar{}
	}

	return corev1.Container{
		Name:            ComponentNeuronExporter,
		Image:           image,
		Command:         command,
		Args:            args,
		SecurityContext: exporter.Spec.SecurityContext,
		Resources:       exporter.Spec.Resources,
		Env:             envVars,
		Ports:           ports,
		VolumeMounts:    volumeMounts,
	}
}