Skip to content
This repository has been archived by the owner on Aug 19, 2024. It is now read-only.

Commit

Permalink
Notify about dynamic plugin's file name constraints. (#381)
Browse files Browse the repository at this point in the history
* fail recncilation if dynamic-plugins file name is not "dynamic-plugins.yaml"

Signed-off-by: gazarenkov <gazarenkov@gmail.com>

* fail recncilation if dynamic-plugins file name is not "dynamic-plugins.yaml"

Signed-off-by: gazarenkov <gazarenkov@gmail.com>

---------

Signed-off-by: gazarenkov <gazarenkov@gmail.com>
  • Loading branch information
gazarenkov authored Jun 5, 2024
1 parent e1d4a99 commit 0d3ded3
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 4 deletions.
7 changes: 6 additions & 1 deletion pkg/model/dynamic-plugins.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,10 +55,15 @@ func addDynamicPlugins(spec v1alpha1.BackstageSpec, deployment *appsv1.Deploymen
}

if _, ic := DynamicPluginsInitContainer(deployment.Spec.Template.Spec.InitContainers); ic == nil {
return fmt.Errorf("deployment validation failed, dynamic plugin name configured but no InitContainer %s defined", dynamicPluginInitContainerName)
return fmt.Errorf("validation failed, dynamic plugin name configured but no InitContainer %s defined", dynamicPluginInitContainerName)
}

dp := DynamicPlugins{ConfigMap: &model.ExternalConfig.DynamicPlugins}

if dp.ConfigMap.Data == nil || len(dp.ConfigMap.Data) != 1 || dp.ConfigMap.Data[DynamicPluginsFile] == "" {
return fmt.Errorf("dynamic plugin configMap expects exactly one key named '%s' ", DynamicPluginsFile)
}

dp.updatePod(deployment)
return nil

Expand Down
29 changes: 26 additions & 3 deletions pkg/model/dynamic-plugins_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,28 @@ func TestDynamicPluginsValidationFailed(t *testing.T) {

}

// Janus pecific test
func TestDynamicPluginsInvalidKeyName(t *testing.T) {
bs := testDynamicPluginsBackstage.DeepCopy()

bs.Spec.Application.DynamicPluginsConfigMapName = "dplugin"

testObj := createBackstageTest(*bs).withDefaultConfig(true).
addToDefaultConfig("dynamic-plugins.yaml", "raw-dynamic-plugins.yaml").
addToDefaultConfig("deployment.yaml", "janus-deployment.yaml")

testObj.externalConfig.DynamicPlugins = corev1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{Name: "dplugin"},
Data: map[string]string{"WrongKeyName.yml": "tt"},
}

_, err := InitObjects(context.TODO(), *bs, testObj.externalConfig, true, false, testObj.scheme)

assert.Error(t, err)
assert.Contains(t, err.Error(), "expects exactly one key named 'dynamic-plugins.yaml'")

}

// Janus specific test
func TestDefaultDynamicPlugins(t *testing.T) {

bs := testDynamicPluginsBackstage.DeepCopy()
Expand Down Expand Up @@ -92,7 +113,10 @@ func TestDefaultAndSpecifiedDynamicPlugins(t *testing.T) {
addToDefaultConfig("dynamic-plugins.yaml", "raw-dynamic-plugins.yaml").
addToDefaultConfig("deployment.yaml", "janus-deployment.yaml")

testObj.externalConfig.DynamicPlugins = corev1.ConfigMap{ObjectMeta: metav1.ObjectMeta{Name: "dplugin"}}
testObj.externalConfig.DynamicPlugins = corev1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{Name: "dplugin"},
Data: map[string]string{DynamicPluginsFile: "tt"},
}

model, err := InitObjects(context.TODO(), *bs, testObj.externalConfig, true, false, testObj.scheme)

Expand All @@ -106,7 +130,6 @@ func TestDefaultAndSpecifiedDynamicPlugins(t *testing.T) {
//vol-dplugin
assert.Equal(t, 3, len(ic.VolumeMounts))
assert.Equal(t, utils.GenerateVolumeNameFromCmOrSecret("dplugin"), ic.VolumeMounts[2].Name)
//t.Log(">>>>>>>>>>>>>>>>", ic.VolumeMounts)
}

func TestDynamicPluginsFailOnArbitraryDepl(t *testing.T) {
Expand Down

0 comments on commit 0d3ded3

Please sign in to comment.