[Federation] Unit test updates for override flags options in kubefed init

This commit is contained in:
Irfan Ur Rehman 2017-02-03 23:43:23 +05:30
parent 98fb5c0e22
commit 0ad1934d5a

View File

@ -27,6 +27,7 @@ import (
"net/http/httptest" "net/http/httptest"
"net/url" "net/url"
"strconv" "strconv"
"sort"
"strings" "strings"
"testing" "testing"
"time" "time"
@ -90,6 +91,8 @@ func TestInitFederation(t *testing.T) {
dnsProvider string dnsProvider string
storageBackend string storageBackend string
dryRun string dryRun string
apiserverArgOverrides string
cmArgOverrides string
}{ }{
{ {
federation: "union", federation: "union",
@ -105,6 +108,8 @@ func TestInitFederation(t *testing.T) {
dnsProvider: "test-dns-provider", dnsProvider: "test-dns-provider",
storageBackend: "etcd2", storageBackend: "etcd2",
dryRun: "", dryRun: "",
apiserverArgOverrides: "--client-ca-file=override,--log-dir=override",
cmArgOverrides: "",
}, },
{ {
federation: "union", federation: "union",
@ -120,6 +125,8 @@ func TestInitFederation(t *testing.T) {
dnsProvider: "", //test for default value of dns provider dnsProvider: "", //test for default value of dns provider
storageBackend: "etcd2", storageBackend: "etcd2",
dryRun: "", dryRun: "",
apiserverArgOverrides: "",
cmArgOverrides: "--dns-provider=override,--log-dir=override",
}, },
{ {
federation: "union", federation: "union",
@ -135,6 +142,8 @@ func TestInitFederation(t *testing.T) {
dnsProvider: "test-dns-provider", dnsProvider: "test-dns-provider",
storageBackend: "etcd2", storageBackend: "etcd2",
dryRun: "valid-run", dryRun: "valid-run",
apiserverArgOverrides: "--log-dir=override",
cmArgOverrides: "--log-dir=override",
}, },
{ {
federation: "union", federation: "union",
@ -150,6 +159,8 @@ func TestInitFederation(t *testing.T) {
dnsProvider: "test-dns-provider", dnsProvider: "test-dns-provider",
storageBackend: "etcd3", storageBackend: "etcd3",
dryRun: "", dryRun: "",
apiserverArgOverrides: "",
cmArgOverrides: "",
}, },
{ {
federation: "union", federation: "union",
@ -164,6 +175,8 @@ func TestInitFederation(t *testing.T) {
dnsProvider: "test-dns-provider", dnsProvider: "test-dns-provider",
storageBackend: "etcd3", storageBackend: "etcd3",
dryRun: "", dryRun: "",
apiserverArgOverrides: "",
cmArgOverrides: "",
}, },
{ {
federation: "union", federation: "union",
@ -179,6 +192,8 @@ func TestInitFederation(t *testing.T) {
dnsProvider: "test-dns-provider", dnsProvider: "test-dns-provider",
storageBackend: "etcd3", storageBackend: "etcd3",
dryRun: "", dryRun: "",
apiserverArgOverrides: "",
cmArgOverrides: "",
}, },
} }
@ -194,7 +209,7 @@ func TestInitFederation(t *testing.T) {
} else { } else {
dnsProvider = "google-clouddns" //default value of dns-provider dnsProvider = "google-clouddns" //default value of dns-provider
} }
hostFactory, err := fakeInitHostFactory(tc.apiserverServiceType, tc.federation, util.DefaultFederationSystemNamespace, tc.advertiseAddress, tc.lbIP, tc.dnsZoneName, tc.image, dnsProvider, tc.etcdPersistence, tc.etcdPVCapacity, tc.storageBackend) hostFactory, err := fakeInitHostFactory(tc.apiserverServiceType, tc.federation, util.DefaultFederationSystemNamespace, tc.advertiseAddress, tc.lbIP, tc.dnsZoneName, tc.image, dnsProvider, tc.etcdPersistence, tc.etcdPVCapacity, tc.storageBackend, tc.apiserverArgOverrides, tc.cmArgOverrides)
if err != nil { if err != nil {
t.Fatalf("[%d] unexpected error: %v", i, err) t.Fatalf("[%d] unexpected error: %v", i, err)
} }
@ -210,6 +225,9 @@ func TestInitFederation(t *testing.T) {
cmd.Flags().Set("host-cluster-context", "substrate") cmd.Flags().Set("host-cluster-context", "substrate")
cmd.Flags().Set("dns-zone-name", tc.dnsZoneName) cmd.Flags().Set("dns-zone-name", tc.dnsZoneName)
cmd.Flags().Set("image", tc.image) cmd.Flags().Set("image", tc.image)
cmd.Flags().Set("apiserver-arg-overrides", tc.apiserverArgOverrides)
cmd.Flags().Set("controllermgr-arg-overrides", tc.cmArgOverrides)
if tc.storageBackend != "" { if tc.storageBackend != "" {
cmd.Flags().Set("storage-backend", tc.storageBackend) cmd.Flags().Set("storage-backend", tc.storageBackend)
} }
@ -498,7 +516,7 @@ func TestCertsHTTPS(t *testing.T) {
} }
} }
func fakeInitHostFactory(apiserverServiceType v1.ServiceType, federationName, namespaceName, advertiseAddress, lbIp, dnsZoneName, image, dnsProvider, etcdPersistence, etcdPVCapacity, storageProvider string) (cmdutil.Factory, error) { func fakeInitHostFactory(apiserverServiceType v1.ServiceType, federationName, namespaceName, advertiseAddress, lbIp, dnsZoneName, image, dnsProvider, etcdPersistence, etcdPVCapacity, storageProvider, apiserverOverrideArg, cmOverrideArg string) (cmdutil.Factory, error) {
svcName := federationName + "-apiserver" svcName := federationName + "-apiserver"
svcUrlPrefix := "/api/v1/namespaces/federation-system/services" svcUrlPrefix := "/api/v1/namespaces/federation-system/services"
credSecretName := svcName + "-credentials" credSecretName := svcName + "-credentials"
@ -684,6 +702,39 @@ func fakeInitHostFactory(apiserverServiceType v1.ServiceType, federationName, na
nodeList := v1.NodeList{} nodeList := v1.NodeList{}
nodeList.Items = append(nodeList.Items, node) nodeList.Items = append(nodeList.Items, node)
address := lbIp
if apiserverServiceType == v1.ServiceTypeNodePort {
if advertiseAddress != "" {
address = advertiseAddress
} else {
address = nodeIP
}
}
//apiserver.Spec.Template.Spec.Containers[0].Command = append(apiserver.Spec.Template.Spec.Containers[0].Command, fmt.Sprintf("--advertise-address=%s", address))
apiserverCommand := []string{
"/hyperkube",
"federation-apiserver",
}
apiserverArgs := []string{}
apiserverArgsMap := apiserverDefaultArgs
apiserverArgsMap["--storage-backend"] = storageProvider
//apiserverArgsMap["--advertise-address"] = ip
apiserverArgsMap["--advertise-address"] = address
if strings.Contains(apiserverOverrideArg, "--client-ca-file=override") {
apiserverArgsMap["--client-ca-file"] = "override"
}
if strings.Contains(apiserverOverrideArg, "--log-dir=override") {
apiserverArgsMap["--log-dir"] = "override"
}
for key, value := range apiserverArgsMap {
apiserverArgs = append(apiserverArgs, fmt.Sprintf("%s=%s", key, value))
}
sort.Strings(apiserverArgs)
apiserverCommand = append(apiserverCommand, apiserverArgs...)
apiserver := v1beta1.Deployment{ apiserver := v1beta1.Deployment{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
Kind: "Deployment", Kind: "Deployment",
@ -707,18 +758,7 @@ func fakeInitHostFactory(apiserverServiceType v1.ServiceType, federationName, na
{ {
Name: "apiserver", Name: "apiserver",
Image: image, Image: image,
Command: []string{ Command: apiserverCommand,
"/hyperkube",
"federation-apiserver",
"--bind-address=0.0.0.0",
"--etcd-servers=http://localhost:2379",
"--secure-port=443",
"--client-ca-file=/etc/federation/apiserver/ca.crt",
"--tls-cert-file=/etc/federation/apiserver/server.crt",
"--tls-private-key-file=/etc/federation/apiserver/server.key",
"--admission-control=NamespaceLifecycle",
fmt.Sprintf("--storage-backend=%s", storageProvider),
},
Ports: []v1.ContainerPort{ Ports: []v1.ContainerPort{
{ {
Name: "https", Name: "https",
@ -784,15 +824,29 @@ func fakeInitHostFactory(apiserverServiceType v1.ServiceType, federationName, na
} }
} }
address := lbIp cmCommand := []string{
if apiserverServiceType == v1.ServiceTypeNodePort { "/hyperkube",
if advertiseAddress != "" { "federation-controller-manager",
address = advertiseAddress }
cmArgs := []string{}
cmArgsMap := cmDefaultArgs
cmArgsMap["--federation-name"] = federationName
cmArgsMap["--zone-name"] = dnsZoneName
cmArgsMap["--master"] = "https://" + svcName
if strings.Contains(cmOverrideArg, "--dns-provider=override") {
cmArgsMap["--dns-provider"] = "override"
} else { } else {
address = nodeIP cmArgsMap["--dns-provider"] = dnsProvider
} }
if strings.Contains(cmOverrideArg, "--log-dir=override") {
cmArgsMap["--log-dir"] = "override"
} }
apiserver.Spec.Template.Spec.Containers[0].Command = append(apiserver.Spec.Template.Spec.Containers[0].Command, fmt.Sprintf("--advertise-address=%s", address))
for key, value := range cmArgsMap {
cmArgs = append(cmArgs, fmt.Sprintf("%s=%s", key, value))
}
sort.Strings(cmArgs)
cmCommand = append(cmCommand, cmArgs...)
cmName := federationName + "-controller-manager" cmName := federationName + "-controller-manager"
cm := v1beta1.Deployment{ cm := v1beta1.Deployment{
@ -818,16 +872,7 @@ func fakeInitHostFactory(apiserverServiceType v1.ServiceType, federationName, na
{ {
Name: "controller-manager", Name: "controller-manager",
Image: image, Image: image,
Command: []string{ Command: cmCommand,
"/hyperkube",
"federation-controller-manager",
"--master=https://" + svcName,
"--kubeconfig=/etc/federation/controller-manager/kubeconfig",
fmt.Sprintf("--dns-provider=%s", dnsProvider),
"--dns-provider-config=",
fmt.Sprintf("--federation-name=%s", federationName),
fmt.Sprintf("--zone-name=%s", dnsZoneName),
},
VolumeMounts: []v1.VolumeMount{ VolumeMounts: []v1.VolumeMount{
{ {
Name: cmKubeconfigSecretName, Name: cmKubeconfigSecretName,