Skip to content

Commit 325d779

Browse files
author
Hantao (Will) Wang
committed
break up large file into smaller pieces
1 parent ec898fb commit 325d779

File tree

4 files changed

+329
-304
lines changed

4 files changed

+329
-304
lines changed

test/k8s-integration/cluster.go

+131
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
"os"
6+
"os/exec"
7+
"path/filepath"
8+
9+
"k8s.io/klog"
10+
)
11+
12+
func clusterUpGKE(gceZone string) error {
13+
out, err := exec.Command("gcloud", "container", "clusters", "list", "--zone", gceZone,
14+
"--filter", fmt.Sprintf("name=%s", gkeTestClusterName)).CombinedOutput()
15+
if err != nil {
16+
return fmt.Errorf("failed to check for previous test cluster: %v %s", err, out)
17+
}
18+
if len(out) > 0 {
19+
klog.Infof("Detected previous cluster %s. Deleting so a new one can be created...", gkeTestClusterName)
20+
err = clusterDownGKE(gceZone)
21+
if err != nil {
22+
return err
23+
}
24+
}
25+
cmd := exec.Command("gcloud", "container", "clusters", "create", gkeTestClusterName,
26+
"--zone", gceZone, "--cluster-version", *gkeClusterVer, "--quiet")
27+
err = runCommand("Staring E2E Cluster on GKE", cmd)
28+
if err != nil {
29+
return fmt.Errorf("failed to bring up kubernetes e2e cluster on gke: %v", err)
30+
}
31+
32+
return nil
33+
}
34+
35+
func clusterDownGKE(gceZone string) error {
36+
cmd := exec.Command("gcloud", "container", "clusters", "delete", gkeTestClusterName,
37+
"--zone", gceZone, "--quiet")
38+
err := runCommand("Bringing Down E2E Cluster on GKE", cmd)
39+
if err != nil {
40+
return fmt.Errorf("failed to bring down kubernetes e2e cluster on gke: %v", err)
41+
}
42+
return nil
43+
}
44+
45+
func clusterUpGCE(k8sDir, gceZone string) error {
46+
err := os.Setenv("KUBE_GCE_ZONE", gceZone)
47+
if err != nil {
48+
return err
49+
}
50+
cmd := exec.Command(filepath.Join(k8sDir, "hack", "e2e-internal", "e2e-up.sh"))
51+
err = runCommand("Starting E2E Cluster on GCE", cmd)
52+
if err != nil {
53+
return fmt.Errorf("failed to bring up kubernetes e2e cluster on gce: %v", err)
54+
}
55+
56+
return nil
57+
}
58+
59+
func clusterDownGCE(k8sDir string) error {
60+
cmd := exec.Command(filepath.Join(k8sDir, "hack", "e2e-internal", "e2e-down.sh"))
61+
err := runCommand("Bringing Down E2E Cluster on GCE", cmd)
62+
if err != nil {
63+
return fmt.Errorf("failed to bring down kubernetes e2e cluster on gce: %v", err)
64+
}
65+
return nil
66+
}
67+
68+
func buildKubernetes(k8sDir string) error {
69+
cmd := exec.Command("make", "-C", k8sDir, "quick-release")
70+
err := runCommand("Building Kubernetes", cmd)
71+
if err != nil {
72+
return fmt.Errorf("failed to build Kubernetes: %v", err)
73+
}
74+
return nil
75+
}
76+
77+
func downloadKubernetesSource(pkgDir, k8sIoDir, kubeVersion string) error {
78+
k8sDir := filepath.Join(k8sIoDir, "kubernetes")
79+
/*
80+
// TODO: Download a fresh copy every time until mutate manifests hardcoding existing image is solved.
81+
if _, err := os.Stat(k8sDir); !os.IsNotExist(err) {
82+
klog.Infof("Staging Kubernetes already found at %s, skipping download", k8sDir)
83+
return nil
84+
}
85+
*/
86+
87+
klog.V(4).Infof("Staging Kubernetes folder not found, downloading now")
88+
89+
err := os.MkdirAll(k8sIoDir, 0777)
90+
if err != nil {
91+
return err
92+
}
93+
94+
kubeTarDir := filepath.Join(k8sIoDir, fmt.Sprintf("kubernetes-%s.tar.gz", kubeVersion))
95+
96+
var vKubeVersion string
97+
if kubeVersion == "master" {
98+
vKubeVersion = kubeVersion
99+
// A hack to be able to build Kubernetes in this nested place
100+
// KUBE_GIT_VERSION_FILE set to file to load kube version from
101+
err = os.Setenv("KUBE_GIT_VERSION_FILE", filepath.Join(pkgDir, "test", "k8s-integration", ".dockerized-kube-version-defs"))
102+
if err != nil {
103+
return err
104+
}
105+
} else {
106+
vKubeVersion = "v" + kubeVersion
107+
}
108+
out, err := exec.Command("curl", "-L", fmt.Sprintf("https://github.com/kubernetes/kubernetes/archive/%s.tar.gz", vKubeVersion), "-o", kubeTarDir).CombinedOutput()
109+
if err != nil {
110+
return fmt.Errorf("failed to curl kubernetes version %s: %s, err: %v", kubeVersion, out, err)
111+
}
112+
113+
out, err = exec.Command("tar", "-C", k8sIoDir, "-xvf", kubeTarDir).CombinedOutput()
114+
if err != nil {
115+
return fmt.Errorf("failed to untar %s: %s, err: %v", kubeTarDir, out, err)
116+
}
117+
118+
err = os.RemoveAll(k8sDir)
119+
if err != nil {
120+
return err
121+
}
122+
123+
err = os.Rename(filepath.Join(k8sIoDir, fmt.Sprintf("kubernetes-%s", kubeVersion)), k8sDir)
124+
if err != nil {
125+
return err
126+
}
127+
128+
klog.V(4).Infof("Successfully downloaded Kubernetes v%s to %s", kubeVersion, k8sDir)
129+
130+
return nil
131+
}

test/k8s-integration/driver.go

+116
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
"os"
6+
"os/exec"
7+
"path/filepath"
8+
"time"
9+
)
10+
11+
func getOverlayDir(pkgDir, deployOverlayName string) string {
12+
return filepath.Join(pkgDir, "deploy", "kubernetes", "overlays", deployOverlayName)
13+
}
14+
15+
func installDriver(goPath, pkgDir, stagingImage, stagingVersion, deployOverlayName string, doDriverBuild bool) error {
16+
if doDriverBuild {
17+
// Install kustomize
18+
out, err := exec.Command(filepath.Join(pkgDir, "deploy", "kubernetes", "install-kustomize.sh")).CombinedOutput()
19+
if err != nil {
20+
return fmt.Errorf("failed to install kustomize: %s, err: %v", out, err)
21+
}
22+
23+
// Edit ci kustomization to use given image tag
24+
overlayDir := getOverlayDir(pkgDir, deployOverlayName)
25+
err = os.Chdir(overlayDir)
26+
if err != nil {
27+
return fmt.Errorf("failed to change to overlay directory: %s, err: %v", out, err)
28+
}
29+
30+
// TODO (#138): in a local environment this is going to modify the actual kustomize files.
31+
// maybe a copy should be made instead
32+
out, err = exec.Command(
33+
filepath.Join(pkgDir, "bin", "kustomize"),
34+
"edit",
35+
"set",
36+
"image",
37+
fmt.Sprintf("%s=%s:%s", pdImagePlaceholder, stagingImage, stagingVersion)).CombinedOutput()
38+
if err != nil {
39+
return fmt.Errorf("failed to edit kustomize: %s, err: %v", out, err)
40+
}
41+
}
42+
43+
// setup service account file for secret creation
44+
tmpSaFile := filepath.Join(getTempDir(), "cloud-sa.json")
45+
defer removeTempDir(filepath.Dir(tmpSaFile))
46+
47+
// Need to copy it to name the file "cloud-sa.json"
48+
out, err := exec.Command("cp", *saFile, tmpSaFile).CombinedOutput()
49+
if err != nil {
50+
return fmt.Errorf("error copying service account key: %s, err: %v", out, err)
51+
}
52+
defer shredFile(tmpSaFile)
53+
54+
// deploy driver
55+
deployCmd := exec.Command(filepath.Join(pkgDir, "deploy", "kubernetes", "deploy-driver.sh"), "--skip-sa-check")
56+
deployCmd.Env = append(os.Environ(),
57+
fmt.Sprintf("GOPATH=%s", goPath),
58+
fmt.Sprintf("GCE_PD_SA_DIR=%s", filepath.Dir(tmpSaFile)),
59+
fmt.Sprintf("GCE_PD_DRIVER_VERSION=%s", deployOverlayName),
60+
)
61+
err = runCommand("Deploying driver", deployCmd)
62+
if err != nil {
63+
return fmt.Errorf("failed to deploy driver: %v", err)
64+
}
65+
66+
// TODO (#139): wait for driver to be running
67+
time.Sleep(10 * time.Second)
68+
statusCmd := exec.Command("kubectl", "describe", "pods", "-n", "default")
69+
err = runCommand("Checking driver pods", statusCmd)
70+
if err != nil {
71+
return fmt.Errorf("failed to check driver pods: %v", err)
72+
}
73+
74+
return nil
75+
}
76+
77+
func deleteDriver(goPath, pkgDir, deployOverlayName string) error {
78+
deleteCmd := exec.Command(filepath.Join(pkgDir, "deploy", "kubernetes", "delete-driver.sh"))
79+
deleteCmd.Env = append(os.Environ(),
80+
fmt.Sprintf("GOPATH=%s", goPath),
81+
fmt.Sprintf("GCE_PD_DRIVER_VERSION=%s", deployOverlayName),
82+
)
83+
err := runCommand("Deleting driver", deleteCmd)
84+
if err != nil {
85+
return fmt.Errorf("failed to delete driver: %v", err)
86+
}
87+
return nil
88+
}
89+
90+
func pushImage(pkgDir, stagingImage, stagingVersion string) error {
91+
err := os.Setenv("GCE_PD_CSI_STAGING_VERSION", stagingVersion)
92+
if err != nil {
93+
return err
94+
}
95+
err = os.Setenv("GCE_PD_CSI_STAGING_IMAGE", stagingImage)
96+
if err != nil {
97+
return err
98+
}
99+
cmd := exec.Command("make", "-C", pkgDir, "push-container",
100+
fmt.Sprintf("GCE_PD_CSI_STAGING_VERSION=%s", stagingVersion),
101+
fmt.Sprintf("GCE_PD_CSI_STAGING_IMAGE=%s", stagingImage))
102+
err = runCommand("Pushing GCP Container", cmd)
103+
if err != nil {
104+
return fmt.Errorf("failed to run make command: err: %v", err)
105+
}
106+
return nil
107+
}
108+
109+
func deleteImage(stagingImage, stagingVersion string) error {
110+
cmd := exec.Command("gcloud", "container", "images", "delete", fmt.Sprintf("%s:%s", stagingImage, stagingVersion), "--quiet")
111+
err := runCommand("Deleting GCR Container", cmd)
112+
if err != nil {
113+
return fmt.Errorf("failed to delete container image %s:%s: %s", stagingImage, stagingVersion, err)
114+
}
115+
return nil
116+
}

0 commit comments

Comments
 (0)