Permalink
Comparing changes
Open a pull request
- 9 commits
- 9 files changed
- 0 commit comments
- 4 contributors
Unified
Split
Showing
with
51 additions
and 8 deletions.
- +2 −0 cluster/examples/vm-template-fedora.yaml
- +2 −0 cluster/examples/vm-template-rhel7.yaml
- +2 −0 cluster/examples/vm-template-windows2012r2.yaml
- +27 −0 cluster/local/README.md
- +3 −1 cluster/local/provider.sh
- +1 −1 pkg/ephemeral-disk/ephemeral-disk.go
- +8 −0 pkg/ephemeral-disk/ephemeral-disk_test.go
- +2 −2 tests/vmi_lifecycle_test.go
- +4 −4 tools/vms-generator/utils/utils.go
| @@ -17,6 +17,7 @@ objects: | ||
| creationTimestamp: null | ||
| labels: | ||
| kubevirt-vm: vm-${NAME} | ||
| kubevirt.io/os: fedora27 | ||
| name: ${NAME} | ||
| spec: | ||
| running: false | ||
| @@ -25,6 +26,7 @@ objects: | ||
| creationTimestamp: null | ||
| labels: | ||
| kubevirt-vm: vm-${NAME} | ||
| kubevirt.io/os: fedora27 | ||
| spec: | ||
| domain: | ||
| cpu: | ||
| @@ -17,6 +17,7 @@ objects: | ||
| creationTimestamp: null | ||
| labels: | ||
| kubevirt-vm: vm-${NAME} | ||
| kubevirt.io/os: rhel-7.4 | ||
| name: ${NAME} | ||
| spec: | ||
| running: false | ||
| @@ -25,6 +26,7 @@ objects: | ||
| creationTimestamp: null | ||
| labels: | ||
| kubevirt-vm: vm-${NAME} | ||
| kubevirt.io/os: rhel-7.4 | ||
| spec: | ||
| domain: | ||
| cpu: | ||
| @@ -17,6 +17,7 @@ objects: | ||
| creationTimestamp: null | ||
| labels: | ||
| kubevirt-vm: vm-${NAME} | ||
| kubevirt.io/os: win2k12r2 | ||
| name: ${NAME} | ||
| spec: | ||
| running: false | ||
| @@ -25,6 +26,7 @@ objects: | ||
| creationTimestamp: null | ||
| labels: | ||
| kubevirt-vm: vm-${NAME} | ||
| kubevirt.io/os: win2k12r2 | ||
| spec: | ||
| domain: | ||
| clock: | ||
| @@ -0,0 +1,27 @@ | ||
| # Local Kubernets Provider | ||
| This provider allows developing against bleeding-edge Kubernetes code. The | ||
| k8s sources will be compiled and a single-node cluster will be started. | ||
| ## Bringing the cluster up | ||
| First get the k8s sources: | ||
| ```bash | ||
| go get -u -d k8s.io/kubernetes | ||
| ``` | ||
| Then compile and start the cluster: | ||
| ```bash | ||
| export KUBEVIRT_PROVIDER=local | ||
| make cluster-up | ||
| ``` | ||
| The cluster can be accessed as usual: | ||
| ```bash | ||
| $ cluster/kubectl.sh get nodes | ||
| NAME STATUS ROLES AGE VERSION | ||
| kubdev Ready <none> 5m20s v1.12.0-beta.2 | ||
| ``` |
| @@ -40,7 +40,9 @@ EOF | ||
| } | ||
| function build() { | ||
| make manifests docker | ||
| ${KUBEVIRT_PATH}hack/dockerized "DOCKER_TAG=${DOCKER_TAG} | ||
| KUBEVIRT_PROVIDER=${KUBEVIRT_PROVIDER} ./hack/build-manifests.sh" | ||
| make docker | ||
| } | ||
| function _kubectl() { | ||
| @@ -64,7 +64,7 @@ func SetLocalDataOwner(user string) { | ||
| func createVolumeDirectory(volumeName string) error { | ||
| dir := generateVolumeMountDir(volumeName) | ||
| err := os.Mkdir(dir, 0755) | ||
| err := os.MkdirAll(dir, 0755) | ||
| if err != nil { | ||
| return err | ||
| } | ||
| @@ -148,6 +148,14 @@ var _ = Describe("RegistryDisk", func() { | ||
| _, err = os.Stat(filepath.Join(mountBaseDir, "fake-volume3", "disk.qcow2")) | ||
| Expect(err).NotTo(HaveOccurred()) | ||
| }) | ||
| It("Should create ephemeral images in an idempotent way", func() { | ||
| vmi := v1.NewMinimalVMI("fake-vmi") | ||
| AppendEphemeralPVC(vmi, "fake-disk1", "fake-volume1", "fake-pvc1") | ||
| err := CreateEphemeralImages(vmi) | ||
| Expect(err).NotTo(HaveOccurred()) | ||
| err = CreateEphemeralImages(vmi) | ||
| Expect(err).NotTo(HaveOccurred()) | ||
| }) | ||
| }) | ||
| }) | ||
| }) | ||
| @@ -632,7 +632,7 @@ var _ = Describe("VMIlifecycle", func() { | ||
| By("Deleting the VirtualMachineInstance") | ||
| _, err = virtClient.RestClient().Delete().Resource("virtualmachineinstances").Namespace(vmi.GetObjectMeta().GetNamespace()).Name(vmi.GetObjectMeta().GetName()).Do().Get() | ||
| Expect(err).To(BeNil()) | ||
| tests.NewObjectEventWatcher(vmi).SinceWatchedObjectResourceVersion().WaitFor(tests.NormalEvent, v1.Deleted) | ||
| tests.NewObjectEventWatcher(vmi).Timeout(60*time.Second).SinceWatchedObjectResourceVersion().WaitFor(tests.NormalEvent, v1.Deleted) | ||
| tests.WaitForVirtualMachineToDisappearWithTimeout(vmi, 120) | ||
| // Check if the stop event was logged | ||
| @@ -1034,7 +1034,7 @@ var _ = Describe("VMIlifecycle", func() { | ||
| // Delete the VirtualMachineInstance and wait for the confirmation of the delete | ||
| By("Deleting the VirtualMachineInstance") | ||
| Expect(virtClient.VirtualMachineInstance(vmi.Namespace).Delete(obj.Name, &metav1.DeleteOptions{})).To(Succeed()) | ||
| tests.NewObjectEventWatcher(obj).SinceWatchedObjectResourceVersion().WaitFor(tests.NormalEvent, v1.Deleted) | ||
| tests.NewObjectEventWatcher(obj).Timeout(60*time.Second).SinceWatchedObjectResourceVersion().WaitFor(tests.NormalEvent, v1.Deleted) | ||
| // Check if the graceful shutdown was logged | ||
| By("Checking that virt-handler logs VirtualMachineInstance graceful shutdown") | ||
| @@ -468,7 +468,7 @@ func GetTestTemplateFedora() *Template { | ||
| } | ||
| func newTemplateFedoraWithDockerTag(dockerTag string) *Template { | ||
| vm := getBaseVM("", map[string]string{"kubevirt-vm": "vm-${NAME}"}) | ||
| vm := getBaseVM("", map[string]string{"kubevirt-vm": "vm-${NAME}", "kubevirt.io/os": "fedora27"}) | ||
| addRegistryDisk(&vm.Spec.Template.Spec, fmt.Sprintf("%s/%s:%s", DockerPrefix, imageFedora, dockerTag), busVirtio) | ||
| addNoCloudDiskWitUserData(&vm.Spec.Template.Spec, "#cloud-config\npassword: fedora\nchpasswd: { expire: False }") | ||
| @@ -489,7 +489,7 @@ func newTemplateFedoraWithDockerTag(dockerTag string) *Template { | ||
| } | ||
| func GetTemplateRHEL7() *Template { | ||
| vm := getBaseVM("", map[string]string{"kubevirt-vm": "vm-${NAME}"}) | ||
| vm := getBaseVM("", map[string]string{"kubevirt-vm": "vm-${NAME}", "kubevirt.io/os": "rhel-7.4"}) | ||
| addPVCDisk(&vm.Spec.Template.Spec, "linux-vm-pvc-${NAME}", busVirtio, "disk0", "disk0-pvc") | ||
| pvc := getPVCForTemplate("linux-vm-pvc-${NAME}") | ||
| @@ -500,7 +500,7 @@ func GetTemplateRHEL7() *Template { | ||
| } | ||
| func GetTestTemplateRHEL7() *Template { | ||
| vm := getBaseVM("", map[string]string{"kubevirt-vm": "vm-${NAME}"}) | ||
| vm := getBaseVM("", map[string]string{"kubevirt-vm": "vm-${NAME}", "kubevirt.io/os": "rhel-7.4"}) | ||
| addEphemeralPVCDisk(&vm.Spec.Template.Spec, "disk-rhel", busSata, "pvcdisk", "pvcvolume") | ||
| return newTemplateForRHEL7VM(vm) | ||
| @@ -524,7 +524,7 @@ func newTemplateForRHEL7VM(vm *v1.VirtualMachine) *Template { | ||
| } | ||
| func GetTemplateWindows() *Template { | ||
| vm := getBaseVM("", map[string]string{"kubevirt-vm": "vm-${NAME}"}) | ||
| vm := getBaseVM("", map[string]string{"kubevirt-vm": "vm-${NAME}", "kubevirt.io/os": "win2k12r2"}) | ||
| windows := GetVMIWindows() | ||
| vm.Spec.Template.Spec = windows.Spec | ||
| vm.Spec.Template.ObjectMeta.Annotations = windows.ObjectMeta.Annotations | ||