func()

in pkg/inject/xray.go [134:179]


func (m *xrayMutator) buildXrayDaemonArgs(pod *corev1.Pod, xrayDaemonContainer *corev1.Container, xrayDaemonConfigMount map[string]string) error {
	// For-loop will loop only once as we expect only a single xrayDaemonConfigMount to be provided.
	// If more than 1 is supplied we error out in `getXrayDaemonConfigMount` func itself.
	for volumeName, mountPath := range xrayDaemonConfigMount {
		volumeMount := corev1.VolumeMount{
			Name:      volumeName,
			MountPath: mountPath,
			ReadOnly:  true,
		}
		xrayDaemonContainer.VolumeMounts = append(xrayDaemonContainer.VolumeMounts, volumeMount)
		// Override the xray daemon's entrypoint command do load config from xray-daemon.yaml
		xrayDaemonContainer.Command = []string{"/xray", "--config", fmt.Sprintf("%v/xray-daemon.yaml", strings.TrimRight(mountPath, " /"))}
		// We return here since file config will override all other cli arguments
		return nil
	}

	// Check for other arguments such as role-arn or log-level.
	//
	// Ignore if empty or `prod`, since xray agent's loglevel by default is set to `prod`
	if m.mutatorConfig.xRayLogLevel != "" && m.mutatorConfig.xRayLogLevel != "prod" {
		switch m.mutatorConfig.xRayLogLevel {
		case "dev":
			fallthrough
		case "debug":
			fallthrough
		case "info":
			fallthrough
		case "warn":
			fallthrough
		case "error":
			xrayDaemonContainer.Args = append(xrayDaemonContainer.Args, "--log-level", m.mutatorConfig.xRayLogLevel)
		default:
			return errors.Errorf("tracing.logLevel: \"%v\" is not valid."+
				" Set one of dev, debug, info, prod, warn, error", m.mutatorConfig.xRayLogLevel)
		}
	}
	if m.mutatorConfig.xRayConfigRoleArn != "" {
		if arn.IsARN(m.mutatorConfig.xRayConfigRoleArn) {
			xrayDaemonContainer.Args = append(xrayDaemonContainer.Args, "--role-arn", m.mutatorConfig.xRayConfigRoleArn)
		} else {
			return errors.Errorf("tracing.role: \"%v\" is not a valid `--role-arn`."+
				" Please refer to AWS X-Ray Documentation for more information", m.mutatorConfig.xRayConfigRoleArn)
		}
	}
	return nil
}