Skip to content

Commit

Permalink
refine k8s convertors, use predefined group/version (#184)
Browse files Browse the repository at this point in the history
  • Loading branch information
howieyuen committed Dec 1, 2022
1 parent 1c0331f commit fb99613
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 42 deletions.
41 changes: 13 additions & 28 deletions pkg/engine/printers/k8s/convertors.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,6 @@ import (
"k8s.io/apimachinery/pkg/runtime"
)

// API groups
const (
CoreGroup = ""
AppsGroup = "apps"
BatchGroup = "batch"
DiscoveryGroup = "discovery.k8s.io"
)

// API versions
const (
V1 = "v1"
V1Beta1 = "v1beta1"
V1Alpha1 = "v1alpha1"
)

// APIs in core/v1
const (
ComponentStatus = "ComponentStatus"
Expand Down Expand Up @@ -64,21 +49,21 @@ const (
)

func Convert(o *unstructured.Unstructured) runtime.Object {
switch o.GroupVersionKind().Group {
case CoreGroup:
return convertCore(o)
case AppsGroup:
return convertApps(o)
case BatchGroup:
return convertBatch(o)
case DiscoveryGroup:
return convertDiscovery(o)
switch o.GroupVersionKind().GroupVersion() {
case corev1.SchemeGroupVersion:
return convertCoreV1(o)
case appsv1.SchemeGroupVersion:
return convertAppsV1(o)
case batchv1.SchemeGroupVersion:
return convertBatchV1(o)
case discoveryv1.SchemeGroupVersion:
return convertDiscoveryV1(o)
default:
return nil
}
}

func convertCore(o *unstructured.Unstructured) runtime.Object {
func convertCoreV1(o *unstructured.Unstructured) runtime.Object {
var target runtime.Object
switch o.GetKind() {
case ComponentStatus:
Expand Down Expand Up @@ -121,7 +106,7 @@ func convertCore(o *unstructured.Unstructured) runtime.Object {
return target
}

func convertApps(o *unstructured.Unstructured) runtime.Object {
func convertAppsV1(o *unstructured.Unstructured) runtime.Object {
var target runtime.Object
switch o.GetKind() {
case Deployment:
Expand All @@ -144,7 +129,7 @@ func convertApps(o *unstructured.Unstructured) runtime.Object {
return target
}

func convertBatch(o *unstructured.Unstructured) runtime.Object {
func convertBatchV1(o *unstructured.Unstructured) runtime.Object {
var target runtime.Object
switch o.GetKind() {
case CronJob:
Expand All @@ -161,7 +146,7 @@ func convertBatch(o *unstructured.Unstructured) runtime.Object {
return target
}

func convertDiscovery(o *unstructured.Unstructured) runtime.Object {
func convertDiscoveryV1(o *unstructured.Unstructured) runtime.Object {
var target runtime.Object
switch o.GetKind() {
case EndpointSlice:
Expand Down
32 changes: 18 additions & 14 deletions pkg/engine/runtime/kubernetes_runtime.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ import (

jsonpatch "github.com/evanphx/json-patch"
yamlv2 "gopkg.in/yaml.v2"
appsv1 "k8s.io/api/apps/v1"
batchv1 "k8s.io/api/batch/v1"
corev1 "k8s.io/api/core/v1"
discoveryv1 "k8s.io/api/discovery/v1"
k8serrors "k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/api/meta"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
Expand Down Expand Up @@ -246,8 +250,8 @@ func (k *KubernetesRuntime) Watch(ctx context.Context, request *WatchRequest) *W

if reqObj.GetKind() == k8s.Service { // Watch Endpoints or EndpointSlice
if gvk, err := k.mapper.KindFor(schema.GroupVersionResource{
Group: k8s.DiscoveryGroup,
Version: k8s.V1,
Group: discoveryv1.SchemeGroupVersion.Group,
Version: discoveryv1.SchemeGroupVersion.Version,
Resource: k8s.EndpointSlice,
}); gvk.Empty() || err != nil { // Watch Endpoints
log.Errorf("k8s runtime has no kind for EndpointSlice, err: %v", err)
Expand Down Expand Up @@ -485,36 +489,36 @@ func getDependentGVK(gvk schema.GroupVersionKind) schema.GroupVersionKind {
// Deployment generates ReplicaSet
case k8s.Deployment:
return schema.GroupVersionKind{
Group: gvk.Group,
Version: gvk.Version,
Group: appsv1.SchemeGroupVersion.Group,
Version: appsv1.SchemeGroupVersion.Version,
Kind: k8s.ReplicaSet,
}
// DaemonSet and StatefulSet generate ControllerRevision
case k8s.DaemonSet, k8s.StatefulSet:
return schema.GroupVersionKind{
Group: gvk.Group,
Version: gvk.Version,
Group: appsv1.SchemeGroupVersion.Group,
Version: appsv1.SchemeGroupVersion.Version,
Kind: k8s.ControllerRevision,
}
// CronJob generates Job
case k8s.CronJob:
return schema.GroupVersionKind{
Group: gvk.Group,
Version: gvk.Version,
Group: batchv1.SchemeGroupVersion.Group,
Version: batchv1.SchemeGroupVersion.Version,
Kind: k8s.Job,
}
// ReplicaSet, ReplicationController, ControllerRevision and job generate Pod
case k8s.ReplicaSet, k8s.Job, k8s.ReplicationController, k8s.ControllerRevision:
return schema.GroupVersionKind{
Group: k8s.CoreGroup,
Version: k8s.V1,
Group: corev1.SchemeGroupVersion.Group,
Version: corev1.SchemeGroupVersion.Version,
Kind: k8s.Pod,
}
// Service is the owner of EndpointSlice
case k8s.Service:
return schema.GroupVersionKind{
Group: k8s.DiscoveryGroup,
Version: k8s.V1,
Group: discoveryv1.SchemeGroupVersion.Group,
Version: discoveryv1.SchemeGroupVersion.Version,
Kind: k8s.EndpointSlice,
}
default:
Expand All @@ -526,8 +530,8 @@ func getNamedGVK(gvk schema.GroupVersionKind) schema.GroupVersionKind {
switch gvk.Kind {
case k8s.Service:
return schema.GroupVersionKind{
Group: k8s.CoreGroup,
Version: k8s.V1,
Group: corev1.SchemeGroupVersion.Group,
Version: corev1.SchemeGroupVersion.Version,
Kind: k8s.Endpoints,
}
default:
Expand Down

0 comments on commit fb99613

Please sign in to comment.