fix(schema): Use ingress default values
Ingress has some default values, like path and classname. We need to ensure that values are taken or nil, and to apply them if they are not set explicitally. Port is a sepcial case.
This commit is contained in:
@@ -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},
|
||||||
}
|
}
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user