Skip to content

Commit

Permalink
Merge pull request #660 from equinor/master
Browse files Browse the repository at this point in the history
release radix-api
  • Loading branch information
nilsgstrabo authored Aug 22, 2024
2 parents 63214b7 + 4482622 commit 39a7e33
Show file tree
Hide file tree
Showing 6 changed files with 47 additions and 28 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
prod ![prod](https://api.radix.equinor.com/api/v1/applications/radix-api//environments/prod/buildstatus)
qa ![qa](https://api.radix.equinor.com/api/v1/applications/radix-api//environments/qa/buildstatus)

**PROD** ![prod](https://api.radix.equinor.com/api/v1/applications/radix-api/environments/prod/buildstatus) **QA** ![qa](https://api.radix.equinor.com/api/v1/applications/radix-api/environments/qa/buildstatus) [![SCM Compliance](https://scm-compliance-api.radix.equinor.com/repos/equinor/radix-api/badge)](https://developer.equinor.com/governance/scm-policy/)
# Radix API

The Radix API is an HTTP server for accessing functionality on the [Radix](https://www.radix.equinor.com) platform. This document is for Radix developers, or anyone interested in poking around.
Expand Down
13 changes: 7 additions & 6 deletions api/alerting/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -138,11 +138,11 @@ func (h *handler) updateRadixAlertFromAlertingConfig(ctx context.Context, radixA
}

if len(config.ReceiverSecrets) > 0 {
configSecret, err := h.getConfigSecret(ctx, radixAlert.Name)
current, err := h.getConfigSecret(ctx, radixAlert.Name)
if err != nil {
return nil, err
}
if err := h.updateConfigSecret(ctx, *configSecret, &config); err != nil {
if err := h.updateConfigSecret(ctx, *current, &config); err != nil {
return nil, err
}
}
Expand All @@ -153,18 +153,19 @@ func (h *handler) updateRadixAlertFromAlertingConfig(ctx context.Context, radixA
}

func (h *handler) updateConfigSecret(ctx context.Context, secret corev1.Secret, config *alertModels.UpdateAlertingConfig) error {
if secret.Data == nil {
secret.Data = make(map[string][]byte)
desired := secret.DeepCopy()
if desired.Data == nil {
desired.Data = make(map[string][]byte)
}

for receiverName, receiverSecret := range config.ReceiverSecrets {
if receiverSecret.SlackConfig != nil {
h.setSlackConfigSecret(*receiverSecret.SlackConfig, receiverName, &secret)
h.setSlackConfigSecret(*receiverSecret.SlackConfig, receiverName, desired)
}
}

kubeUtil, _ := kube.New(h.accounts.UserAccount.Client, h.accounts.UserAccount.RadixClient, h.accounts.UserAccount.KedaClient, h.accounts.UserAccount.SecretProviderClient)
_, err := kubeUtil.ApplySecret(ctx, h.namespace, &secret)
_, err := kubeUtil.UpdateSecret(ctx, &secret, desired)
return err
}

Expand Down
42 changes: 29 additions & 13 deletions api/environmentvariables/env_vars_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,13 @@ import (
"fmt"
"testing"

certclient "github.com/cert-manager/cert-manager/pkg/client/clientset/versioned"
certclientfake "github.com/cert-manager/cert-manager/pkg/client/clientset/versioned/fake"
envvarsmodels "github.com/equinor/radix-api/api/environmentvariables/models"
controllertest "github.com/equinor/radix-api/api/test"
"github.com/equinor/radix-operator/pkg/apis/config"
"github.com/equinor/radix-operator/pkg/apis/deployment"
"github.com/equinor/radix-operator/pkg/apis/kube"
radixv1 "github.com/equinor/radix-operator/pkg/apis/radix/v1"
commontest "github.com/equinor/radix-operator/pkg/apis/test"
builders "github.com/equinor/radix-operator/pkg/apis/utils"
radixclient "github.com/equinor/radix-operator/pkg/client/clientset/versioned"
Expand All @@ -20,6 +22,7 @@ import (
prometheusfake "github.com/prometheus-operator/prometheus-operator/pkg/client/versioned/fake"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
kubefake "k8s.io/client-go/kubernetes/fake"
secretproviderfake "sigs.k8s.io/secrets-store-csi-driver/pkg/client/clientset/versioned/fake"
Expand All @@ -34,7 +37,7 @@ const (
subscriptionId = "12347718-c8f8-4995-bfbb-02655ff1f89c"
)

func setupTestWithMockHandler(t *testing.T, mockCtrl *gomock.Controller) (*commontest.Utils, *controllertest.Utils, kubernetes.Interface, radixclient.Interface, prometheusclient.Interface, *MockEnvVarsHandler) {
func setupTestWithMockHandler(t *testing.T, mockCtrl *gomock.Controller) (*commontest.Utils, *controllertest.Utils, kubernetes.Interface, radixclient.Interface, prometheusclient.Interface, certclient.Interface, *MockEnvVarsHandler) {
kubeclient, radixclient, kedaClient, prometheusclient, commonTestUtils, _, secretproviderclient, certClient := setupTest(t)

handler := NewMockEnvVarsHandler(mockCtrl)
Expand All @@ -44,7 +47,7 @@ func setupTestWithMockHandler(t *testing.T, mockCtrl *gomock.Controller) (*commo
// controllerTestUtils is used for issuing HTTP request and processing responses
controllerTestUtils := controllertest.NewTestUtils(kubeclient, radixclient, kedaClient, secretproviderclient, certClient, controller)

return &commonTestUtils, &controllerTestUtils, kubeclient, radixclient, prometheusclient, handler
return &commonTestUtils, &controllerTestUtils, kubeclient, radixclient, prometheusclient, certClient, handler
}

func setupTest(t *testing.T) (*kubefake.Clientset, *radixfake.Clientset, *kedafake.Clientset, *prometheusfake.Clientset, commontest.Utils, *kube.Kube, *secretproviderfake.Clientset, *certclientfake.Clientset) {
Expand All @@ -70,8 +73,9 @@ func Test_GetComponentEnvVars(t *testing.T) {
url := fmt.Sprintf("/api/v1/applications/%s/environments/%s/components/%s/envvars", appName, environmentName, componentName)

t.Run("Return env-vars", func(t *testing.T) {
commonTestUtils, controllerTestUtils, _, _, _, handler := setupTestWithMockHandler(t, mockCtrl)
_, err := setupDeployment(commonTestUtils, appName, environmentName, componentName, nil)
commonTestUtils, controllerTestUtils, kubeClient, radixClient, promClient, certClient, handler := setupTestWithMockHandler(t, mockCtrl)

err := setupDeployment(commonTestUtils, kubeClient, radixClient, promClient, certClient, appName, environmentName, componentName, nil)
require.NoError(t, err)
handler.EXPECT().GetComponentEnvVars(gomock.Any(), appName, environmentName, componentName).
Return([]envvarsmodels.EnvVar{
Expand Down Expand Up @@ -113,8 +117,8 @@ func Test_GetComponentEnvVars(t *testing.T) {
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()

commonTestUtils, controllerTestUtils, _, _, _, handler := setupTestWithMockHandler(t, mockCtrl)
_, err := setupDeployment(commonTestUtils, appName, environmentName, componentName, nil)
commonTestUtils, controllerTestUtils, kubeClient, radixClient, promClient, certClient, handler := setupTestWithMockHandler(t, mockCtrl)
err := setupDeployment(commonTestUtils, kubeClient, radixClient, promClient, certClient, appName, environmentName, componentName, nil)
require.NoError(t, err)
handler.EXPECT().GetComponentEnvVars(gomock.Any(), appName, environmentName, componentName).
Return(nil, fmt.Errorf("some-err"))
Expand Down Expand Up @@ -154,8 +158,8 @@ func Test_ChangeEnvVar(t *testing.T) {
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()

commonTestUtils, controllerTestUtils, _, _, _, handler := setupTestWithMockHandler(t, mockCtrl)
_, err := setupDeployment(commonTestUtils, appName, environmentName, componentName, nil)
commonTestUtils, controllerTestUtils, kubeClient, radixClient, promClient, certClient, handler := setupTestWithMockHandler(t, mockCtrl)
err := setupDeployment(commonTestUtils, kubeClient, radixClient, promClient, certClient, appName, environmentName, componentName, nil)
require.NoError(t, err)

handler.EXPECT().ChangeEnvVar(gomock.Any(), appName, environmentName, componentName, envVarsParams).
Expand All @@ -172,8 +176,8 @@ func Test_ChangeEnvVar(t *testing.T) {
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()

commonTestUtils, controllerTestUtils, _, _, _, handler := setupTestWithMockHandler(t, mockCtrl)
_, err := setupDeployment(commonTestUtils, appName, environmentName, componentName, nil)
commonTestUtils, controllerTestUtils, kubeClient, radixClient, promClient, certClient, handler := setupTestWithMockHandler(t, mockCtrl)
err := setupDeployment(commonTestUtils, kubeClient, radixClient, promClient, certClient, appName, environmentName, componentName, nil)
require.NoError(t, err)

handler.EXPECT().ChangeEnvVar(gomock.Any(), appName, environmentName, componentName, envVarsParams).
Expand All @@ -189,12 +193,12 @@ func Test_ChangeEnvVar(t *testing.T) {
})
}

func setupDeployment(commonTestUtils *commontest.Utils, appName, environmentName, componentName string, modifyComponentBuilder func(builders.DeployComponentBuilder)) (*radixv1.RadixDeployment, error) {
func setupDeployment(commonTestUtils *commontest.Utils, kubeClient kubernetes.Interface, radixClient radixclient.Interface, promClient prometheusclient.Interface, certClient certclient.Interface, appName, environmentName, componentName string, modifyComponentBuilder func(builders.DeployComponentBuilder)) error {
componentBuilder := builders.NewDeployComponentBuilder().WithName(componentName)
if modifyComponentBuilder != nil {
modifyComponentBuilder(componentBuilder)
}
return commonTestUtils.ApplyDeployment(
rd, err := commonTestUtils.ApplyDeployment(
context.Background(),
builders.
ARadixDeployment().
Expand All @@ -203,4 +207,16 @@ func setupDeployment(commonTestUtils *commontest.Utils, appName, environmentName
WithEnvironment(environmentName).
WithComponent(componentBuilder).
WithImageTag("1234"))
if err != nil {
return err
}

radixRegistration, err := radixClient.RadixV1().RadixRegistrations().Get(context.Background(), rd.Spec.AppName, metav1.GetOptions{})
if err != nil {
return err
}

deploymentSyncer := deployment.NewDeploymentSyncer(kubeClient, commonTestUtils.GetKubeUtil(), radixClient, promClient, certClient, radixRegistration, rd, nil, nil, &config.Config{})

return deploymentSyncer.OnSync(context.Background())
}
12 changes: 6 additions & 6 deletions api/environmentvariables/env_vars_handler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@ func Test_GetEnvVars(t *testing.T) {
namespace := operatorutils.GetEnvironmentNamespace(appName, environmentName)
t.Run("Get existing env vars", func(t *testing.T) {
t.Parallel()
_, _, _, _, commonTestUtils, kubeUtil, _, _ := setupTest(t)
kubeClient, radixClient, _, promClient, commonTestUtils, kubeUtil, _, certClient := setupTest(t)

envVarsMap := map[string]string{
"VAR1": "val1",
"VAR2": "val2",
}
_, err := setupDeployment(&commonTestUtils, appName, environmentName, componentName, func(builder operatorutils.DeployComponentBuilder) {
err := setupDeployment(&commonTestUtils, kubeClient, radixClient, promClient, certClient, appName, environmentName, componentName, func(builder operatorutils.DeployComponentBuilder) {
builder.WithEnvironmentVariables(envVarsMap).
WithSecrets([]string{"SECRET1", "SECRET2"})
})
Expand Down Expand Up @@ -55,14 +55,14 @@ func Test_ChangeGetEnvVars(t *testing.T) {
namespace := operatorutils.GetEnvironmentNamespace(appName, environmentName)
t.Run("Change existing env var", func(t *testing.T) {
t.Parallel()
_, _, _, _, commonTestUtils, kubeUtil, _, _ := setupTest(t)
kubeClient, radixClient, _, promClient, commonTestUtils, kubeUtil, _, certClient := setupTest(t)

envVarsMap := map[string]string{
"VAR1": "val1",
"VAR2": "val2",
"VAR3": "val3",
}
_, err := setupDeployment(&commonTestUtils, appName, environmentName, componentName, func(builder operatorutils.DeployComponentBuilder) {
err := setupDeployment(&commonTestUtils, kubeClient, radixClient, promClient, certClient, appName, environmentName, componentName, func(builder operatorutils.DeployComponentBuilder) {
builder.WithEnvironmentVariables(envVarsMap)
})
require.NoError(t, err)
Expand Down Expand Up @@ -105,13 +105,13 @@ func Test_ChangeGetEnvVars(t *testing.T) {
})
t.Run("Skipped changing not-existing env vars", func(t *testing.T) {
t.Parallel()
_, _, _, _, commonTestUtils, kubeUtil, _, _ := setupTest(t)
kubeClient, radixClient, _, promClient, commonTestUtils, kubeUtil, _, certClient := setupTest(t)

envVarsMap := map[string]string{
"VAR1": "val1",
"VAR2": "val2",
}
_, err := setupDeployment(&commonTestUtils, appName, environmentName, componentName, func(builder operatorutils.DeployComponentBuilder) {
err := setupDeployment(&commonTestUtils, kubeClient, radixClient, promClient, certClient, appName, environmentName, componentName, func(builder operatorutils.DeployComponentBuilder) {
builder.WithEnvironmentVariables(envVarsMap)
})
require.NoError(t, err)
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ require (
github.com/cert-manager/cert-manager v1.15.0
github.com/equinor/radix-common v1.9.3
github.com/equinor/radix-job-scheduler v1.10.2
github.com/equinor/radix-operator v1.57.8
github.com/equinor/radix-operator v1.57.16
github.com/evanphx/json-patch/v5 v5.9.0
github.com/felixge/httpsnoop v1.0.4
github.com/golang-jwt/jwt/v5 v5.2.1
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,8 @@ github.com/equinor/radix-job-scheduler v1.10.2 h1:Ea/gmSQjVdomC3XzkqJdR1TGQ9Bvq8
github.com/equinor/radix-job-scheduler v1.10.2/go.mod h1:cnVXZ09D0rAPTZrcgWynL/txMQnpYmPSPyzfKfTYlec=
github.com/equinor/radix-operator v1.57.8 h1:fvXky2aZmKcre2X54R9hL5sl9gK19RGfFY9Q2Gn3IQg=
github.com/equinor/radix-operator v1.57.8/go.mod h1:zCdAiP/wxyvlUO4qGoJuLW3O+ZSt9kTyHMnjmsR3fCU=
github.com/equinor/radix-operator v1.57.16 h1:kDuPbKrb/r3Iu6BtCoq50IETspvynl55X+RGug9CSqw=
github.com/equinor/radix-operator v1.57.16/go.mod h1:zCdAiP/wxyvlUO4qGoJuLW3O+ZSt9kTyHMnjmsR3fCU=
github.com/evanphx/json-patch v5.9.0+incompatible h1:fBXyNpNMuTTDdquAq/uisOr2lShz4oaXpDTX2bLe7ls=
github.com/evanphx/json-patch v5.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
github.com/evanphx/json-patch/v5 v5.9.0 h1:kcBlZQbplgElYIlo/n1hJbls2z/1awpXxpRi0/FOJfg=
Expand Down

0 comments on commit 39a7e33

Please sign in to comment.