Merge pull request #775 from Garrybest/pr_cleanup

clean up unstructured conversion
This commit is contained in:
karmada-bot 2021-09-29 12:05:35 +08:00 committed by GitHub
commit 7d77644d43
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 30 additions and 12 deletions

View File

@ -8,7 +8,6 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/tools/record"
"k8s.io/klog/v2"
controllerruntime "sigs.k8s.io/controller-runtime"
@ -88,8 +87,8 @@ func (c *EndpointSliceController) collectEndpointSliceFromWork(work *workv1alpha
return controllerruntime.Result{Requeue: true}, err
}
endpointSlice := &discoveryv1beta1.EndpointSlice{}
if err := runtime.DefaultUnstructuredConverter.FromUnstructured(unstructObj.UnstructuredContent(), endpointSlice); err != nil {
endpointSlice, err := helper.ConvertToEndpointSlice(unstructObj)
if err != nil {
klog.Errorf("failed to convert unstructured to typed object: %v", err)
return controllerruntime.Result{Requeue: true}, err
}

View File

@ -29,6 +29,7 @@ import (
clusterv1alpha1 "github.com/karmada-io/karmada/pkg/apis/cluster/v1alpha1"
"github.com/karmada-io/karmada/pkg/util"
"github.com/karmada-io/karmada/pkg/util/helper"
"github.com/karmada-io/karmada/pkg/util/informermanager"
)
@ -454,9 +455,8 @@ func getResourceSummary(nodes []*corev1.Node, pods []*corev1.Pod) *clusterv1alph
func convertObjectsToNodes(nodeList []runtime.Object) ([]*corev1.Node, error) {
nodes := make([]*corev1.Node, 0, len(nodeList))
for _, obj := range nodeList {
unstructObj := obj.(*unstructured.Unstructured)
node := &corev1.Node{}
if err := runtime.DefaultUnstructuredConverter.FromUnstructured(unstructObj.UnstructuredContent(), node); err != nil {
node, err := helper.ConvertToNode(obj.(*unstructured.Unstructured))
if err != nil {
return nil, fmt.Errorf("failed to convert unstructured to typed object: %v", err)
}
nodes = append(nodes, node)
@ -467,9 +467,8 @@ func convertObjectsToNodes(nodeList []runtime.Object) ([]*corev1.Node, error) {
func convertObjectsToPods(podList []runtime.Object) ([]*corev1.Pod, error) {
pods := make([]*corev1.Pod, 0, len(podList))
for _, obj := range podList {
unstructObj := obj.(*unstructured.Unstructured)
pod := &corev1.Pod{}
if err := runtime.DefaultUnstructuredConverter.FromUnstructured(unstructObj.UnstructuredContent(), pod); err != nil {
pod, err := helper.ConvertToPod(obj.(*unstructured.Unstructured))
if err != nil {
return nil, fmt.Errorf("failed to convert unstructured to typed object: %v", err)
}
pods = append(pods, pod)

View File

@ -4,6 +4,7 @@ import (
appsv1 "k8s.io/api/apps/v1"
batchv1 "k8s.io/api/batch/v1"
corev1 "k8s.io/api/core/v1"
discoveryv1beta1 "k8s.io/api/discovery/v1beta1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/runtime"
@ -51,6 +52,16 @@ func ConvertToPod(obj *unstructured.Unstructured) (*corev1.Pod, error) {
return typedObj, nil
}
// ConvertToNode converts a Node object from unstructured to typed.
func ConvertToNode(obj *unstructured.Unstructured) (*corev1.Node, error) {
typedObj := &corev1.Node{}
if err := runtime.DefaultUnstructuredConverter.FromUnstructured(obj.UnstructuredContent(), typedObj); err != nil {
return nil, err
}
return typedObj, nil
}
// ConvertToReplicaSet converts a ReplicaSet object from unstructured to typed.
func ConvertToReplicaSet(obj *unstructured.Unstructured) (*appsv1.ReplicaSet, error) {
typedObj := &appsv1.ReplicaSet{}
@ -100,3 +111,13 @@ func ConvertToJob(obj *unstructured.Unstructured) (*batchv1.Job, error) {
return typedObj, nil
}
// ConvertToEndpointSlice converts a EndpointSlice object from unstructured to typed.
func ConvertToEndpointSlice(obj *unstructured.Unstructured) (*discoveryv1beta1.EndpointSlice, error) {
typedObj := &discoveryv1beta1.EndpointSlice{}
if err := runtime.DefaultUnstructuredConverter.FromUnstructured(obj.UnstructuredContent(), typedObj); err != nil {
return nil, err
}
return typedObj, nil
}

View File

@ -7,7 +7,6 @@ import (
"net/http"
"strings"
batchv1 "k8s.io/api/batch/v1"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/runtime"
@ -16,6 +15,7 @@ import (
workv1alpha1 "github.com/karmada-io/karmada/pkg/apis/work/v1alpha1"
"github.com/karmada-io/karmada/pkg/util"
"github.com/karmada-io/karmada/pkg/util/helper"
)
// MutatingAdmission mutates API request if necessary.
@ -120,8 +120,7 @@ func removeIrrelevantField(workload *unstructured.Unstructured) error {
}
if workload.GetKind() == util.JobKind {
job := &batchv1.Job{}
err := runtime.DefaultUnstructuredConverter.FromUnstructured(workload.UnstructuredContent(), job)
job, err := helper.ConvertToJob(workload)
if err != nil {
return err
}