fix(volume) File from project root failed
When mounting one file from the root of the project (e.g. ./file.txt), the volume name is empty. In this case, we generate the volume name from the subpath.
This commit is contained in:
@@ -10,6 +10,7 @@ import (
|
|||||||
"katenary.io/internal/generator/labels"
|
"katenary.io/internal/generator/labels"
|
||||||
|
|
||||||
"github.com/compose-spec/compose-go/types"
|
"github.com/compose-spec/compose-go/types"
|
||||||
|
appv1 "k8s.io/api/apps/v1"
|
||||||
v1 "k8s.io/api/core/v1"
|
v1 "k8s.io/api/core/v1"
|
||||||
"sigs.k8s.io/yaml"
|
"sigs.k8s.io/yaml"
|
||||||
)
|
)
|
||||||
@@ -117,9 +118,15 @@ services:
|
|||||||
io.WriteString(fooFp, fooTxt)
|
io.WriteString(fooFp, fooTxt)
|
||||||
fooFp.Close()
|
fooFp.Close()
|
||||||
|
|
||||||
output := internalCompileTest(t, "-s", "templates/web/statics/configmap.yaml")
|
cmOutput := internalCompileTestForce(t, "-s", "templates/web/statics/configmap.yaml")
|
||||||
|
depOutput := internalCompileTestForce(t, "-s", "templates/web/deployment.yaml")
|
||||||
|
|
||||||
configMap := v1.ConfigMap{}
|
configMap := v1.ConfigMap{}
|
||||||
if err := yaml.Unmarshal([]byte(output), &configMap); err != nil {
|
if err := yaml.Unmarshal([]byte(cmOutput), &configMap); err != nil {
|
||||||
|
t.Errorf(unmarshalError, err)
|
||||||
|
}
|
||||||
|
deployment := appv1.Deployment{}
|
||||||
|
if err := yaml.Unmarshal([]byte(depOutput), &deployment); err != nil {
|
||||||
t.Errorf(unmarshalError, err)
|
t.Errorf(unmarshalError, err)
|
||||||
}
|
}
|
||||||
if configMap.Data == nil {
|
if configMap.Data == nil {
|
||||||
@@ -130,4 +137,12 @@ services:
|
|||||||
if !valid.MatchString(configMap.Name) {
|
if !valid.MatchString(configMap.Name) {
|
||||||
t.Errorf("ConfigMap name %s is not valid", configMap.Name)
|
t.Errorf("ConfigMap name %s is not valid", configMap.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// the volume mount should be named "configmap-<configmap name>"
|
||||||
|
if deployment.Spec.Template.Spec.Volumes[0].Name != deployment.Spec.Template.Spec.Containers[0].VolumeMounts[0].Name {
|
||||||
|
t.Errorf("Expected volume name to be %s, got %s",
|
||||||
|
deployment.Spec.Template.Spec.Containers[0].VolumeMounts[0].Name,
|
||||||
|
deployment.Spec.Template.Spec.Volumes[0].Name,
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -278,6 +278,7 @@ func addStaticVolumes(deployments map[string]*Deployment, service types.ServiceC
|
|||||||
if y, err = config.configMap.Yaml(); err != nil {
|
if y, err = config.configMap.Yaml(); err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// add the configmap to the chart
|
// add the configmap to the chart
|
||||||
d.chart.Templates[config.configMap.Filename()] = &ChartTemplate{
|
d.chart.Templates[config.configMap.Filename()] = &ChartTemplate{
|
||||||
Content: y,
|
Content: y,
|
||||||
@@ -285,6 +286,10 @@ func addStaticVolumes(deployments map[string]*Deployment, service types.ServiceC
|
|||||||
}
|
}
|
||||||
// add the moint path to the container
|
// add the moint path to the container
|
||||||
for _, m := range config.mountPath {
|
for _, m := range config.mountPath {
|
||||||
|
// volumeName can be empty, in this case we generate a name
|
||||||
|
if volumeName == "" {
|
||||||
|
volumeName = utils.PathToName(m.subPath)
|
||||||
|
}
|
||||||
container.VolumeMounts = append(container.VolumeMounts, corev1.VolumeMount{
|
container.VolumeMounts = append(container.VolumeMounts, corev1.VolumeMount{
|
||||||
Name: utils.PathToName(volumeName),
|
Name: utils.PathToName(volumeName),
|
||||||
MountPath: m.mountPath,
|
MountPath: m.mountPath,
|
||||||
|
@@ -29,13 +29,22 @@ func teardown(tmpDir string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// internalCompileTestForce is like internalCompileTest but with the force option enabled to rewrite the chart.
|
||||||
|
func internalCompileTestForce(t *testing.T, options ...string) string {
|
||||||
|
return compileTest(t, true, options...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// internalCompileTest is like compileTest but without the force option enabled to rewrite the chart.
|
||||||
func internalCompileTest(t *testing.T, options ...string) string {
|
func internalCompileTest(t *testing.T, options ...string) string {
|
||||||
|
return compileTest(t, false, options...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func compileTest(t *testing.T, force bool, options ...string) string {
|
||||||
_, err := parser.Parse(nil, nil, "compose.yml")
|
_, err := parser.Parse(nil, nil, "compose.yml")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Failed to parse the project: %s", err)
|
t.Fatalf("Failed to parse the project: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
force := false
|
|
||||||
outputDir := "./chart"
|
outputDir := "./chart"
|
||||||
profiles := make([]string, 0)
|
profiles := make([]string, 0)
|
||||||
helmdepUpdate := true
|
helmdepUpdate := true
|
||||||
|
Reference in New Issue
Block a user