From c5a5a71976e930589e558b63522f9b095e11a635 Mon Sep 17 00:00:00 2001 From: Irfan Ur Rehman Date: Thu, 10 Nov 2016 12:30:44 +0530 Subject: [PATCH 1/2] [Federation] Make the dnsProvider configurable in kubefed init --- federation/pkg/kubefed/init/init.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/federation/pkg/kubefed/init/init.go b/federation/pkg/kubefed/init/init.go index 46318d491e..92b4dbf91d 100644 --- a/federation/pkg/kubefed/init/init.go +++ b/federation/pkg/kubefed/init/init.go @@ -118,6 +118,7 @@ func NewCmdInit(cmdOut io.Writer, config util.AdminConfig) *cobra.Command { util.AddSubcommandFlags(cmd) cmd.Flags().String("dns-zone-name", "", "DNS suffix for this federation. Federated Service DNS names are published with this suffix.") cmd.Flags().String("image", defaultImage, "Image to use for federation API server and controller manager binaries.") + cmd.Flags().String("dns-provider", "google-clouddns", "Dns provider to be used for this deployment.") return cmd } @@ -138,6 +139,7 @@ func initFederation(cmdOut io.Writer, config util.AdminConfig, cmd *cobra.Comman } dnsZoneName := cmdutil.GetFlagString(cmd, "dns-zone-name") image := cmdutil.GetFlagString(cmd, "image") + dnsProvider := cmdutil.GetFlagString(cmd, "dns-provider") hostFactory := config.HostFactory(initFlags.Host, initFlags.Kubeconfig) hostClientset, err := hostFactory.ClientSet() @@ -210,7 +212,7 @@ func initFederation(cmdOut io.Writer, config util.AdminConfig, cmd *cobra.Comman } // 7. Create federation controller manager - _, err = createControllerManager(hostClientset, initFlags.FederationSystemNamespace, initFlags.Name, cmName, image, cmKubeconfigName, dnsZoneName) + _, err = createControllerManager(hostClientset, initFlags.FederationSystemNamespace, initFlags.Name, cmName, image, cmKubeconfigName, dnsZoneName, dnsProvider) if err != nil { return err } @@ -479,7 +481,7 @@ func createAPIServer(clientset *client.Clientset, namespace, name, image, creden return clientset.Extensions().Deployments(namespace).Create(dep) } -func createControllerManager(clientset *client.Clientset, namespace, name, cmName, image, kubeconfigName, dnsZoneName string) (*extensions.Deployment, error) { +func createControllerManager(clientset *client.Clientset, namespace, name, cmName, image, kubeconfigName, dnsZoneName, dnsProvider string) (*extensions.Deployment, error) { dep := &extensions.Deployment{ ObjectMeta: api.ObjectMeta{ Name: cmName, @@ -503,7 +505,7 @@ func createControllerManager(clientset *client.Clientset, namespace, name, cmNam "federation-controller-manager", "--master=https://federation-apiserver", "--kubeconfig=/etc/federation/controller-manager/kubeconfig", - "--dns-provider=gce", + fmt.Sprintf("--dns-provider=%s", dnsProvider), "--dns-provider-config=", fmt.Sprintf("--federation-name=%s", name), fmt.Sprintf("--zone-name=%s", dnsZoneName), From a7a56caa6b30bb316d8b407bb9a126e95f098307 Mon Sep 17 00:00:00 2001 From: Irfan Ur Rehman Date: Thu, 10 Nov 2016 12:41:08 +0530 Subject: [PATCH 2/2] [Federation] Unit test update for dns provider configurability --- federation/pkg/kubefed/init/init_test.go | 28 +++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/federation/pkg/kubefed/init/init_test.go b/federation/pkg/kubefed/init/init_test.go index 87d4b31f9c..534e3475d2 100644 --- a/federation/pkg/kubefed/init/init_test.go +++ b/federation/pkg/kubefed/init/init_test.go @@ -58,6 +58,7 @@ const ( func TestInitFederation(t *testing.T) { cmdErrMsg := "" + dnsProvider := "" cmdutil.BehaviorOnFatal(func(str string, code int) { cmdErrMsg = str }) @@ -76,6 +77,7 @@ func TestInitFederation(t *testing.T) { lbIP string image string expectedErr string + dnsProvider string }{ { federation: "union", @@ -85,14 +87,31 @@ func TestInitFederation(t *testing.T) { lbIP: "10.20.30.40", image: "example.test/foo:bar", expectedErr: "", + dnsProvider: "test-dns-provider", + }, + { + federation: "union", + kubeconfigGlobal: fakeKubeFiles[0], + kubeconfigExplicit: "", + dnsZoneName: "example.test.", + lbIP: "10.20.30.40", + image: "example.test/foo:bar", + expectedErr: "", + dnsProvider: "", //test for default value of dns provider }, } for i, tc := range testCases { cmdErrMsg = "" + dnsProvider = "" buf := bytes.NewBuffer([]byte{}) - hostFactory, err := fakeInitHostFactory(tc.federation, util.DefaultFederationSystemNamespace, tc.lbIP, tc.dnsZoneName, tc.image) + if "" != tc.dnsProvider { + dnsProvider = tc.dnsProvider + } else { + dnsProvider = "google-clouddns" //default value of dns-provider + } + hostFactory, err := fakeInitHostFactory(tc.federation, util.DefaultFederationSystemNamespace, tc.lbIP, tc.dnsZoneName, tc.image, dnsProvider) if err != nil { t.Fatalf("[%d] unexpected error: %v", i, err) } @@ -108,6 +127,9 @@ func TestInitFederation(t *testing.T) { cmd.Flags().Set("host-cluster-context", "substrate") cmd.Flags().Set("dns-zone-name", tc.dnsZoneName) cmd.Flags().Set("image", tc.image) + if "" != tc.dnsProvider { + cmd.Flags().Set("dns-provider", tc.dnsProvider) + } cmd.Run(cmd, []string{tc.federation}) if tc.expectedErr == "" { @@ -370,7 +392,7 @@ func TestCertsHTTPS(t *testing.T) { } } -func fakeInitHostFactory(federationName, namespaceName, ip, dnsZoneName, image string) (cmdutil.Factory, error) { +func fakeInitHostFactory(federationName, namespaceName, ip, dnsZoneName, image, dnsProvider string) (cmdutil.Factory, error) { svcName := federationName + "-apiserver" svcUrlPrefix := "/api/v1/namespaces/federation-system/services" credSecretName := svcName + "-credentials" @@ -597,7 +619,7 @@ func fakeInitHostFactory(federationName, namespaceName, ip, dnsZoneName, image s "federation-controller-manager", "--master=https://federation-apiserver", "--kubeconfig=/etc/federation/controller-manager/kubeconfig", - "--dns-provider=gce", + fmt.Sprintf("--dns-provider=%s", dnsProvider), "--dns-provider-config=", fmt.Sprintf("--federation-name=%s", federationName), fmt.Sprintf("--zone-name=%s", dnsZoneName),