mirror of https://github.com/portainer/portainer
65 lines
1.9 KiB
Go
65 lines
1.9 KiB
Go
|
package kubernetes
|
||
|
|
||
|
import (
|
||
|
"errors"
|
||
|
"net/http"
|
||
|
)
|
||
|
|
||
|
type (
|
||
|
K8sServiceInfo struct {
|
||
|
Name string `json:"Name"`
|
||
|
UID string `json:"UID"`
|
||
|
Type string `json:"Type"`
|
||
|
Namespace string `json:"Namespace"`
|
||
|
Annotations map[string]string `json:"Annotations"`
|
||
|
CreationTimestamp string `json:"CreationTimestamp"`
|
||
|
Labels map[string]string `json:"Labels"`
|
||
|
AllocateLoadBalancerNodePorts *bool `json:"AllocateLoadBalancerNodePorts,omitempty"`
|
||
|
Ports []K8sServicePort `json:"Ports"`
|
||
|
Selector map[string]string `json:"Selector"`
|
||
|
IngressStatus []K8sServiceIngress `json:"IngressStatus"`
|
||
|
}
|
||
|
|
||
|
K8sServicePort struct {
|
||
|
Name string `json:"Name"`
|
||
|
NodePort int `json:"NodePort"`
|
||
|
Port int `json:"Port"`
|
||
|
Protocol string `json:"Protocol"`
|
||
|
TargetPort int `json:"TargetPort"`
|
||
|
}
|
||
|
|
||
|
K8sServiceIngress struct {
|
||
|
IP string `json:"IP"`
|
||
|
Host string `json:"Host"`
|
||
|
}
|
||
|
|
||
|
// K8sServiceDeleteRequests is a mapping of namespace names to a slice of
|
||
|
// service names.
|
||
|
K8sServiceDeleteRequests map[string][]string
|
||
|
)
|
||
|
|
||
|
func (s *K8sServiceInfo) Validate(request *http.Request) error {
|
||
|
if s.Name == "" {
|
||
|
return errors.New("missing service name from the request payload")
|
||
|
}
|
||
|
if s.Namespace == "" {
|
||
|
return errors.New("missing service namespace from the request payload")
|
||
|
}
|
||
|
if s.Ports == nil {
|
||
|
return errors.New("missing service ports from the request payload")
|
||
|
}
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func (r K8sServiceDeleteRequests) 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
|
||
|
}
|