package kubernetes import ( "errors" "net/http" "time" ) type ( K8sIngressController struct { Name string `json:"Name"` ClassName string `json:"ClassName"` Type string `json:"Type"` Availability bool `json:"Availability"` New bool `json:"New"` Used bool `json:"Used"` } K8sIngressControllers []K8sIngressController K8sIngressInfo struct { Name string `json:"Name"` UID string `json:"UID"` Type string `json:"Type"` Namespace string `json:"Namespace"` ClassName string `json:"ClassName"` Annotations map[string]string `json:"Annotations"` Hosts []string `json:"Hosts"` Paths []K8sIngressPath `json:"Paths"` TLS []K8sIngressTLS `json:"TLS"` Labels map[string]string `json:"Labels,omitempty"` CreationDate time.Time `json:"CreationDate"` } K8sIngressTLS struct { Hosts []string `json:"Hosts"` SecretName string `json:"SecretName"` } K8sIngressPath struct { IngressName string `json:"IngressName"` Host string `json:"Host"` ServiceName string `json:"ServiceName"` Port int `json:"Port"` Path string `json:"Path"` PathType string `json:"PathType"` } // K8sIngressDeleteRequests is a mapping of namespace names to a slice of // ingress names. K8sIngressDeleteRequests map[string][]string ) func (r K8sIngressControllers) Validate(request *http.Request) error { return nil } func (r K8sIngressInfo) Validate(request *http.Request) error { if r.Name == "" { return errors.New("missing ingress name from the request payload") } if r.Namespace == "" { return errors.New("missing ingress Namespace from the request payload") } return nil } func (r K8sIngressDeleteRequests) Validate(request *http.Request) error { if len(r) == 0 { return errors.New("missing deletion request list in payload") } for ns := range r { if len(ns) == 0 { return errors.New("deletion given with empty namespace") } } return nil }