github.com/caos/orbos@v1.5.14-0.20221103111702-e6cd0cea7ad4/internal/operator/boom/application/applications/apigateway/helm.go (about)

     1  package apigateway
     2  
     3  import (
     4  	toolsetslatest "github.com/caos/orbos/internal/operator/boom/api/latest"
     5  	"github.com/caos/orbos/internal/operator/boom/application/applications/apigateway/crds"
     6  	"github.com/caos/orbos/internal/operator/boom/application/applications/apigateway/helm"
     7  	grafananet "github.com/caos/orbos/internal/operator/boom/application/applications/monitoring/network"
     8  	argocdnet "github.com/caos/orbos/internal/operator/boom/application/applications/reconciling/network"
     9  	"github.com/caos/orbos/internal/operator/boom/templator/helm/chart"
    10  	"github.com/caos/orbos/internal/utils/helper"
    11  	"github.com/caos/orbos/mntr"
    12  	"github.com/caos/orbos/pkg/secret/read"
    13  )
    14  
    15  func (a *Ambassador) HelmPreApplySteps(monitor mntr.Monitor, toolsetCRDSpec *toolsetslatest.ToolsetSpec) ([]interface{}, error) {
    16  
    17  	ret := make([]interface{}, 0)
    18  	if toolsetCRDSpec.Reconciling != nil && toolsetCRDSpec.Reconciling.Network != nil {
    19  		host := crds.GetHostFromConfig(argocdnet.GetHostConfig(toolsetCRDSpec.Reconciling.Network))
    20  		ret = append(ret, host)
    21  		mapping := crds.GetMappingFromConfig(argocdnet.GetMappingConfig(toolsetCRDSpec.Reconciling.Network))
    22  		ret = append(ret, mapping)
    23  	}
    24  
    25  	if toolsetCRDSpec.Monitoring != nil && toolsetCRDSpec.Monitoring.Network != nil {
    26  		host := crds.GetHostFromConfig(grafananet.GetHostConfig(toolsetCRDSpec.Monitoring.Network))
    27  		ret = append(ret, host)
    28  		mapping := crds.GetMappingFromConfig(grafananet.GetMappingConfig(toolsetCRDSpec.Monitoring.Network))
    29  		ret = append(ret, mapping)
    30  	}
    31  
    32  	return ret, nil
    33  }
    34  
    35  func (a *Ambassador) HelmMutate(monitor mntr.Monitor, toolsetCRDSpec *toolsetslatest.ToolsetSpec, resultFilePath string) error {
    36  
    37  	if err := helper.DeleteFirstResourceFromYaml(resultFilePath, "v1", "Pod", "ambassador-test-ready"); err != nil {
    38  		return err
    39  	}
    40  
    41  	return nil
    42  }
    43  
    44  func (a *Ambassador) SpecToHelmValues(monitor mntr.Monitor, toolsetCRDSpec *toolsetslatest.ToolsetSpec) interface{} {
    45  	imageTags := helm.GetImageTags()
    46  	image := "quay.io/datawire/aes"
    47  
    48  	if toolsetCRDSpec != nil && toolsetCRDSpec.APIGateway != nil {
    49  		helper.OverwriteExistingValues(imageTags, map[string]string{
    50  			image: toolsetCRDSpec.APIGateway.OverwriteVersion,
    51  		})
    52  		helper.OverwriteExistingKey(imageTags, &image, toolsetCRDSpec.APIGateway.OverwriteImage)
    53  	}
    54  
    55  	values := helm.DefaultValues(imageTags, image)
    56  
    57  	spec := toolsetCRDSpec.APIGateway
    58  
    59  	if spec == nil {
    60  		return values
    61  	}
    62  
    63  	if spec.ReplicaCount != 0 {
    64  		values.ReplicaCount = spec.ReplicaCount
    65  	}
    66  
    67  	if spec.Affinity != nil {
    68  		values.Affinity = spec.Affinity
    69  	}
    70  
    71  	if spec.Service != nil {
    72  		values.Service.Type = spec.Service.Type
    73  		values.Service.LoadBalancerIP = spec.Service.LoadBalancerIP
    74  		if spec.Service.Ports != nil {
    75  			ports := make([]*helm.Port, 0)
    76  			for _, v := range spec.Service.Ports {
    77  				ports = append(ports, &helm.Port{
    78  					Name:       v.Name,
    79  					Port:       v.Port,
    80  					TargetPort: v.TargetPort,
    81  					NodePort:   v.NodePort,
    82  				})
    83  			}
    84  			values.Service.Ports = ports
    85  		}
    86  	}
    87  
    88  	if spec.NodeSelector != nil {
    89  		for k, v := range spec.NodeSelector {
    90  			values.NodeSelector[k] = v
    91  			values.Redis.NodeSelector[k] = v
    92  		}
    93  	}
    94  
    95  	if spec.Tolerations != nil {
    96  		for _, tol := range spec.Tolerations {
    97  			values.Tolerations = append(values.Tolerations, tol)
    98  		}
    99  	}
   100  
   101  	values.CreateDevPortalMapping = spec.ActivateDevPortal
   102  
   103  	if spec.Resources != nil {
   104  		values.Resources = spec.Resources
   105  	}
   106  
   107  	// default is false
   108  	values.Service.Annotations.Module.Config.EnableGRPCWeb = spec.GRPCWeb
   109  	// default is true
   110  	if spec.ProxyProtocol != nil {
   111  		values.Service.Annotations.Module.Config.UseProxyProto = *spec.ProxyProtocol
   112  	}
   113  
   114  	if spec.Caching != nil {
   115  		if spec.Caching.Enable {
   116  			values.Redis.Create = true
   117  		}
   118  
   119  		if spec.Caching.Resources != nil {
   120  			values.Redis.Resources = spec.Caching.Resources
   121  		}
   122  	}
   123  
   124  	licenceKey, err := read.GetSecretValueOnlyIncluster(spec.LicenceKey, spec.ExistingLicenceKey)
   125  	if err != nil {
   126  		monitor.Debug("No licence key found")
   127  		return values
   128  	}
   129  	if licenceKey != "" {
   130  		values.LicenseKey.Value = licenceKey
   131  	}
   132  
   133  	return values
   134  }
   135  
   136  func (a *Ambassador) GetChartInfo() *chart.Chart {
   137  	return helm.GetChartInfo()
   138  }
   139  
   140  func (a *Ambassador) GetImageTags() map[string]string {
   141  	return helm.GetImageTags()
   142  }