Files
katenary/internal/generator/labels/labelstructs/ingress.go

42 lines
1.3 KiB
Go
Raw Normal View History

package labelstructs
import (
"fmt"
"github.com/katenary/katenary/internal/utils"
"gopkg.in/yaml.v3"
)
type TLS struct {
Enabled bool `yaml:"enabled" json:"enabled,omitempty"`
}
type Ingress struct {
Port *int32 `yaml:"port,omitempty" json:"port,omitempty"`
Annotations map[string]string `yaml:"annotations,omitempty" jsonschema:"nullable" json:"annotations,omitempty"`
Hostname string `yaml:"hostname,omitempty" json:"hostname,omitempty"`
Path *string `yaml:"path,omitempty" json:"path,omitempty"`
Class *string `yaml:"class,omitempty" json:"class,omitempty" jsonschema:"default:-"`
Enabled bool `yaml:"enabled,omitempty" json:"enabled,omitempty"`
TLS *TLS `yaml:"tls,omitempty" json:"tls,omitempty"`
}
// IngressFrom creates a new Ingress from a compose service.
func IngressFrom(data string) (*Ingress, error) {
mapping := Ingress{
Hostname: "",
2024-11-25 11:54:00 +01:00
Path: utils.StrPtr("/"),
Enabled: false,
2024-11-25 11:54:00 +01:00
Class: utils.StrPtr("-"),
Port: nil,
TLS: &TLS{Enabled: true},
}
if err := yaml.Unmarshal([]byte(data), &mapping); err != nil {
return nil, err
}
if mapping.Port == nil {
return nil, fmt.Errorf("port is required in ingress definition")
}
return &mapping, nil
}