Some fixes on "same-pod" and volumes + add some tests #82

Merged
metal3d merged 20 commits from develop into master 2024-11-25 22:17:56 +00:00
3 changed files with 31 additions and 8 deletions
Showing only changes of commit 7b890df1c5 - Show all commits

View File

@@ -51,9 +51,9 @@ func NewIngress(service types.ServiceConfig, Chart *HelmChart) *Ingress {
Chart.Values[service.Name].(*Value).Ingress = &IngressValue{ Chart.Values[service.Name].(*Value).Ingress = &IngressValue{
Enabled: mapping.Enabled, Enabled: mapping.Enabled,
Path: mapping.Path, Path: *mapping.Path,
Host: mapping.Hostname, Host: mapping.Hostname,
Class: mapping.Class, Class: *mapping.Class,
Annotations: mapping.Annotations, Annotations: mapping.Annotations,
TLS: TLS{Enabled: mapping.TLS.Enabled}, TLS: TLS{Enabled: mapping.TLS.Enabled},
} }

View File

@@ -107,6 +107,19 @@ func getLabelContent(o any, service *types.ServiceConfig, labelName string) erro
return err return err
} }
val := strings.TrimSpace(string(c)) val := strings.TrimSpace(string(c))
if labelName == labels.LabelIngress {
// special case, values must be set from some defaults
ing, err := labelStructs.IngressFrom(val)
if err != nil {
log.Fatal(err)
return err
}
c, err := yaml.Marshal(ing)
if err != nil {
return err
}
val = strings.TrimSpace(string(c))
}
service.Labels[labelName] = val service.Labels[labelName] = val
return nil return nil

View File

@@ -1,33 +1,43 @@
package labelStructs package labelStructs
import "gopkg.in/yaml.v3" import (
"fmt"
"gopkg.in/yaml.v3"
)
type TLS struct { type TLS struct {
Enabled bool `yaml:"enabled" json:"enabled,omitempty"` Enabled bool `yaml:"enabled" json:"enabled,omitempty"`
} }
type Ingress struct { type Ingress struct {
Port *int32 `yaml:"port,omitempty" jsonschema:"nullable" json:"port,omitempty"` Port *int32 `yaml:"port,omitempty" json:"port,omitempty"`
Annotations map[string]string `yaml:"annotations,omitempty" jsonschema:"nullable" json:"annotations,omitempty"` Annotations map[string]string `yaml:"annotations,omitempty" jsonschema:"nullable" json:"annotations,omitempty"`
Hostname string `yaml:"hostname" json:"hostname,omitempty"` Hostname string `yaml:"hostname" json:"hostname,omitempty"`
Path string `yaml:"path" json:"path,omitempty"` Path *string `yaml:"path,omitempty" json:"path,omitempty"`
Class string `yaml:"class" json:"class,omitempty" jsonschema:"default:-"` Class *string `yaml:"class,omitempty" json:"class,omitempty" jsonschema:"default:-"`
Enabled bool `yaml:"enabled" json:"enabled,omitempty"` Enabled bool `yaml:"enabled" json:"enabled,omitempty"`
TLS *TLS `yaml:"tls,omitempty" json:"tls,omitempty"` TLS *TLS `yaml:"tls,omitempty" json:"tls,omitempty"`
} }
// IngressFrom creates a new Ingress from a compose service. // IngressFrom creates a new Ingress from a compose service.
func IngressFrom(data string) (*Ingress, error) { func IngressFrom(data string) (*Ingress, error) {
strPtr := func(s string) *string {
return &s
}
mapping := Ingress{ mapping := Ingress{
Hostname: "", Hostname: "",
Path: "/", Path: strPtr("/"),
Enabled: false, Enabled: false,
Class: "-", Class: strPtr("-"),
Port: nil, Port: nil,
TLS: &TLS{Enabled: true}, TLS: &TLS{Enabled: true},
} }
if err := yaml.Unmarshal([]byte(data), &mapping); err != nil { if err := yaml.Unmarshal([]byte(data), &mapping); err != nil {
return nil, err return nil, err
} }
if mapping.Port == nil {
return nil, fmt.Errorf("port is required in ingress definition")
}
return &mapping, nil return &mapping, nil
} }