// RAINBOND, Application Management Platform // Copyright (C) 2014-2017 Goodrain Co., Ltd. // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. For any non-GPL usage of Rainbond, // one or multiple Commercial Licenses authorized by Goodrain Co., Ltd. // must be obtained first. // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with this program. If not, see . package handler import ( apisixversioned "github.com/apache/apisix-ingress-controller/pkg/kube/apisix/client/clientset/versioned" apimodel "github.com/goodrain/rainbond/api/model" dbmodel "github.com/goodrain/rainbond/db/model" "github.com/jinzhu/gorm" "k8s.io/client-go/kubernetes" ) // ComponentIngressTask - type ComponentIngressTask struct { ComponentID string `json:"service_id"` Action string `json:"action"` Port int `json:"port"` IsInner bool `json:"is_inner"` } // GatewayHandler gateway api handler type GatewayHandler interface { BatchGetGatewayHTTPRoute(namespace, appID string) ([]*apimodel.GatewayHTTPRouteConcise, error) AddGatewayCertificate(req *apimodel.GatewayCertificate) error UpdateGatewayCertificate(req *apimodel.GatewayCertificate) error DeleteGatewayCertificate(name, namespace string) error ListGatewayClientCAs(namespace string) ([]*apimodel.GatewayClientCAStatus, error) AddGatewayClientCA(namespace string, req *apimodel.GatewayClientCA) error UpdateGatewayClientCA(namespace string, req *apimodel.GatewayClientCA) error DeleteGatewayClientCA(namespace, name string) error ConfigureGatewayDomainMTLS(namespace string, req *apimodel.GatewayDomainMTLS) error DisableGatewayDomainMTLS(namespace, domain string) error GetGatewayDomainMTLS(namespace string, domains []string) ([]*apimodel.GatewayDomainMTLS, error) AddGatewayHTTPRoute(req *apimodel.GatewayHTTPRouteStruct) (*dbmodel.K8sResource, error) GetGatewayHTTPRoute(name, namespace string) (*apimodel.GatewayHTTPRouteStruct, error) UpdateGatewayHTTPRoute(req *apimodel.GatewayHTTPRouteStruct) (*dbmodel.K8sResource, error) DeleteGatewayHTTPRoute(name, namespace, appID, operator string) error AddHTTPRule(req *apimodel.AddHTTPRuleStruct) error CreateHTTPRule(tx *gorm.DB, req *apimodel.AddHTTPRuleStruct) error UpdateHTTPRule(req *apimodel.UpdateHTTPRuleStruct) error DeleteHTTPRule(req *apimodel.DeleteHTTPRuleStruct) error DeleteHTTPRuleByServiceIDWithTransaction(sid string, tx *gorm.DB) error AddCertificate(req *apimodel.AddHTTPRuleStruct, tx *gorm.DB) error UpdateCertificate(req apimodel.AddHTTPRuleStruct, httpRule *dbmodel.HTTPRule, tx *gorm.DB) error AddTCPRule(req *apimodel.AddTCPRuleStruct) error CreateTCPRule(tx *gorm.DB, req *apimodel.AddTCPRuleStruct) error UpdateTCPRule(req *apimodel.UpdateTCPRuleStruct, minPort int) error DeleteTCPRule(req *apimodel.DeleteTCPRuleStruct) error DeleteTCPRuleByServiceIDWithTransaction(sid string, tx *gorm.DB) error AddRuleExtensions(ruleID string, ruleExtensions []*apimodel.RuleExtensionStruct, tx *gorm.DB) error GetAvailablePort(ip string, lock bool) (int, error) TCPIPPortExists(ip string, port int) bool // Deprecated. SendTaskDeprecated(in map[string]interface{}) error SendTask(task *ComponentIngressTask) error RuleConfig(req *apimodel.RuleConfigReq) error UpdCertificate(req *apimodel.UpdCertificateReq) error GetGatewayIPs() []IPAndAvailablePort ListHTTPRulesByCertID(certID string) ([]*dbmodel.HTTPRule, error) DeleteIngressRulesByComponentPort(tx *gorm.DB, componentID string, port int) error SyncHTTPRules(tx *gorm.DB, components []*apimodel.Component) error SyncTCPRules(tx *gorm.DB, components []*apimodel.Component) error SyncRuleConfigs(tx *gorm.DB, components []*apimodel.Component) error } // APIGatewayHandler api gateway handler type APIGatewayHandler interface { // Don't imitate me for lazy writing GetClient() apisixversioned.Interface GetK8sClient() kubernetes.Interface CreateCert(namespace, domain string) error }