Update unit tests
parent
7247a7dee6
commit
15a5209841
|
|
@ -17,31 +17,27 @@ limitations under the License.
|
|||
package addons
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestKubectlCommand(t *testing.T) {
|
||||
expectedCommand := "sudo KUBECONFIG=/var/lib/minikube/kubeconfig /var/lib/minikube/binaries/%s/kubectl apply -f /etc/kubernetes/addons -l kubernetes.io/cluster-service!=true,addonmanager.kubernetes.io/mode=Reconcile --prune=true --prune-whitelist core/v1/ConfigMap --prune-whitelist core/v1/Endpoints --prune-whitelist core/v1/Namespace --prune-whitelist core/v1/PersistentVolumeClaim --prune-whitelist core/v1/PersistentVolume --prune-whitelist core/v1/Pod --prune-whitelist core/v1/ReplicationController --prune-whitelist core/v1/Secret --prune-whitelist core/v1/Service --prune-whitelist batch/v1/Job --prune-whitelist batch/v1beta1/CronJob --prune-whitelist apps/v1/DaemonSet --prune-whitelist apps/v1/Deployment --prune-whitelist apps/v1/ReplicaSet --prune-whitelist apps/v1/StatefulSet --prune-whitelist extensions/v1beta1/Ingress --recursive"
|
||||
|
||||
tests := []struct {
|
||||
description string
|
||||
k8sVersion string
|
||||
files []string
|
||||
enable bool
|
||||
expected string
|
||||
}{
|
||||
{
|
||||
description: "k8s version < 1.17.0",
|
||||
k8sVersion: "v1.16.0",
|
||||
expected: expectedCommand,
|
||||
description: "enable an addon",
|
||||
files: []string{"a", "b"},
|
||||
enable: true,
|
||||
expected: "sudo KUBECONFIG=/var/lib/minikube/kubeconfig /var/lib/minikube/binaries/v1.17.0/kubectl apply -f a -f b",
|
||||
}, {
|
||||
description: "k8s version == 1.17.0",
|
||||
k8sVersion: "v1.17.0",
|
||||
expected: expectedCommand + " --namespace=kube-system",
|
||||
}, {
|
||||
description: "k8s version > 1.17.0",
|
||||
k8sVersion: "v1.18.0",
|
||||
expected: expectedCommand + " --namespace=kube-system",
|
||||
description: "disable an addon",
|
||||
files: []string{"a", "b"},
|
||||
enable: false,
|
||||
expected: "sudo KUBECONFIG=/var/lib/minikube/kubeconfig /var/lib/minikube/binaries/v1.17.0/kubectl delete -f a -f b",
|
||||
},
|
||||
}
|
||||
|
||||
|
|
@ -50,19 +46,17 @@ func TestKubectlCommand(t *testing.T) {
|
|||
originalK8sVersion := k8sVersion
|
||||
defer func() { k8sVersion = originalK8sVersion }()
|
||||
k8sVersion = func(_ string) (string, error) {
|
||||
return test.k8sVersion, nil
|
||||
return "v1.17.0", nil
|
||||
}
|
||||
|
||||
command, err := kubectlCommand("")
|
||||
command, err := kubectlCommand("", test.files, test.enable)
|
||||
if err != nil {
|
||||
t.Fatalf("error getting kubectl command: %v", err)
|
||||
}
|
||||
actual := strings.Join(command.Args, " ")
|
||||
|
||||
expected := fmt.Sprintf(test.expected, test.k8sVersion)
|
||||
|
||||
if actual != expected {
|
||||
t.Fatalf("expected does not match actual\nExpected: %s\nActual: %s", expected, actual)
|
||||
if actual != test.expected {
|
||||
t.Fatalf("expected does not match actual\nExpected: %s\nActual: %s", test.expected, actual)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,12 @@
|
|||
/*
|
||||
Copyright 2016 The Kubernetes Authors All rights reserved.
|
||||
|
||||
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.
|
||||
|
|
@ -37,7 +40,7 @@ type Addon struct {
|
|||
}
|
||||
|
||||
// NewAddon creates a new Addon
|
||||
func NewAddon(assets []*BinAsset, enabled bool, addonName, namespace string) *Addon {
|
||||
func NewAddon(assets []*BinAsset, enabled bool, addonName string) *Addon {
|
||||
a := &Addon{
|
||||
Assets: assets,
|
||||
enabled: enabled,
|
||||
|
|
@ -66,229 +69,229 @@ func (a *Addon) IsEnabled() (bool, error) {
|
|||
// TODO: Make dynamically loadable: move this data to a .yaml file within each addon directory
|
||||
var Addons = map[string]*Addon{
|
||||
"dashboard": NewAddon([]*BinAsset{
|
||||
MustBinAsset("deploy/addons/dashboard/dashboard-ns.yaml", TargetDirForAddon("kubernetes-dashboard"), "dashboard-ns.yaml", "0640", false),
|
||||
MustBinAsset("deploy/addons/dashboard/dashboard-clusterrole.yaml", TargetDirForAddon("kubernetes-dashboard"), "dashboard-clusterrole.yaml", "0640", false),
|
||||
MustBinAsset("deploy/addons/dashboard/dashboard-clusterrolebinding.yaml", TargetDirForAddon("kubernetes-dashboard"), "dashboard-clusterrolebinding.yaml", "0640", false),
|
||||
MustBinAsset("deploy/addons/dashboard/dashboard-configmap.yaml", TargetDirForAddon("kubernetes-dashboard"), "dashboard-configmap.yaml", "0640", false),
|
||||
MustBinAsset("deploy/addons/dashboard/dashboard-dp.yaml", TargetDirForAddon("kubernetes-dashboard"), "dashboard-dp.yaml", "0640", false),
|
||||
MustBinAsset("deploy/addons/dashboard/dashboard-role.yaml", TargetDirForAddon("kubernetes-dashboard"), "dashboard-role.yaml", "0640", false),
|
||||
MustBinAsset("deploy/addons/dashboard/dashboard-rolebinding.yaml", TargetDirForAddon("kubernetes-dashboard"), "dashboard-rolebinding.yaml", "0640", false),
|
||||
MustBinAsset("deploy/addons/dashboard/dashboard-sa.yaml", TargetDirForAddon("kubernetes-dashboard"), "dashboard-sa.yaml", "0640", false),
|
||||
MustBinAsset("deploy/addons/dashboard/dashboard-secret.yaml", TargetDirForAddon("kubernetes-dashboard"), "dashboard-secret.yaml", "0640", false),
|
||||
MustBinAsset("deploy/addons/dashboard/dashboard-svc.yaml", TargetDirForAddon("kubernetes-dashboard"), "dashboard-svc.yaml", "0640", false),
|
||||
}, false, "dashboard", "kubernetes-dashboard"),
|
||||
MustBinAsset("deploy/addons/dashboard/dashboard-clusterrole.yaml", vmpath.GuestAddonsDir, "dashboard-clusterrole.yaml", "0640", false),
|
||||
MustBinAsset("deploy/addons/dashboard/dashboard-clusterrolebinding.yaml", vmpath.GuestAddonsDir, "dashboard-clusterrolebinding.yaml", "0640", false),
|
||||
MustBinAsset("deploy/addons/dashboard/dashboard-configmap.yaml", vmpath.GuestAddonsDir, "dashboard-configmap.yaml", "0640", false),
|
||||
MustBinAsset("deploy/addons/dashboard/dashboard-dp.yaml", vmpath.GuestAddonsDir, "dashboard-dp.yaml", "0640", false),
|
||||
MustBinAsset("deploy/addons/dashboard/dashboard-ns.yaml", vmpath.GuestAddonsDir, "dashboard-ns.yaml", "0640", false),
|
||||
MustBinAsset("deploy/addons/dashboard/dashboard-role.yaml", vmpath.GuestAddonsDir, "dashboard-role.yaml", "0640", false),
|
||||
MustBinAsset("deploy/addons/dashboard/dashboard-rolebinding.yaml", vmpath.GuestAddonsDir, "dashboard-rolebinding.yaml", "0640", false),
|
||||
MustBinAsset("deploy/addons/dashboard/dashboard-sa.yaml", vmpath.GuestAddonsDir, "dashboard-sa.yaml", "0640", false),
|
||||
MustBinAsset("deploy/addons/dashboard/dashboard-secret.yaml", vmpath.GuestAddonsDir, "dashboard-secret.yaml", "0640", false),
|
||||
MustBinAsset("deploy/addons/dashboard/dashboard-svc.yaml", vmpath.GuestAddonsDir, "dashboard-svc.yaml", "0640", false),
|
||||
}, false, "dashboard"),
|
||||
"default-storageclass": NewAddon([]*BinAsset{
|
||||
MustBinAsset(
|
||||
"deploy/addons/storageclass/storageclass.yaml.tmpl",
|
||||
TargetDirForAddon("kube-system"),
|
||||
vmpath.GuestAddonsDir,
|
||||
"storageclass.yaml",
|
||||
"0640",
|
||||
false),
|
||||
}, true, "default-storageclass", "kube-system"),
|
||||
}, true, "default-storageclass"),
|
||||
"storage-provisioner": NewAddon([]*BinAsset{
|
||||
MustBinAsset(
|
||||
"deploy/addons/storage-provisioner/storage-provisioner.yaml.tmpl",
|
||||
TargetDirForAddon("kube-system"),
|
||||
vmpath.GuestAddonsDir,
|
||||
"storage-provisioner.yaml",
|
||||
"0640",
|
||||
true),
|
||||
}, true, "storage-provisioner", "kube-system"),
|
||||
}, true, "storage-provisioner"),
|
||||
"storage-provisioner-gluster": NewAddon([]*BinAsset{
|
||||
MustBinAsset(
|
||||
"deploy/addons/storage-provisioner-gluster/storage-gluster-ns.yaml.tmpl",
|
||||
TargetDirForAddon("kube-system"),
|
||||
vmpath.GuestAddonsDir,
|
||||
"storage-gluster-ns.yaml",
|
||||
"0640",
|
||||
false),
|
||||
MustBinAsset(
|
||||
"deploy/addons/storage-provisioner-gluster/glusterfs-daemonset.yaml.tmpl",
|
||||
TargetDirForAddon("kube-system"),
|
||||
vmpath.GuestAddonsDir,
|
||||
"glusterfs-daemonset.yaml",
|
||||
"0640",
|
||||
false),
|
||||
MustBinAsset(
|
||||
"deploy/addons/storage-provisioner-gluster/heketi-deployment.yaml.tmpl",
|
||||
TargetDirForAddon("kube-system"),
|
||||
vmpath.GuestAddonsDir,
|
||||
"heketi-deployment.yaml",
|
||||
"0640",
|
||||
false),
|
||||
MustBinAsset(
|
||||
"deploy/addons/storage-provisioner-gluster/storage-provisioner-glusterfile.yaml.tmpl",
|
||||
TargetDirForAddon("kube-system"),
|
||||
vmpath.GuestAddonsDir,
|
||||
"storage-privisioner-glusterfile.yaml",
|
||||
"0640",
|
||||
false),
|
||||
}, false, "storage-provisioner-gluster", "kube-system"),
|
||||
}, false, "storage-provisioner-gluster"),
|
||||
"efk": NewAddon([]*BinAsset{
|
||||
MustBinAsset(
|
||||
"deploy/addons/efk/elasticsearch-rc.yaml.tmpl",
|
||||
TargetDirForAddon("kube-system"),
|
||||
vmpath.GuestAddonsDir,
|
||||
"elasticsearch-rc.yaml",
|
||||
"0640",
|
||||
true),
|
||||
MustBinAsset(
|
||||
"deploy/addons/efk/elasticsearch-svc.yaml.tmpl",
|
||||
TargetDirForAddon("kube-system"),
|
||||
vmpath.GuestAddonsDir,
|
||||
"elasticsearch-svc.yaml",
|
||||
"0640",
|
||||
false),
|
||||
MustBinAsset(
|
||||
"deploy/addons/efk/fluentd-es-rc.yaml.tmpl",
|
||||
TargetDirForAddon("kube-system"),
|
||||
vmpath.GuestAddonsDir,
|
||||
"fluentd-es-rc.yaml",
|
||||
"0640",
|
||||
true),
|
||||
MustBinAsset(
|
||||
"deploy/addons/efk/fluentd-es-configmap.yaml.tmpl",
|
||||
TargetDirForAddon("kube-system"),
|
||||
vmpath.GuestAddonsDir,
|
||||
"fluentd-es-configmap.yaml",
|
||||
"0640",
|
||||
false),
|
||||
MustBinAsset(
|
||||
"deploy/addons/efk/kibana-rc.yaml.tmpl",
|
||||
TargetDirForAddon("kube-system"),
|
||||
vmpath.GuestAddonsDir,
|
||||
"kibana-rc.yaml",
|
||||
"0640",
|
||||
false),
|
||||
MustBinAsset(
|
||||
"deploy/addons/efk/kibana-svc.yaml.tmpl",
|
||||
TargetDirForAddon("kube-system"),
|
||||
vmpath.GuestAddonsDir,
|
||||
"kibana-svc.yaml",
|
||||
"0640",
|
||||
false),
|
||||
}, false, "efk", "kube-system"),
|
||||
}, false, "efk"),
|
||||
"ingress": NewAddon([]*BinAsset{
|
||||
MustBinAsset(
|
||||
"deploy/addons/ingress/ingress-configmap.yaml.tmpl",
|
||||
TargetDirForAddon("kube-system"),
|
||||
vmpath.GuestAddonsDir,
|
||||
"ingress-configmap.yaml",
|
||||
"0640",
|
||||
false),
|
||||
MustBinAsset(
|
||||
"deploy/addons/ingress/ingress-rbac.yaml.tmpl",
|
||||
TargetDirForAddon("kube-system"),
|
||||
vmpath.GuestAddonsDir,
|
||||
"ingress-rbac.yaml",
|
||||
"0640",
|
||||
false),
|
||||
MustBinAsset(
|
||||
"deploy/addons/ingress/ingress-dp.yaml.tmpl",
|
||||
TargetDirForAddon("kube-system"),
|
||||
vmpath.GuestAddonsDir,
|
||||
"ingress-dp.yaml",
|
||||
"0640",
|
||||
true),
|
||||
}, false, "ingress", "kube-system"),
|
||||
}, false, "ingress"),
|
||||
"istio-provisioner": NewAddon([]*BinAsset{
|
||||
MustBinAsset(
|
||||
"deploy/addons/istio-provisioner/istio-operator.yaml.tmpl",
|
||||
TargetDirForAddon("istio-operator"),
|
||||
vmpath.GuestAddonsDir,
|
||||
"istio-operator.yaml",
|
||||
"0640",
|
||||
true),
|
||||
}, false, "istio-provisioner", "istio-operator"),
|
||||
}, false, "istio-provisioner"),
|
||||
"istio": NewAddon([]*BinAsset{
|
||||
MustBinAsset(
|
||||
"deploy/addons/istio/istio-default-profile.yaml.tmpl",
|
||||
TargetDirForAddon("istio-operator"),
|
||||
vmpath.GuestAddonsDir,
|
||||
"istio-default-profile.yaml",
|
||||
"0640",
|
||||
false),
|
||||
}, false, "istio", "istio-operator"),
|
||||
}, false, "istio"),
|
||||
"metrics-server": NewAddon([]*BinAsset{
|
||||
MustBinAsset(
|
||||
"deploy/addons/metrics-server/metrics-apiservice.yaml.tmpl",
|
||||
TargetDirForAddon("kube-system"),
|
||||
vmpath.GuestAddonsDir,
|
||||
"metrics-apiservice.yaml",
|
||||
"0640",
|
||||
false),
|
||||
MustBinAsset(
|
||||
"deploy/addons/metrics-server/metrics-server-deployment.yaml.tmpl",
|
||||
TargetDirForAddon("kube-system"),
|
||||
vmpath.GuestAddonsDir,
|
||||
"metrics-server-deployment.yaml",
|
||||
"0640",
|
||||
true),
|
||||
MustBinAsset(
|
||||
"deploy/addons/metrics-server/metrics-server-service.yaml.tmpl",
|
||||
TargetDirForAddon("kube-system"),
|
||||
vmpath.GuestAddonsDir,
|
||||
"metrics-server-service.yaml",
|
||||
"0640",
|
||||
false),
|
||||
}, false, "metrics-server", "kube-system"),
|
||||
}, false, "metrics-server"),
|
||||
"registry": NewAddon([]*BinAsset{
|
||||
MustBinAsset(
|
||||
"deploy/addons/registry/registry-rc.yaml.tmpl",
|
||||
TargetDirForAddon("kube-system"),
|
||||
vmpath.GuestAddonsDir,
|
||||
"registry-rc.yaml",
|
||||
"0640",
|
||||
false),
|
||||
MustBinAsset(
|
||||
"deploy/addons/registry/registry-svc.yaml.tmpl",
|
||||
TargetDirForAddon("kube-system"),
|
||||
vmpath.GuestAddonsDir,
|
||||
"registry-svc.yaml",
|
||||
"0640",
|
||||
false),
|
||||
MustBinAsset(
|
||||
"deploy/addons/registry/registry-proxy.yaml.tmpl",
|
||||
TargetDirForAddon("kube-system"),
|
||||
vmpath.GuestAddonsDir,
|
||||
"registry-proxy.yaml",
|
||||
"0640",
|
||||
false),
|
||||
}, false, "registry", "kube-system"),
|
||||
}, false, "registry"),
|
||||
"registry-creds": NewAddon([]*BinAsset{
|
||||
MustBinAsset(
|
||||
"deploy/addons/registry-creds/registry-creds-rc.yaml.tmpl",
|
||||
TargetDirForAddon("kube-system"),
|
||||
vmpath.GuestAddonsDir,
|
||||
"registry-creds-rc.yaml",
|
||||
"0640",
|
||||
false),
|
||||
}, false, "registry-creds", "kube-system"),
|
||||
}, false, "registry-creds"),
|
||||
"freshpod": NewAddon([]*BinAsset{
|
||||
MustBinAsset(
|
||||
"deploy/addons/freshpod/freshpod-rc.yaml.tmpl",
|
||||
TargetDirForAddon("kube-system"),
|
||||
vmpath.GuestAddonsDir,
|
||||
"freshpod-rc.yaml",
|
||||
"0640",
|
||||
true),
|
||||
}, false, "freshpod", "kube-system"),
|
||||
}, false, "freshpod"),
|
||||
"nvidia-driver-installer": NewAddon([]*BinAsset{
|
||||
MustBinAsset(
|
||||
"deploy/addons/gpu/nvidia-driver-installer.yaml.tmpl",
|
||||
TargetDirForAddon("kube-system"),
|
||||
vmpath.GuestAddonsDir,
|
||||
"nvidia-driver-installer.yaml",
|
||||
"0640",
|
||||
true),
|
||||
}, false, "nvidia-driver-installer", "kube-system"),
|
||||
}, false, "nvidia-driver-installer"),
|
||||
"nvidia-gpu-device-plugin": NewAddon([]*BinAsset{
|
||||
MustBinAsset(
|
||||
"deploy/addons/gpu/nvidia-gpu-device-plugin.yaml.tmpl",
|
||||
TargetDirForAddon("kube-system"),
|
||||
vmpath.GuestAddonsDir,
|
||||
"nvidia-gpu-device-plugin.yaml",
|
||||
"0640",
|
||||
true),
|
||||
}, false, "nvidia-gpu-device-plugin", "kube-system"),
|
||||
}, false, "nvidia-gpu-device-plugin"),
|
||||
"logviewer": NewAddon([]*BinAsset{
|
||||
MustBinAsset(
|
||||
"deploy/addons/logviewer/logviewer-dp-and-svc.yaml.tmpl",
|
||||
TargetDirForAddon("kube-system"),
|
||||
vmpath.GuestAddonsDir,
|
||||
"logviewer-dp-and-svc.yaml",
|
||||
"0640",
|
||||
false),
|
||||
MustBinAsset(
|
||||
"deploy/addons/logviewer/logviewer-rbac.yaml.tmpl",
|
||||
TargetDirForAddon("kube-system"),
|
||||
vmpath.GuestAddonsDir,
|
||||
"logviewer-rbac.yaml",
|
||||
"0640",
|
||||
false),
|
||||
}, false, "logviewer", "kube-system"),
|
||||
}, false, "logviewer"),
|
||||
"gvisor": NewAddon([]*BinAsset{
|
||||
MustBinAsset(
|
||||
"deploy/addons/gvisor/gvisor-pod.yaml.tmpl",
|
||||
TargetDirForAddon("kube-system"),
|
||||
vmpath.GuestAddonsDir,
|
||||
"gvisor-pod.yaml",
|
||||
"0640",
|
||||
true),
|
||||
MustBinAsset(
|
||||
"deploy/addons/gvisor/gvisor-runtimeclass.yaml",
|
||||
TargetDirForAddon("kube-system"),
|
||||
vmpath.GuestAddonsDir,
|
||||
"gvisor-runtimeclass.yaml",
|
||||
"0640",
|
||||
false),
|
||||
|
|
@ -298,41 +301,35 @@ var Addons = map[string]*Addon{
|
|||
constants.GvisorConfigTomlTargetName,
|
||||
"0640",
|
||||
true),
|
||||
}, false, "gvisor", "kube-system"),
|
||||
}, false, "gvisor"),
|
||||
"helm-tiller": NewAddon([]*BinAsset{
|
||||
MustBinAsset(
|
||||
"deploy/addons/helm-tiller/helm-tiller-dp.tmpl",
|
||||
TargetDirForAddon("kube-system"),
|
||||
vmpath.GuestAddonsDir,
|
||||
"helm-tiller-dp.yaml",
|
||||
"0640",
|
||||
true),
|
||||
MustBinAsset(
|
||||
"deploy/addons/helm-tiller/helm-tiller-rbac.tmpl",
|
||||
TargetDirForAddon("kube-system"),
|
||||
vmpath.GuestAddonsDir,
|
||||
"helm-tiller-rbac.yaml",
|
||||
"0640",
|
||||
true),
|
||||
MustBinAsset(
|
||||
"deploy/addons/helm-tiller/helm-tiller-svc.tmpl",
|
||||
TargetDirForAddon("kube-system"),
|
||||
vmpath.GuestAddonsDir,
|
||||
"helm-tiller-svc.yaml",
|
||||
"0640",
|
||||
true),
|
||||
}, false, "helm-tiller", "kube-system"),
|
||||
}, false, "helm-tiller"),
|
||||
"ingress-dns": NewAddon([]*BinAsset{
|
||||
MustBinAsset(
|
||||
"deploy/addons/ingress-dns/ingress-dns-pod.yaml",
|
||||
TargetDirForAddon("kube-system"),
|
||||
vmpath.GuestAddonsDir,
|
||||
"ingress-dns-pod.yaml",
|
||||
"0640",
|
||||
false),
|
||||
}, false, "ingress-dns", "kube-system"),
|
||||
}
|
||||
|
||||
// TargetDirForAddon appends the namespace as a directory to /etc/kubernetes/addons
|
||||
func TargetDirForAddon(namespace string) string {
|
||||
return vmpath.GuestAddonsDir
|
||||
// return filepath.Join(vmpath.GuestAddonsDir, namespace)
|
||||
}, false, "ingress-dns"),
|
||||
}
|
||||
|
||||
// AddMinikubeDirAssets adds all addons and files to the list
|
||||
|
|
|
|||
Loading…
Reference in New Issue