Skip to content

Commit

Permalink
Merge pull request #6717 from davidvossel/vm-pool-v1
Browse files Browse the repository at this point in the history
VirtualMachinePools Implementation
  • Loading branch information
kubevirt-bot committed Dec 9, 2021
2 parents 8619fd5 + e186e70 commit 22b8b10
Show file tree
Hide file tree
Showing 66 changed files with 7,790 additions and 54 deletions.
1 change: 1 addition & 0 deletions api/api-rule-violations-known.list
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,7 @@ API rule violation: list_type_missing,kubevirt.io/api/core/v1,VirtualMachineStat
API rule violation: list_type_missing,kubevirt.io/api/core/v1,VirtualMachineStatus,VolumeSnapshotStatuses
API rule violation: list_type_missing,kubevirt.io/api/flavor/v1alpha1,VirtualMachineClusterFlavorList,Items
API rule violation: list_type_missing,kubevirt.io/api/flavor/v1alpha1,VirtualMachineFlavorList,Items
API rule violation: list_type_missing,kubevirt.io/api/pool/v1alpha1,VirtualMachinePoolList,Items
API rule violation: list_type_missing,kubevirt.io/api/snapshot/v1alpha1,VirtualMachineRestoreList,Items
API rule violation: list_type_missing,kubevirt.io/api/snapshot/v1alpha1,VirtualMachineRestoreStatus,Conditions
API rule violation: list_type_missing,kubevirt.io/api/snapshot/v1alpha1,VirtualMachineRestoreStatus,DeletedDataVolumes
Expand Down
1 change: 1 addition & 0 deletions api/api-rule-violations.list
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,7 @@ API rule violation: list_type_missing,kubevirt.io/api/core/v1,VirtualMachineStat
API rule violation: list_type_missing,kubevirt.io/api/core/v1,VirtualMachineStatus,VolumeSnapshotStatuses
API rule violation: list_type_missing,kubevirt.io/api/flavor/v1alpha1,VirtualMachineClusterFlavorList,Items
API rule violation: list_type_missing,kubevirt.io/api/flavor/v1alpha1,VirtualMachineFlavorList,Items
API rule violation: list_type_missing,kubevirt.io/api/pool/v1alpha1,VirtualMachinePoolList,Items
API rule violation: list_type_missing,kubevirt.io/api/snapshot/v1alpha1,VirtualMachineRestoreList,Items
API rule violation: list_type_missing,kubevirt.io/api/snapshot/v1alpha1,VirtualMachineRestoreStatus,Conditions
API rule violation: list_type_missing,kubevirt.io/api/snapshot/v1alpha1,VirtualMachineRestoreStatus,DeletedDataVolumes
Expand Down
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ require (
github.com/coreos/go-iptables v0.5.0
github.com/coreos/go-semver v0.3.0
github.com/coreos/prometheus-operator v0.38.1-0.20200424145508-7e176fda06cc
github.com/davecgh/go-spew v1.1.1
github.com/emicklei/go-restful v2.10.0+incompatible
github.com/emicklei/go-restful-openapi v1.2.0
github.com/evanphx/json-patch v4.9.0+incompatible
Expand Down
10 changes: 7 additions & 3 deletions hack/generate.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,9 @@ swagger-doc -in ${KUBEVIRT_DIR}/staging/src/kubevirt.io/api/core/v1/types.go
swagger-doc -in ${KUBEVIRT_DIR}/staging/src/kubevirt.io/api/core/v1/schema.go
swagger-doc -in ${KUBEVIRT_DIR}/staging/src/kubevirt.io/api/snapshot/v1alpha1/types.go
swagger-doc -in ${KUBEVIRT_DIR}/staging/src/kubevirt.io/api/flavor/v1alpha1/types.go
swagger-doc -in ${KUBEVIRT_DIR}/staging/src/kubevirt.io/api/pool/v1alpha1/types.go

deepcopy-gen --input-dirs kubevirt.io/api/snapshot/v1alpha1,kubevirt.io/api/flavor/v1alpha1,kubevirt.io/api/core/v1 \
deepcopy-gen --input-dirs kubevirt.io/api/snapshot/v1alpha1,kubevirt.io/api/flavor/v1alpha1,kubevirt.io/api/pool/v1alpha1,kubevirt.io/api/core/v1 \
--bounding-dirs kubevirt.io/api \
--go-header-file ${KUBEVIRT_DIR}/hack/boilerplate/boilerplate.go.txt

Expand All @@ -24,7 +25,7 @@ defaulter-gen --input-dirs kubevirt.io/api/core/v1 \
--output-package kubevirt.io/api/core/v1 \
--go-header-file ${KUBEVIRT_DIR}/hack/boilerplate/boilerplate.go.txt

openapi-gen --input-dirs kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1,k8s.io/apimachinery/pkg/util/intstr,k8s.io/apimachinery/pkg/api/resource,k8s.io/apimachinery/pkg/apis/meta/v1,k8s.io/apimachinery/pkg/runtime,k8s.io/api/core/v1,k8s.io/apimachinery/pkg/apis/meta/v1,kubevirt.io/api/core/v1,kubevirt.io/api/snapshot/v1alpha1,kubevirt.io/api/flavor/v1alpha1 \
openapi-gen --input-dirs kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1,k8s.io/apimachinery/pkg/util/intstr,k8s.io/apimachinery/pkg/api/resource,k8s.io/apimachinery/pkg/apis/meta/v1,k8s.io/apimachinery/pkg/runtime,k8s.io/api/core/v1,k8s.io/apimachinery/pkg/apis/meta/v1,kubevirt.io/api/core/v1,kubevirt.io/api/snapshot/v1alpha1,kubevirt.io/api/flavor/v1alpha1,kubevirt.io/api/pool/v1alpha1 \
--output-base ${KUBEVIRT_DIR}/staging/src \
--output-package kubevirt.io/client-go/api/ \
--go-header-file ${KUBEVIRT_DIR}/hack/boilerplate/boilerplate.go.txt >${KUBEVIRT_DIR}/api/api-rule-violations.list
Expand All @@ -40,7 +41,7 @@ fi

client-gen --clientset-name versioned \
--input-base kubevirt.io/api \
--input snapshot/v1alpha1,flavor/v1alpha1 \
--input snapshot/v1alpha1,flavor/v1alpha1,pool/v1alpha1 \
--output-base ${KUBEVIRT_DIR}/staging/src \
--output-package ${CLIENT_GEN_BASE}/kubevirt/clientset \
--go-header-file ${KUBEVIRT_DIR}/hack/boilerplate/boilerplate.go.txt
Expand Down Expand Up @@ -92,6 +93,9 @@ deepcopy-gen --input-dirs ./pkg/virt-launcher/virtwrap/api \
#include flavor
GOFLAGS= controller-gen crd paths=../api/flavor/v1alpha1/

#include pool
GOFLAGS= controller-gen crd paths=../api/pool/v1alpha1/

#remove some weird stuff from controller-gen
cd config/crd
for file in *; do
Expand Down
45 changes: 45 additions & 0 deletions manifests/generated/operator-csv.yaml.in
Original file line number Diff line number Diff line change
Expand Up @@ -543,6 +543,18 @@ spec:
- '*'
verbs:
- '*'
- apiGroups:
- pool.kubevirt.io
resources:
- virtualmachinepools
verbs:
- watch
- list
- create
- delete
- update
- patch
- get
- apiGroups:
- kubevirt.io
resources:
Expand Down Expand Up @@ -761,6 +773,19 @@ spec:
- list
- watch
- deletecollection
- apiGroups:
- pool.kubevirt.io
resources:
- virtualmachinepools
verbs:
- get
- delete
- create
- update
- patch
- list
- watch
- deletecollection
- apiGroups:
- subresources.kubevirt.io
resources:
Expand Down Expand Up @@ -834,6 +859,18 @@ spec:
- patch
- list
- watch
- apiGroups:
- pool.kubevirt.io
resources:
- virtualmachinepools
verbs:
- get
- delete
- create
- update
- patch
- list
- watch
- apiGroups:
- kubevirt.io
resources:
Expand Down Expand Up @@ -880,6 +917,14 @@ spec:
- get
- list
- watch
- apiGroups:
- pool.kubevirt.io
resources:
- virtualmachinepools
verbs:
- get
- list
- watch
- apiGroups:
- authentication.k8s.io
resources:
Expand Down
45 changes: 45 additions & 0 deletions manifests/generated/rbac-operator.authorization.k8s.yaml.in
Original file line number Diff line number Diff line change
Expand Up @@ -445,6 +445,18 @@ rules:
- '*'
verbs:
- '*'
- apiGroups:
- pool.kubevirt.io
resources:
- virtualmachinepools
verbs:
- watch
- list
- create
- delete
- update
- patch
- get
- apiGroups:
- kubevirt.io
resources:
Expand Down Expand Up @@ -663,6 +675,19 @@ rules:
- list
- watch
- deletecollection
- apiGroups:
- pool.kubevirt.io
resources:
- virtualmachinepools
verbs:
- get
- delete
- create
- update
- patch
- list
- watch
- deletecollection
- apiGroups:
- subresources.kubevirt.io
resources:
Expand Down Expand Up @@ -736,6 +761,18 @@ rules:
- patch
- list
- watch
- apiGroups:
- pool.kubevirt.io
resources:
- virtualmachinepools
verbs:
- get
- delete
- create
- update
- patch
- list
- watch
- apiGroups:
- kubevirt.io
resources:
Expand Down Expand Up @@ -782,6 +819,14 @@ rules:
- get
- list
- watch
- apiGroups:
- pool.kubevirt.io
resources:
- virtualmachinepools
verbs:
- get
- list
- watch
- apiGroups:
- authentication.k8s.io
resources:
Expand Down
1 change: 1 addition & 0 deletions pkg/controller/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ go_library(
"//staging/src/kubevirt.io/api/core:go_default_library",
"//staging/src/kubevirt.io/api/core/v1:go_default_library",
"//staging/src/kubevirt.io/api/flavor/v1alpha1:go_default_library",
"//staging/src/kubevirt.io/api/pool/v1alpha1:go_default_library",
"//staging/src/kubevirt.io/api/snapshot/v1alpha1:go_default_library",
"//staging/src/kubevirt.io/client-go/kubecli:go_default_library",
"//staging/src/kubevirt.io/client-go/log:go_default_library",
Expand Down
52 changes: 52 additions & 0 deletions pkg/controller/conditions.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,60 @@ import (
cdiv1 "kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1"

v1 "kubevirt.io/api/core/v1"
poolv1 "kubevirt.io/api/pool/v1alpha1"
)

type VirtualMachinePoolConditionManager struct {
}

func NewVirtualMachinePoolConditionManager() *VirtualMachinePoolConditionManager {
return &VirtualMachinePoolConditionManager{}
}

func (d *VirtualMachinePoolConditionManager) GetCondition(pool *poolv1.VirtualMachinePool, cond poolv1.VirtualMachinePoolConditionType) *poolv1.VirtualMachinePoolCondition {
if pool == nil {
return nil
}
for _, c := range pool.Status.Conditions {
if c.Type == cond {
return &c
}
}
return nil
}

func (d *VirtualMachinePoolConditionManager) HasCondition(pool *poolv1.VirtualMachinePool, cond poolv1.VirtualMachinePoolConditionType) bool {
return d.GetCondition(pool, cond) != nil
}

func (d *VirtualMachinePoolConditionManager) RemoveCondition(pool *poolv1.VirtualMachinePool, cond poolv1.VirtualMachinePoolConditionType) {
var conds []poolv1.VirtualMachinePoolCondition
for _, c := range pool.Status.Conditions {
if c.Type == cond {
continue
}
conds = append(conds, c)
}
pool.Status.Conditions = conds
}

// UpdateCondition updates the given VirtualMachinePoolCondition, unless it is already set with the same status and reason.
func (d *VirtualMachinePoolConditionManager) UpdateCondition(pool *poolv1.VirtualMachinePool, cond *poolv1.VirtualMachinePoolCondition) {
for i, c := range pool.Status.Conditions {
if c.Type != cond.Type {
continue
}

if c.Status != cond.Status || c.Reason != cond.Reason {
pool.Status.Conditions[i] = *cond
}

return
}

pool.Status.Conditions = append(pool.Status.Conditions, *cond)
}

type VirtualMachineConditionManager struct {
}

Expand Down
8 changes: 8 additions & 0 deletions pkg/controller/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,14 @@ func VirtualMachineInstanceKeys(vmis []*v1.VirtualMachineInstance) []string {
return keys
}

func VirtualMachineKeys(vms []*v1.VirtualMachine) []string {
keys := []string{}
for _, vm := range vms {
keys = append(keys, VirtualMachineKey(vm))
}
return keys
}

func HasFinalizer(object metav1.Object, finalizer string) bool {
for _, f := range object.GetFinalizers() {
if f == finalizer {
Expand Down

0 comments on commit 22b8b10

Please sign in to comment.