mirror of
https://github.com/kubernetes-sigs/external-dns.git
synced 2025-08-05 17:16:59 +02:00
chore(source): use types instead of strings
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
This commit is contained in:
parent
1b9d7cddc0
commit
a3d902f68f
@ -37,6 +37,8 @@ import (
|
||||
"k8s.io/client-go/tools/clientcmd"
|
||||
gateway "sigs.k8s.io/gateway-api/pkg/client/clientset/versioned"
|
||||
|
||||
"sigs.k8s.io/external-dns/source/types"
|
||||
|
||||
extdnshttp "sigs.k8s.io/external-dns/pkg/http"
|
||||
|
||||
"sigs.k8s.io/external-dns/pkg/apis/externaldns"
|
||||
@ -332,53 +334,53 @@ func ByNames(ctx context.Context, p ClientGenerator, names []string, cfg *Config
|
||||
// because they have simpler initialization requirements.
|
||||
func BuildWithConfig(ctx context.Context, source string, p ClientGenerator, cfg *Config) (Source, error) {
|
||||
switch source {
|
||||
case "node":
|
||||
case types.Node:
|
||||
return buildNodeSource(ctx, p, cfg)
|
||||
case "service":
|
||||
case types.Service:
|
||||
return buildServiceSource(ctx, p, cfg)
|
||||
case "ingress":
|
||||
case types.Ingress:
|
||||
return buildIngressSource(ctx, p, cfg)
|
||||
case "pod":
|
||||
case types.Pod:
|
||||
return buildPodSource(ctx, p, cfg)
|
||||
case "gateway-httproute":
|
||||
case types.GatewayHttpRoute:
|
||||
return NewGatewayHTTPRouteSource(p, cfg)
|
||||
case "gateway-grpcroute":
|
||||
case types.GatewayGrpcRoute:
|
||||
return NewGatewayGRPCRouteSource(p, cfg)
|
||||
case "gateway-tlsroute":
|
||||
case types.GatewayTlsRoute:
|
||||
return NewGatewayTLSRouteSource(p, cfg)
|
||||
case "gateway-tcproute":
|
||||
case types.GatewayTcpRoute:
|
||||
return NewGatewayTCPRouteSource(p, cfg)
|
||||
case "gateway-udproute":
|
||||
case types.GatewayUdpRoute:
|
||||
return NewGatewayUDPRouteSource(p, cfg)
|
||||
case "istio-gateway":
|
||||
case types.IstioGateway:
|
||||
return buildIstioGatewaySource(ctx, p, cfg)
|
||||
case "istio-virtualservice":
|
||||
case types.IstioVirtualService:
|
||||
return buildIstioVirtualServiceSource(ctx, p, cfg)
|
||||
case "cloudfoundry":
|
||||
case types.Cloudfoundry:
|
||||
return buildCloudFoundrySource(ctx, p, cfg)
|
||||
case "ambassador-host":
|
||||
case types.AmbassadorHost:
|
||||
return buildAmbassadorHostSource(ctx, p, cfg)
|
||||
case "contour-httpproxy":
|
||||
case types.ContourHTTPProxy:
|
||||
return buildContourHTTPProxySource(ctx, p, cfg)
|
||||
case "gloo-proxy":
|
||||
case types.GlooProxy:
|
||||
return buildGlooProxySource(ctx, p, cfg)
|
||||
case "traefik-proxy":
|
||||
case types.TraefikProxy:
|
||||
return buildTraefikProxySource(ctx, p, cfg)
|
||||
case "openshift-route":
|
||||
case types.OpenShiftRoute:
|
||||
return buildOpenShiftRouteSource(ctx, p, cfg)
|
||||
case "fake":
|
||||
case types.Fake:
|
||||
return NewFakeSource(cfg.FQDNTemplate)
|
||||
case "connector":
|
||||
case types.Connector:
|
||||
return NewConnectorSource(cfg.ConnectorServer)
|
||||
case "crd":
|
||||
case types.CRD:
|
||||
return buildCRDSource(ctx, p, cfg)
|
||||
case "skipper-routegroup":
|
||||
case types.SkipperRouteGroup:
|
||||
return buildSkipperRouteGroupSource(ctx, cfg)
|
||||
case "kong-tcpingress":
|
||||
case types.KongTCPIngress:
|
||||
return buildKongTCPIngressSource(ctx, p, cfg)
|
||||
case "f5-virtualserver":
|
||||
case types.F5VirtualServer:
|
||||
return buildF5VirtualServerSource(ctx, p, cfg)
|
||||
case "f5-transportserver":
|
||||
case types.F5TransportServer:
|
||||
return buildF5TransportServerSource(ctx, p, cfg)
|
||||
}
|
||||
return nil, ErrSourceNotFound
|
||||
|
@ -21,7 +21,7 @@ import (
|
||||
"errors"
|
||||
"testing"
|
||||
|
||||
cfclient "github.com/cloudfoundry-community/go-cfclient"
|
||||
"github.com/cloudfoundry-community/go-cfclient"
|
||||
openshift "github.com/openshift/client-go/route/clientset/versioned"
|
||||
"github.com/stretchr/testify/mock"
|
||||
"github.com/stretchr/testify/suite"
|
||||
@ -34,6 +34,7 @@ import (
|
||||
fakeDynamic "k8s.io/client-go/dynamic/fake"
|
||||
"k8s.io/client-go/kubernetes"
|
||||
fakeKube "k8s.io/client-go/kubernetes/fake"
|
||||
"sigs.k8s.io/external-dns/source/types"
|
||||
gateway "sigs.k8s.io/gateway-api/pkg/client/clientset/versioned"
|
||||
)
|
||||
|
||||
@ -168,7 +169,10 @@ func (suite *ByNamesTestSuite) TestAllInitialized() {
|
||||
}: "IngressRouteUDPList",
|
||||
}), nil)
|
||||
|
||||
sources, err := ByNames(context.TODO(), mockClientGenerator, []string{"service", "ingress", "istio-gateway", "contour-httpproxy", "kong-tcpingress", "f5-virtualserver", "f5-transportserver", "traefik-proxy", "fake"}, &Config{})
|
||||
sources, err := ByNames(context.TODO(), mockClientGenerator, []string{
|
||||
types.Service, types.Ingress, types.IstioGateway, types.ContourHTTPProxy,
|
||||
types.KongTCPIngress, types.F5VirtualServer, types.F5TransportServer, types.TraefikProxy, types.Fake,
|
||||
}, &Config{})
|
||||
suite.NoError(err, "should not generate errors")
|
||||
suite.Len(sources, 9, "should generate all nine sources")
|
||||
}
|
||||
@ -177,7 +181,7 @@ func (suite *ByNamesTestSuite) TestOnlyFake() {
|
||||
mockClientGenerator := new(MockClientGenerator)
|
||||
mockClientGenerator.On("KubeClient").Return(fakeKube.NewSimpleClientset(), nil)
|
||||
|
||||
sources, err := ByNames(context.TODO(), mockClientGenerator, []string{"fake"}, &Config{})
|
||||
sources, err := ByNames(context.TODO(), mockClientGenerator, []string{types.Fake}, &Config{})
|
||||
suite.NoError(err, "should not generate errors")
|
||||
suite.Len(sources, 1, "should generate fake source")
|
||||
suite.Nil(mockClientGenerator.kubeClient, "client should not be created")
|
||||
@ -197,9 +201,9 @@ func (suite *ByNamesTestSuite) TestKubeClientFails() {
|
||||
mockClientGenerator.On("KubeClient").Return(nil, errors.New("foo"))
|
||||
|
||||
sourcesDependentOnKubeClient := []string{
|
||||
"node", "service", "ingress", "pod", "istio-gateway", "istio-virtualservice",
|
||||
"ambassador-host", "gloo-proxy", "traefik-proxy", "crd", "kong-tcpingress",
|
||||
"f5-virtualserver", "f5-transportserver",
|
||||
types.Node, types.Service, types.Ingress, types.Pod, types.IstioGateway, types.IstioVirtualService,
|
||||
types.AmbassadorHost, types.GlooProxy, types.TraefikProxy, types.CRD, types.KongTCPIngress,
|
||||
types.F5VirtualServer, types.F5TransportServer,
|
||||
}
|
||||
|
||||
for _, source := range sourcesDependentOnKubeClient {
|
||||
@ -214,7 +218,7 @@ func (suite *ByNamesTestSuite) TestIstioClientFails() {
|
||||
mockClientGenerator.On("IstioClient").Return(nil, errors.New("foo"))
|
||||
mockClientGenerator.On("DynamicKubernetesClient").Return(nil, errors.New("foo"))
|
||||
|
||||
sourcesDependentOnIstioClient := []string{"istio-gateway", "istio-virtualservice"}
|
||||
sourcesDependentOnIstioClient := []string{types.IstioGateway, types.IstioVirtualService}
|
||||
|
||||
for _, source := range sourcesDependentOnIstioClient {
|
||||
_, err := ByNames(context.TODO(), mockClientGenerator, []string{source}, &Config{})
|
||||
@ -228,8 +232,10 @@ func (suite *ByNamesTestSuite) TestDynamicKubernetesClientFails() {
|
||||
mockClientGenerator.On("IstioClient").Return(istiofake.NewSimpleClientset(), nil)
|
||||
mockClientGenerator.On("DynamicKubernetesClient").Return(nil, errors.New("foo"))
|
||||
|
||||
sourcesDependentOnDynamicKubernetesClient := []string{"ambassador-host", "contour-httpproxy", "gloo-proxy", "traefik-proxy",
|
||||
"kong-tcpingress", "f5-virtualserver", "f5-transportserver"}
|
||||
sourcesDependentOnDynamicKubernetesClient := []string{
|
||||
types.AmbassadorHost, types.ContourHTTPProxy, types.GlooProxy, types.TraefikProxy,
|
||||
types.KongTCPIngress, types.F5VirtualServer, types.F5TransportServer,
|
||||
}
|
||||
|
||||
for _, source := range sourcesDependentOnDynamicKubernetesClient {
|
||||
_, err := ByNames(context.TODO(), mockClientGenerator, []string{source}, &Config{})
|
||||
|
46
source/types/types.go
Normal file
46
source/types/types.go
Normal file
@ -0,0 +1,46 @@
|
||||
/*
|
||||
Copyright 2025 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package types
|
||||
|
||||
type Type = string
|
||||
|
||||
const (
|
||||
Node Type = "node"
|
||||
Service Type = "service"
|
||||
Ingress Type = "ingress"
|
||||
Pod Type = "pod"
|
||||
GatewayHttpRoute Type = "gateway-httproute"
|
||||
GatewayGrpcRoute Type = "gateway-grpcroute"
|
||||
GatewayTlsRoute Type = "gateway-tlsroute"
|
||||
GatewayTcpRoute Type = "gateway-tcproute"
|
||||
GatewayUdpRoute Type = "gateway-udproute"
|
||||
IstioGateway Type = "istio-gateway"
|
||||
IstioVirtualService Type = "istio-virtualservice"
|
||||
Cloudfoundry Type = "cloudfoundry"
|
||||
AmbassadorHost Type = "ambassador-host"
|
||||
ContourHTTPProxy Type = "contour-httpproxy"
|
||||
GlooProxy Type = "gloo-proxy"
|
||||
TraefikProxy Type = "traefik-proxy"
|
||||
OpenShiftRoute Type = "openshift-route"
|
||||
Fake Type = "fake"
|
||||
Connector Type = "connector"
|
||||
CRD Type = "crd"
|
||||
SkipperRouteGroup Type = "skipper-routegroup"
|
||||
KongTCPIngress Type = "kong-tcpingress"
|
||||
F5VirtualServer Type = "f5-virtualserver"
|
||||
F5TransportServer Type = "f5-transportserver"
|
||||
)
|
Loading…
Reference in New Issue
Block a user