Skip to content
parameter_helper.go 2.12 KiB
Newer Older
Timothee Gosselin's avatar
Timothee Gosselin committed
/*

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

package settings
Timothee Gosselin's avatar
Timothee Gosselin committed

import (
Timothee Gosselin's avatar
Timothee Gosselin committed
	corev1 "k8s.io/api/core/v1"
)

func (p *Parameter) GetEnvVar() (envVar corev1.EnvVar, err error) {

	switch p.MountType {
	case MountLiteral:
		if len(p.Value) > 0 && len(p.Key) > 0 {
			envVar := corev1.EnvVar{
				Name:  p.Key,
				Value: p.Value,
			}
			return envVar, nil
Timothee Gosselin's avatar
Timothee Gosselin committed
		}
		return envVar, errors.New("missing key and/or value argument")
Timothee Gosselin's avatar
Timothee Gosselin committed

Timothee Gosselin's avatar
Timothee Gosselin committed
		if len(p.FromKey) > 0 && len(p.Ref) > 0 && len(p.Key) > 0 {
Timothee Gosselin's avatar
Timothee Gosselin committed
			switch p.Type {
			case SecretParameter:
				envVar = corev1.EnvVar{
					Name: p.Key,
					ValueFrom: &corev1.EnvVarSource{
						SecretKeyRef: &corev1.SecretKeySelector{
							LocalObjectReference: corev1.LocalObjectReference{
Timothee Gosselin's avatar
Timothee Gosselin committed
								Name: p.Ref,
							},
							Key: p.FromKey,
						},
					},
				}
				return envVar, nil
Timothee Gosselin's avatar
Timothee Gosselin committed
			case ConfigParameter:
				envVar = corev1.EnvVar{
					Name: p.Key,
					ValueFrom: &corev1.EnvVarSource{
						ConfigMapKeyRef: &corev1.ConfigMapKeySelector{
							LocalObjectReference: corev1.LocalObjectReference{
Timothee Gosselin's avatar
Timothee Gosselin committed
								Name: p.Ref,
Timothee Gosselin's avatar
Timothee Gosselin committed
							},
							Key: p.FromKey,
Timothee Gosselin's avatar
Timothee Gosselin committed
						},
					},
Timothee Gosselin's avatar
Timothee Gosselin committed
				}
				return envVar, nil
			case ObjectFieldParameter:
				envVar = corev1.EnvVar{
					Name: p.Key,
					ValueFrom: &corev1.EnvVarSource{
						FieldRef: &corev1.ObjectFieldSelector{
Timothee Gosselin's avatar
Timothee Gosselin committed
							APIVersion: p.Ref,
Timothee Gosselin's avatar
Timothee Gosselin committed
							FieldPath:  p.FromKey,
						},
					},
				}
				return envVar, nil
Timothee Gosselin's avatar
Timothee Gosselin committed
			}
		}
Timothee Gosselin's avatar
Timothee Gosselin committed
		return envVar, errors.New("missing arguments")
	default:
		return envVar, errors.New("wrong MountType")
Timothee Gosselin's avatar
Timothee Gosselin committed
	}
}

func (p *Parameter) GetPodVolume() *corev1.Volume {
	return nil
}

func (p *Parameter) GetVolumeMount() *corev1.VolumeMount {
	return nil
}