Skip to content

Commit

Permalink
Merge pull request #1037 from equinor/master
Browse files Browse the repository at this point in the history
Release radix-operator
  • Loading branch information
satr authored Jan 11, 2024
2 parents f2f5ec5 + e37c8e3 commit c0c47be
Show file tree
Hide file tree
Showing 6 changed files with 93 additions and 13 deletions.
4 changes: 2 additions & 2 deletions charts/radix-operator/Chart.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
apiVersion: v2
name: radix-operator
version: 1.28.2
appVersion: 1.48.2
version: 1.28.4
appVersion: 1.48.4
kubeVersion: ">=1.24.0"
description: Radix Operator
keywords:
Expand Down
2 changes: 1 addition & 1 deletion charts/radix-operator/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ app:
# Limit range on builder job in app namespace
resources:
limits:
memory: 2000M
memory: 500M
requests:
memory: 500M
cpu: 200m
Expand Down
40 changes: 30 additions & 10 deletions pipeline-runner/steps/apply_radixconfig.go
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ func (cli *ApplyConfigStepImplementation) setBuildAndDeployImages(pipelineInfo *
return nil
}

func (cli ApplyConfigStepImplementation) validatePipelineInfo(pipelineInfo *model.PipelineInfo) error {
func (cli *ApplyConfigStepImplementation) validatePipelineInfo(pipelineInfo *model.PipelineInfo) error {
if pipelineInfo.IsPipelineType(radixv1.Deploy) && len(pipelineInfo.BuildComponentImages) > 0 {
return ErrDeployOnlyPipelineDoesNotSupportBuild
}
Expand Down Expand Up @@ -418,10 +418,10 @@ func mustBuildComponentForEnvironment(environmentName string, prepareBuildContex
}

func getDockerfile(sourceFolder, dockerfileName string) string {
context := getContext(sourceFolder)
ctx := getContext(sourceFolder)
dockerfileName = getDockerfileName(dockerfileName)

return fmt.Sprintf("%s%s", context, dockerfileName)
return fmt.Sprintf("%s%s", ctx, dockerfileName)
}

func getDockerfileName(name string) string {
Expand Down Expand Up @@ -527,24 +527,44 @@ func CreateRadixApplication(radixClient radixclient.Interface, dnsConfig *dnsali
if err := yaml.Unmarshal([]byte(configFileContent), ra); err != nil {
return nil, err
}
correctRadixApplication(ra)

// Validate RA
if validate.RAContainsOldPublic(ra) {
log.Warnf("component.public is deprecated, please use component.publicPort instead")
}
if err := validate.CanRadixApplicationBeInserted(radixClient, ra, dnsConfig); err != nil {
log.Errorf("Radix config not valid.")
return nil, err
}
return ra, nil
}

isAppNameLowercase, err := validate.IsApplicationNameLowercase(ra.Name)
if !isAppNameLowercase {
func correctRadixApplication(ra *radixv1.RadixApplication) {
if isAppNameLowercase, err := validate.IsApplicationNameLowercase(ra.Name); !isAppNameLowercase {
log.Warnf("%s Converting name to lowercase", err.Error())
ra.Name = strings.ToLower(ra.Name)
}
for i := 0; i < len(ra.Spec.Components); i++ {
ra.Spec.Components[i].Resources = buildResource(&ra.Spec.Components[i])
}
for i := 0; i < len(ra.Spec.Jobs); i++ {
ra.Spec.Jobs[i].Resources = buildResource(&ra.Spec.Jobs[i])
}
}

err = validate.CanRadixApplicationBeInserted(radixClient, ra, dnsConfig)
if err != nil {
log.Errorf("Radix config not valid.")
return nil, err
func buildResource(component radixv1.RadixCommonComponent) radixv1.ResourceRequirements {
memoryReqName := corev1.ResourceMemory.String()
resources := component.GetResources()
delete(resources.Limits, memoryReqName)

if requestsMemory, ok := resources.Requests[memoryReqName]; ok {
if resources.Limits == nil {
resources.Limits = radixv1.ResourceList{}
}
resources.Limits[memoryReqName] = requestsMemory
}
return ra, nil
return resources
}

func getValueFromConfigMap(key string, configMap *corev1.ConfigMap) (string, error) {
Expand Down
20 changes: 20 additions & 0 deletions pipeline-runner/steps/apply_radixconfig_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,14 @@ package steps_test

import (
"context"
"os"
"testing"

"github.com/equinor/radix-common/utils/pointers"
internaltest "github.com/equinor/radix-operator/pipeline-runner/internal/test"
"github.com/equinor/radix-operator/pipeline-runner/model"
"github.com/equinor/radix-operator/pipeline-runner/steps"
"github.com/equinor/radix-operator/pkg/apis/config/dnsalias"
"github.com/equinor/radix-operator/pkg/apis/kube"
radixv1 "github.com/equinor/radix-operator/pkg/apis/radix/v1"
"github.com/equinor/radix-operator/pkg/apis/utils"
Expand All @@ -18,6 +20,10 @@ import (
kubefake "k8s.io/client-go/kubernetes/fake"
)

const (
sampleApp = "./testdata/radixconfig.yaml"
)

func Test_RunApplyConfigTestSuite(t *testing.T) {
suite.Run(t, new(applyConfigTestSuite))
}
Expand Down Expand Up @@ -266,3 +272,17 @@ func (s *applyConfigTestSuite) Test_DeployComponentWitImageTagNameInPipelineArgS
applyStep.Init(s.kubeClient, s.radixClient, s.kubeUtil, s.promClient, rr)
s.NoError(applyStep.Run(&pipeline))
}

func (s *applyConfigTestSuite) Test_CreateRadixApplication_LimitMemoryIsTakenFromRequestsMemory() {
rr := utils.NewRegistrationBuilder().WithName("testapp").BuildRR()
_, err := s.radixClient.RadixV1().RadixRegistrations().Create(context.Background(), rr, metav1.CreateOptions{})
s.Require().NoError(err)
configFileContent, err := os.ReadFile(sampleApp)
s.Require().NoError(err)
ra, err := steps.CreateRadixApplication(s.radixClient, &dnsalias.DNSConfig{}, string(configFileContent))
s.Require().NoError(err)
s.Equal("100Mi", ra.Spec.Components[0].Resources.Limits["memory"], "server1 invalid resource limits memory")
s.Equal("100Mi", ra.Spec.Components[1].Resources.Limits["memory"], "server2 invalid resource limits memory")
s.Empty(ra.Spec.Components[2].Resources.Limits["memory"], "server3 not expected resource limits memory")
s.Empty(ra.Spec.Components[3].Resources.Limits["memory"], "server4 not expected resource limits memory")
}
39 changes: 39 additions & 0 deletions pipeline-runner/steps/testdata/radixconfig.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
apiVersion: radix.equinor.com/v1
kind: RadixApplication
metadata:
name: testapp
spec:
environments:
- name: dev
build:
from: main
components:
- name: server1
src: server
resources:
requests:
memory: 100Mi
cpu: 100m
- name: server2
src: server
resources:
requests:
memory: 100Mi
cpu: 100m
limits:
memory: 200Mi
cpu: 200m
- name: server3
src: server
resources:
requests:
cpu: 100m
limits:
memory: 200Mi
cpu: 200m
- name: server4
src: server
resources:
limits:
memory: 200Mi
cpu: 200m
1 change: 1 addition & 0 deletions pkg/apis/batch/kubejob.go
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,7 @@ func (s *syncer) buildJob(batchJob *radixv1.RadixBatchJob, jobComponent *radixv1
AutomountServiceAccountToken: serviceAccountSpec.AutomountServiceAccountToken(),
},
},
TTLSecondsAfterFinished: pointers.Ptr(int32(86400)), // delete completed job after 24 hours
},
}

Expand Down

0 comments on commit c0c47be

Please sign in to comment.