mirror of
https://github.com/kubernetes-sigs/external-dns.git
synced 2025-08-06 09:36:58 +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"
|
"k8s.io/client-go/tools/clientcmd"
|
||||||
gateway "sigs.k8s.io/gateway-api/pkg/client/clientset/versioned"
|
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"
|
extdnshttp "sigs.k8s.io/external-dns/pkg/http"
|
||||||
|
|
||||||
"sigs.k8s.io/external-dns/pkg/apis/externaldns"
|
"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.
|
// because they have simpler initialization requirements.
|
||||||
func BuildWithConfig(ctx context.Context, source string, p ClientGenerator, cfg *Config) (Source, error) {
|
func BuildWithConfig(ctx context.Context, source string, p ClientGenerator, cfg *Config) (Source, error) {
|
||||||
switch source {
|
switch source {
|
||||||
case "node":
|
case types.Node:
|
||||||
return buildNodeSource(ctx, p, cfg)
|
return buildNodeSource(ctx, p, cfg)
|
||||||
case "service":
|
case types.Service:
|
||||||
return buildServiceSource(ctx, p, cfg)
|
return buildServiceSource(ctx, p, cfg)
|
||||||
case "ingress":
|
case types.Ingress:
|
||||||
return buildIngressSource(ctx, p, cfg)
|
return buildIngressSource(ctx, p, cfg)
|
||||||
case "pod":
|
case types.Pod:
|
||||||
return buildPodSource(ctx, p, cfg)
|
return buildPodSource(ctx, p, cfg)
|
||||||
case "gateway-httproute":
|
case types.GatewayHttpRoute:
|
||||||
return NewGatewayHTTPRouteSource(p, cfg)
|
return NewGatewayHTTPRouteSource(p, cfg)
|
||||||
case "gateway-grpcroute":
|
case types.GatewayGrpcRoute:
|
||||||
return NewGatewayGRPCRouteSource(p, cfg)
|
return NewGatewayGRPCRouteSource(p, cfg)
|
||||||
case "gateway-tlsroute":
|
case types.GatewayTlsRoute:
|
||||||
return NewGatewayTLSRouteSource(p, cfg)
|
return NewGatewayTLSRouteSource(p, cfg)
|
||||||
case "gateway-tcproute":
|
case types.GatewayTcpRoute:
|
||||||
return NewGatewayTCPRouteSource(p, cfg)
|
return NewGatewayTCPRouteSource(p, cfg)
|
||||||
case "gateway-udproute":
|
case types.GatewayUdpRoute:
|
||||||
return NewGatewayUDPRouteSource(p, cfg)
|
return NewGatewayUDPRouteSource(p, cfg)
|
||||||
case "istio-gateway":
|
case types.IstioGateway:
|
||||||
return buildIstioGatewaySource(ctx, p, cfg)
|
return buildIstioGatewaySource(ctx, p, cfg)
|
||||||
case "istio-virtualservice":
|
case types.IstioVirtualService:
|
||||||
return buildIstioVirtualServiceSource(ctx, p, cfg)
|
return buildIstioVirtualServiceSource(ctx, p, cfg)
|
||||||
case "cloudfoundry":
|
case types.Cloudfoundry:
|
||||||
return buildCloudFoundrySource(ctx, p, cfg)
|
return buildCloudFoundrySource(ctx, p, cfg)
|
||||||
case "ambassador-host":
|
case types.AmbassadorHost:
|
||||||
return buildAmbassadorHostSource(ctx, p, cfg)
|
return buildAmbassadorHostSource(ctx, p, cfg)
|
||||||
case "contour-httpproxy":
|
case types.ContourHTTPProxy:
|
||||||
return buildContourHTTPProxySource(ctx, p, cfg)
|
return buildContourHTTPProxySource(ctx, p, cfg)
|
||||||
case "gloo-proxy":
|
case types.GlooProxy:
|
||||||
return buildGlooProxySource(ctx, p, cfg)
|
return buildGlooProxySource(ctx, p, cfg)
|
||||||
case "traefik-proxy":
|
case types.TraefikProxy:
|
||||||
return buildTraefikProxySource(ctx, p, cfg)
|
return buildTraefikProxySource(ctx, p, cfg)
|
||||||
case "openshift-route":
|
case types.OpenShiftRoute:
|
||||||
return buildOpenShiftRouteSource(ctx, p, cfg)
|
return buildOpenShiftRouteSource(ctx, p, cfg)
|
||||||
case "fake":
|
case types.Fake:
|
||||||
return NewFakeSource(cfg.FQDNTemplate)
|
return NewFakeSource(cfg.FQDNTemplate)
|
||||||
case "connector":
|
case types.Connector:
|
||||||
return NewConnectorSource(cfg.ConnectorServer)
|
return NewConnectorSource(cfg.ConnectorServer)
|
||||||
case "crd":
|
case types.CRD:
|
||||||
return buildCRDSource(ctx, p, cfg)
|
return buildCRDSource(ctx, p, cfg)
|
||||||
case "skipper-routegroup":
|
case types.SkipperRouteGroup:
|
||||||
return buildSkipperRouteGroupSource(ctx, cfg)
|
return buildSkipperRouteGroupSource(ctx, cfg)
|
||||||
case "kong-tcpingress":
|
case types.KongTCPIngress:
|
||||||
return buildKongTCPIngressSource(ctx, p, cfg)
|
return buildKongTCPIngressSource(ctx, p, cfg)
|
||||||
case "f5-virtualserver":
|
case types.F5VirtualServer:
|
||||||
return buildF5VirtualServerSource(ctx, p, cfg)
|
return buildF5VirtualServerSource(ctx, p, cfg)
|
||||||
case "f5-transportserver":
|
case types.F5TransportServer:
|
||||||
return buildF5TransportServerSource(ctx, p, cfg)
|
return buildF5TransportServerSource(ctx, p, cfg)
|
||||||
}
|
}
|
||||||
return nil, ErrSourceNotFound
|
return nil, ErrSourceNotFound
|
||||||
|
@ -21,7 +21,7 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
cfclient "github.com/cloudfoundry-community/go-cfclient"
|
"github.com/cloudfoundry-community/go-cfclient"
|
||||||
openshift "github.com/openshift/client-go/route/clientset/versioned"
|
openshift "github.com/openshift/client-go/route/clientset/versioned"
|
||||||
"github.com/stretchr/testify/mock"
|
"github.com/stretchr/testify/mock"
|
||||||
"github.com/stretchr/testify/suite"
|
"github.com/stretchr/testify/suite"
|
||||||
@ -34,6 +34,7 @@ import (
|
|||||||
fakeDynamic "k8s.io/client-go/dynamic/fake"
|
fakeDynamic "k8s.io/client-go/dynamic/fake"
|
||||||
"k8s.io/client-go/kubernetes"
|
"k8s.io/client-go/kubernetes"
|
||||||
fakeKube "k8s.io/client-go/kubernetes/fake"
|
fakeKube "k8s.io/client-go/kubernetes/fake"
|
||||||
|
"sigs.k8s.io/external-dns/source/types"
|
||||||
gateway "sigs.k8s.io/gateway-api/pkg/client/clientset/versioned"
|
gateway "sigs.k8s.io/gateway-api/pkg/client/clientset/versioned"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -168,7 +169,10 @@ func (suite *ByNamesTestSuite) TestAllInitialized() {
|
|||||||
}: "IngressRouteUDPList",
|
}: "IngressRouteUDPList",
|
||||||
}), nil)
|
}), 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.NoError(err, "should not generate errors")
|
||||||
suite.Len(sources, 9, "should generate all nine sources")
|
suite.Len(sources, 9, "should generate all nine sources")
|
||||||
}
|
}
|
||||||
@ -177,7 +181,7 @@ func (suite *ByNamesTestSuite) TestOnlyFake() {
|
|||||||
mockClientGenerator := new(MockClientGenerator)
|
mockClientGenerator := new(MockClientGenerator)
|
||||||
mockClientGenerator.On("KubeClient").Return(fakeKube.NewSimpleClientset(), nil)
|
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.NoError(err, "should not generate errors")
|
||||||
suite.Len(sources, 1, "should generate fake source")
|
suite.Len(sources, 1, "should generate fake source")
|
||||||
suite.Nil(mockClientGenerator.kubeClient, "client should not be created")
|
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"))
|
mockClientGenerator.On("KubeClient").Return(nil, errors.New("foo"))
|
||||||
|
|
||||||
sourcesDependentOnKubeClient := []string{
|
sourcesDependentOnKubeClient := []string{
|
||||||
"node", "service", "ingress", "pod", "istio-gateway", "istio-virtualservice",
|
types.Node, types.Service, types.Ingress, types.Pod, types.IstioGateway, types.IstioVirtualService,
|
||||||
"ambassador-host", "gloo-proxy", "traefik-proxy", "crd", "kong-tcpingress",
|
types.AmbassadorHost, types.GlooProxy, types.TraefikProxy, types.CRD, types.KongTCPIngress,
|
||||||
"f5-virtualserver", "f5-transportserver",
|
types.F5VirtualServer, types.F5TransportServer,
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, source := range sourcesDependentOnKubeClient {
|
for _, source := range sourcesDependentOnKubeClient {
|
||||||
@ -214,7 +218,7 @@ func (suite *ByNamesTestSuite) TestIstioClientFails() {
|
|||||||
mockClientGenerator.On("IstioClient").Return(nil, errors.New("foo"))
|
mockClientGenerator.On("IstioClient").Return(nil, errors.New("foo"))
|
||||||
mockClientGenerator.On("DynamicKubernetesClient").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 {
|
for _, source := range sourcesDependentOnIstioClient {
|
||||||
_, err := ByNames(context.TODO(), mockClientGenerator, []string{source}, &Config{})
|
_, 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("IstioClient").Return(istiofake.NewSimpleClientset(), nil)
|
||||||
mockClientGenerator.On("DynamicKubernetesClient").Return(nil, errors.New("foo"))
|
mockClientGenerator.On("DynamicKubernetesClient").Return(nil, errors.New("foo"))
|
||||||
|
|
||||||
sourcesDependentOnDynamicKubernetesClient := []string{"ambassador-host", "contour-httpproxy", "gloo-proxy", "traefik-proxy",
|
sourcesDependentOnDynamicKubernetesClient := []string{
|
||||||
"kong-tcpingress", "f5-virtualserver", "f5-transportserver"}
|
types.AmbassadorHost, types.ContourHTTPProxy, types.GlooProxy, types.TraefikProxy,
|
||||||
|
types.KongTCPIngress, types.F5VirtualServer, types.F5TransportServer,
|
||||||
|
}
|
||||||
|
|
||||||
for _, source := range sourcesDependentOnDynamicKubernetesClient {
|
for _, source := range sourcesDependentOnDynamicKubernetesClient {
|
||||||
_, err := ByNames(context.TODO(), mockClientGenerator, []string{source}, &Config{})
|
_, 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