Skip to content

Commit

Permalink
++ add pacthes for cdi and new service for cdi-api webhooks
Browse files Browse the repository at this point in the history
++ rename kubevir kinds

Signed-off-by: Ivan Mikheykin <[email protected]>
  • Loading branch information
diafour committed Apr 16, 2024
1 parent 685d221 commit 7d0a5d2
Show file tree
Hide file tree
Showing 15 changed files with 469 additions and 270 deletions.
18 changes: 10 additions & 8 deletions crds/embedded/cdi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,19 @@ kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.13.0
name: cdis.x.virtualization.deckhouse.io
name: dvpinternalcdis.internal.virtualization.deckhouse.io
spec:
group: x.virtualization.deckhouse.io
group: internal.virtualization.deckhouse.io
names:
kind: CDI
listKind: CDIList
plural: cdis
categories:
- dvpinternal
kind: DVPInternalCDI
listKind: DVPInternalCDIList
plural: dvpinternalcdis
shortNames:
- xcdi
- xcdis
singular: cdi
- dvpcdi
- dvpcdis
singular: dvpinternalcdi
scope: Cluster
versions:
- additionalPrinterColumns:
Expand Down
15 changes: 9 additions & 6 deletions crds/embedded/kubevirt.yaml
Original file line number Diff line number Diff line change
@@ -1,25 +1,28 @@
# Source:
# https://github.com/kubevirt/kubevirt/releases/download/v1.0.0/kubevirt-operator.yaml
# Changes:
# - 2024.04.16
# - Add prefixes xinternal, XInternal
# - 2023.12.12
# - Add x.virtualization.deckhouse prefix
# - Remove short names.
# - Remove all category, add kubevirt category.

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
labels:
operator.kubevirt.io: ""
name: kubevirts.x.virtualization.deckhouse.io
name: dvpinternalkubevirts.internal.virtualization.deckhouse.io
spec:
group: x.virtualization.deckhouse.io
group: internal.virtualization.deckhouse.io
names:
categories:
- kubevirt
kind: KubeVirt
plural: kubevirts
singular: kubevirt
- dvpinternal
kind: DVPInternalKubeVirt
plural: dvpinternalkubevirts
singular: dvpinternalkubevirt
scope: Namespaced
versions:
- additionalPrinterColumns:
Expand Down
8 changes: 4 additions & 4 deletions images/kube-api-proxy/pkg/kubevirt/kubevirt_rules.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ import (
)

var KubevirtRewriteRules = &RewriteRules{
KindPrefix: "", // KV
ResourceTypePrefix: "", // kv
ShortNamePrefix: "x",
KindPrefix: "DVPInternal", // KV
ResourceTypePrefix: "dvpinternal", // kv
ShortNamePrefix: "dvp",
Categories: []string{"kubevirt"},
RenamedGroup: "x.virtualization.deckhouse.io",
RenamedGroup: "internal.virtualization.deckhouse.io",
Rules: KubevirtAPIGroupsRules,
Webhooks: KubevirtWebhooks,
}
Expand Down
5 changes: 5 additions & 0 deletions images/kube-api-proxy/pkg/rewriter/target_request.go
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,11 @@ func (tr *TargetRequest) ShouldRewriteRequest() bool {
return true
}

// Rewrite request body when creating CRD.
if tr.originEndpoint.ResourceType == "customresourcedefinitions" && tr.originEndpoint.Name == "" {
return true
}

// Should not rewrite request if path is not rewritten.
return false
}
Expand Down
15 changes: 11 additions & 4 deletions images/pre-delete-hook/entrypoint.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,14 @@
#!/bin/bash
set -eu -o pipefail

kubectl delete -n d8-virtualization kubevirts.x.virtualization.deckhouse.io kubevirt
kubectl delete cdis.x.virtualization.deckhouse.io cdi
kubectl wait --for=delete cdis.x.virtualization.deckhouse.io cdi --timeout=180s
kubectl wait --for=delete -n d8-virtualization kubevirts.x.virtualization.deckhouse.io kubevirt --timeout=180s
KUBEVIRT_RESOURCE="dvpinternalkubevirts.internal.virtualization.deckhouse.io"
echo "Delete Kubevirt configuration ..."
kubectl delete -n d8-virtualization ${KUBEVIRT_RESOURCE} kubevirt || true
echo "Wait for Kubevirt deletion ..."
kubectl wait --for=delete -n d8-virtualization ${KUBEVIRT_RESOURCE} kubevirt --timeout=180s || true

CDI_RESOURCE="dvpinternalcdis.internal.virtualization.deckhouse.io"
echo "Delete CDI configuration ..."
kubectl delete ${CDI_RESOURCE} cdi || true
echo "Wait for CDI deletion ..."
kubectl wait --for=delete ${CDI_RESOURCE} cdi --timeout=180s || true
116 changes: 57 additions & 59 deletions images/virtualization-artifact/cmd/virtualization-controller/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,7 @@ import (

"go.uber.org/zap/zapcore"
extv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
apiruntime "k8s.io/apimachinery/pkg/runtime"
apiruntimeschema "k8s.io/apimachinery/pkg/runtime/schema"
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
virtv1 "kubevirt.io/api/core/v1"
cdiv1beta1 "kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1"
Expand Down Expand Up @@ -47,18 +45,18 @@ var (
)

const (
defaultVerbosity = "1"
kubevirtCoreGroupName = "x.virtualization.deckhouse.io"
cdiCoreGroupName = "x.virtualization.deckhouse.io"
defaultVerbosity = "1"
//kubevirtCoreGroupName = "x.virtualization.deckhouse.io"
//cdiCoreGroupName = "x.virtualization.deckhouse.io"
)

func init() {
importerImage = getRequiredEnvVar(common.ImporterPodImageNameVar)
uploaderImage = getRequiredEnvVar(common.UploaderPodImageNameVar)
controllerNamespace = getRequiredEnvVar(common.PodNamespaceVar)

overrideKubevirtCoreGroupName(kubevirtCoreGroupName)
overrideCDICoreGroupName(cdiCoreGroupName)
//overrideKubevirtCoreGroupName(kubevirtCoreGroupName)
//overrideCDICoreGroupName(cdiCoreGroupName)
}

func setupLogger() {
Expand Down Expand Up @@ -99,60 +97,60 @@ func getRequiredEnvVar(name string) string {
return val
}

func overrideKubevirtCoreGroupName(groupName string) {
virtv1.GroupVersion.Group = groupName
virtv1.SchemeGroupVersion.Group = groupName
virtv1.StorageGroupVersion.Group = groupName
for i := range virtv1.GroupVersions {
virtv1.GroupVersions[i].Group = groupName
}

virtv1.VirtualMachineInstanceGroupVersionKind.Group = groupName
virtv1.VirtualMachineInstanceReplicaSetGroupVersionKind.Group = groupName
virtv1.VirtualMachineInstancePresetGroupVersionKind.Group = groupName
virtv1.VirtualMachineGroupVersionKind.Group = groupName
virtv1.VirtualMachineInstanceMigrationGroupVersionKind.Group = groupName
virtv1.KubeVirtGroupVersionKind.Group = groupName

virtv1.SchemeBuilder = apiruntime.NewSchemeBuilder(virtv1.AddKnownTypesGenerator([]apiruntimeschema.GroupVersion{virtv1.GroupVersion}))
virtv1.AddToScheme = virtv1.SchemeBuilder.AddToScheme
}

func overrideCDICoreGroupName(groupName string) {
cdiv1beta1.SchemeGroupVersion.Group = groupName
cdiv1beta1.CDIGroupVersionKind.Group = groupName

cdiv1beta1.SchemeBuilder = apiruntime.NewSchemeBuilder(addKnownTypes)
cdiv1beta1.AddToScheme = cdiv1beta1.SchemeBuilder.AddToScheme
}
//func overrideKubevirtCoreGroupName(groupName string) {
// virtv1.GroupVersion.Group = groupName
// virtv1.SchemeGroupVersion.Group = groupName
// virtv1.StorageGroupVersion.Group = groupName
// for i := range virtv1.GroupVersions {
// virtv1.GroupVersions[i].Group = groupName
// }
//
// virtv1.VirtualMachineInstanceGroupVersionKind.Group = groupName
// virtv1.VirtualMachineInstanceReplicaSetGroupVersionKind.Group = groupName
// virtv1.VirtualMachineInstancePresetGroupVersionKind.Group = groupName
// virtv1.VirtualMachineGroupVersionKind.Group = groupName
// virtv1.VirtualMachineInstanceMigrationGroupVersionKind.Group = groupName
// virtv1.KubeVirtGroupVersionKind.Group = groupName
//
// virtv1.SchemeBuilder = apiruntime.NewSchemeBuilder(virtv1.AddKnownTypesGenerator([]apiruntimeschema.GroupVersion{virtv1.GroupVersion}))
// virtv1.AddToScheme = virtv1.SchemeBuilder.AddToScheme
//}

//func overrideCDICoreGroupName(groupName string) {
// cdiv1beta1.SchemeGroupVersion.Group = groupName
// cdiv1beta1.CDIGroupVersionKind.Group = groupName
//
// cdiv1beta1.SchemeBuilder = apiruntime.NewSchemeBuilder(addKnownTypes)
// cdiv1beta1.AddToScheme = cdiv1beta1.SchemeBuilder.AddToScheme
//}

// Adds the list of known types to Scheme.
func addKnownTypes(scheme *apiruntime.Scheme) error {
scheme.AddKnownTypes(cdiv1beta1.SchemeGroupVersion,
&cdiv1beta1.DataVolume{},
&cdiv1beta1.DataVolumeList{},
&cdiv1beta1.CDIConfig{},
&cdiv1beta1.CDIConfigList{},
&cdiv1beta1.CDI{},
&cdiv1beta1.CDIList{},
&cdiv1beta1.StorageProfile{},
&cdiv1beta1.StorageProfileList{},
&cdiv1beta1.DataSource{},
&cdiv1beta1.DataSourceList{},
&cdiv1beta1.DataImportCron{},
&cdiv1beta1.DataImportCronList{},
&cdiv1beta1.ObjectTransfer{},
&cdiv1beta1.ObjectTransferList{},
&cdiv1beta1.VolumeImportSource{},
&cdiv1beta1.VolumeImportSourceList{},
&cdiv1beta1.VolumeUploadSource{},
&cdiv1beta1.VolumeUploadSourceList{},
&cdiv1beta1.VolumeCloneSource{},
&cdiv1beta1.VolumeCloneSourceList{},
)
metav1.AddToGroupVersion(scheme, cdiv1beta1.SchemeGroupVersion)
return nil
}
//func addKnownTypes(scheme *apiruntime.Scheme) error {
// scheme.AddKnownTypes(cdiv1beta1.SchemeGroupVersion,
// &cdiv1beta1.DataVolume{},
// &cdiv1beta1.DataVolumeList{},
// &cdiv1beta1.CDIConfig{},
// &cdiv1beta1.CDIConfigList{},
// &cdiv1beta1.CDI{},
// &cdiv1beta1.CDIList{},
// &cdiv1beta1.StorageProfile{},
// &cdiv1beta1.StorageProfileList{},
// &cdiv1beta1.DataSource{},
// &cdiv1beta1.DataSourceList{},
// &cdiv1beta1.DataImportCron{},
// &cdiv1beta1.DataImportCronList{},
// &cdiv1beta1.ObjectTransfer{},
// &cdiv1beta1.ObjectTransferList{},
// &cdiv1beta1.VolumeImportSource{},
// &cdiv1beta1.VolumeImportSourceList{},
// &cdiv1beta1.VolumeUploadSource{},
// &cdiv1beta1.VolumeUploadSourceList{},
// &cdiv1beta1.VolumeCloneSource{},
// &cdiv1beta1.VolumeCloneSourceList{},
// )
// metav1.AddToGroupVersion(scheme, cdiv1beta1.SchemeGroupVersion)
// return nil
//}

func main() {
flag.Parse()
Expand Down
15 changes: 15 additions & 0 deletions templates/cdi/cdi-api/service-webhook-proxy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
apiVersion: v1
kind: Service
metadata:
name: cdi-api-webhook-proxy
namespace: d8-{{ .Chart.Name }}
{{- include "helm_lib_module_labels" (list . (dict "app" "cdi-apiserver")) | nindent 2 }}
spec:
ports:
- port: 443
protocol: TCP
targetPort: 24192
selector:
cdi.kubevirt.io: cdi-apiserver
sessionAffinity: None
type: ClusterIP
24 changes: 12 additions & 12 deletions templates/cdi/cdi-operator/rbac-for-us.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ rules:
- update
- delete
- apiGroups:
- x.virtualization.deckhouse.io
- internal.virtualization.deckhouse.io
- upload.cdi.kubevirt.io
resources:
- '*'
Expand Down Expand Up @@ -123,28 +123,28 @@ rules:
verbs:
- get
- apiGroups:
- x.virtualization.deckhouse.io
- internal.virtualization.deckhouse.io
resources:
- datavolumes
- dvpinternaldatavolumes
verbs:
- list
- get
- apiGroups:
- x.virtualization.deckhouse.io
- internal.virtualization.deckhouse.io
resources:
- datasources
- dvpinternaldatasources
verbs:
- get
- apiGroups:
- x.virtualization.deckhouse.io
- internal.virtualization.deckhouse.io
resources:
- cdis
- dvpinternalcdis
verbs:
- get
- apiGroups:
- x.virtualization.deckhouse.io
- internal.virtualization.deckhouse.io
resources:
- cdis/finalizers
- dvpinternalcdis/finalizers
verbs:
- update
- apiGroups:
Expand Down Expand Up @@ -219,7 +219,7 @@ rules:
- list
- watch
- apiGroups:
- x.virtualization.deckhouse.io
- internal.virtualization.deckhouse.io
resources:
- '*'
verbs:
Expand Down Expand Up @@ -286,9 +286,9 @@ rules:
verbs:
- get
- apiGroups:
- x.virtualization.deckhouse.io
- internal.virtualization.deckhouse.io
resources:
- dataimportcrons
- dvpinternaldataimportcrons
verbs:
- get
- list
Expand Down
Loading

0 comments on commit 7d0a5d2

Please sign in to comment.