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

Timothee Gosselin's avatar
Timothee Gosselin committed
Licensed under the GNU AFFERO GENERAL PUBLIC LICENSE Version 3 (the "License");
Timothee Gosselin's avatar
Timothee Gosselin committed
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

Timothee Gosselin's avatar
Timothee Gosselin committed
    https://www.gnu.org/licenses/agpl-3.0.html
Timothee Gosselin's avatar
Timothee Gosselin committed

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.
*/

Timothee Gosselin's avatar
Timothee Gosselin committed
package parameters
Timothee Gosselin's avatar
Timothee Gosselin committed

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

Timothee Gosselin's avatar
Timothee Gosselin committed
// GetEnvVar gets an environment variables to set in the container.
Timothee Gosselin's avatar
Timothee Gosselin committed
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

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
Timothee Gosselin's avatar
Timothee Gosselin committed

Timothee Gosselin's avatar
Timothee Gosselin committed
			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")
Timothee Gosselin's avatar
Timothee Gosselin committed

	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
}