Merge pull request #1277 from iawia002/unstructured
Clean up the code that converts Unstructured objects
This commit is contained in:
commit
abc767bfcd
|
@ -22,6 +22,7 @@ import (
|
|||
"github.com/karmada-io/karmada/pkg/karmadactl"
|
||||
"github.com/karmada-io/karmada/pkg/karmadactl/options"
|
||||
"github.com/karmada-io/karmada/pkg/util"
|
||||
"github.com/karmada-io/karmada/pkg/util/helper"
|
||||
"github.com/karmada-io/karmada/pkg/util/informermanager"
|
||||
"github.com/karmada-io/karmada/pkg/util/informermanager/keys"
|
||||
)
|
||||
|
@ -143,13 +144,13 @@ func (d *ClusterDetector) GetUnstructuredObject(objectKey keys.ClusterWideKey) (
|
|||
return nil, err
|
||||
}
|
||||
|
||||
uncastObj, err := runtime.DefaultUnstructuredConverter.ToUnstructured(object)
|
||||
unstructuredObj, err := helper.ToUnstructured(object)
|
||||
if err != nil {
|
||||
klog.Errorf("Failed to transform object(%s), error: %v", objectKey, err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &unstructured.Unstructured{Object: uncastObj}, nil
|
||||
return unstructuredObj, nil
|
||||
}
|
||||
|
||||
func (d *ClusterDetector) joinClusterAPICluster(clusterWideKey keys.ClusterWideKey) error {
|
||||
|
|
|
@ -7,8 +7,6 @@ import (
|
|||
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||
"k8s.io/apimachinery/pkg/api/meta"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
"k8s.io/apimachinery/pkg/types"
|
||||
"k8s.io/client-go/dynamic"
|
||||
|
@ -83,12 +81,11 @@ func (c *HorizontalPodAutoscalerController) syncHPA(hpa *autoscalingv1.Horizonta
|
|||
|
||||
// buildWorks transforms hpa obj to unstructured, creates or updates Works in the target execution namespaces.
|
||||
func (c *HorizontalPodAutoscalerController) buildWorks(hpa *autoscalingv1.HorizontalPodAutoscaler, clusters []string) error {
|
||||
uncastObj, err := runtime.DefaultUnstructuredConverter.ToUnstructured(hpa)
|
||||
hpaObj, err := helper.ToUnstructured(hpa)
|
||||
if err != nil {
|
||||
klog.Errorf("Failed to transform hpa %s/%s. Error: %v", hpa.GetNamespace(), hpa.GetName(), err)
|
||||
return nil
|
||||
}
|
||||
hpaObj := &unstructured.Unstructured{Object: uncastObj}
|
||||
for _, clusterName := range clusters {
|
||||
workNamespace, err := names.GenerateExecutionSpaceName(clusterName)
|
||||
if err != nil {
|
||||
|
@ -137,12 +134,11 @@ func (c *HorizontalPodAutoscalerController) getTargetPlacement(objRef autoscalin
|
|||
return nil, err
|
||||
}
|
||||
}
|
||||
uncastObj, err := runtime.DefaultUnstructuredConverter.ToUnstructured(workload)
|
||||
unstructuredWorkLoad, err := helper.ToUnstructured(workload)
|
||||
if err != nil {
|
||||
klog.Errorf("Failed to transform object(%s/%s): %v", namespace, objRef.Name, err)
|
||||
return nil, err
|
||||
}
|
||||
unstructuredWorkLoad := unstructured.Unstructured{Object: uncastObj}
|
||||
bindingName := names.GenerateBindingName(unstructuredWorkLoad.GetKind(), unstructuredWorkLoad.GetName())
|
||||
binding := &workv1alpha2.ResourceBinding{}
|
||||
namespacedName := types.NamespacedName{
|
||||
|
|
|
@ -6,8 +6,6 @@ import (
|
|||
corev1 "k8s.io/api/core/v1"
|
||||
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/types"
|
||||
"k8s.io/client-go/tools/record"
|
||||
"k8s.io/klog/v2"
|
||||
|
@ -91,12 +89,11 @@ func (c *Controller) namespaceShouldBeSynced(namespace string) bool {
|
|||
}
|
||||
|
||||
func (c *Controller) buildWorks(namespace *corev1.Namespace, clusters []clusterv1alpha1.Cluster) error {
|
||||
uncastObj, err := runtime.DefaultUnstructuredConverter.ToUnstructured(namespace)
|
||||
namespaceObj, err := helper.ToUnstructured(namespace)
|
||||
if err != nil {
|
||||
klog.Errorf("Failed to transform namespace %s. Error: %v", namespace.GetName(), err)
|
||||
return nil
|
||||
}
|
||||
namespaceObj := &unstructured.Unstructured{Object: uncastObj}
|
||||
|
||||
for _, cluster := range clusters {
|
||||
workNamespace, err := names.GenerateExecutionSpaceName(cluster.Name)
|
||||
|
|
|
@ -7,7 +7,6 @@ import (
|
|||
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/types"
|
||||
utilerrors "k8s.io/apimachinery/pkg/util/errors"
|
||||
"k8s.io/apimachinery/pkg/util/sets"
|
||||
|
@ -147,13 +146,12 @@ func (c *Controller) buildImpersonationClusterRole(cluster *clusterv1alpha1.Clus
|
|||
Rules: rules,
|
||||
}
|
||||
|
||||
uncastObj, err := runtime.DefaultUnstructuredConverter.ToUnstructured(impersonationClusterRole)
|
||||
clusterRoleObj, err := helper.ToUnstructured(impersonationClusterRole)
|
||||
if err != nil {
|
||||
klog.Errorf("Failed to transform clusterrole %s. Error: %v", impersonationClusterRole.GetName(), err)
|
||||
return nil
|
||||
}
|
||||
|
||||
clusterRoleObj := &unstructured.Unstructured{Object: uncastObj}
|
||||
return c.buildWorks(cluster, clusterRoleObj)
|
||||
}
|
||||
|
||||
|
@ -180,13 +178,12 @@ func (c *Controller) buildImpersonationClusterRoleBinding(cluster *clusterv1alph
|
|||
},
|
||||
}
|
||||
|
||||
uncastObj, err := runtime.DefaultUnstructuredConverter.ToUnstructured(impersonatorClusterRoleBinding)
|
||||
clusterRoleBindingObj, err := helper.ToUnstructured(impersonatorClusterRoleBinding)
|
||||
if err != nil {
|
||||
klog.Errorf("Failed to transform clusterrolebinding %s. Error: %v", impersonatorClusterRoleBinding.GetName(), err)
|
||||
return nil
|
||||
}
|
||||
|
||||
clusterRoleBindingObj := &unstructured.Unstructured{Object: uncastObj}
|
||||
return c.buildWorks(cluster, clusterRoleBindingObj)
|
||||
}
|
||||
|
||||
|
|
|
@ -568,13 +568,13 @@ func (d *ResourceDetector) GetUnstructuredObject(objectKey keys.ClusterWideKey)
|
|||
return nil, err
|
||||
}
|
||||
|
||||
uncastObj, err := runtime.DefaultUnstructuredConverter.ToUnstructured(object)
|
||||
unstructuredObj, err := helper.ToUnstructured(object)
|
||||
if err != nil {
|
||||
klog.Errorf("Failed to transform object(%s), error: %v", objectKey, err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &unstructured.Unstructured{Object: uncastObj}, nil
|
||||
return unstructuredObj, nil
|
||||
}
|
||||
|
||||
// GetObject retrieves object from local cache.
|
||||
|
|
|
@ -34,6 +34,7 @@ import (
|
|||
workv1alpha2 "github.com/karmada-io/karmada/pkg/apis/work/v1alpha2"
|
||||
"github.com/karmada-io/karmada/pkg/karmadactl/options"
|
||||
"github.com/karmada-io/karmada/pkg/util/gclient"
|
||||
"github.com/karmada-io/karmada/pkg/util/helper"
|
||||
)
|
||||
|
||||
const printColumnClusterNum = 1
|
||||
|
@ -239,11 +240,10 @@ func (g *CommandGetOptions) Run(karmadaConfig KarmadaConfig, cmd *cobra.Command,
|
|||
fmt.Println(msg)
|
||||
return nil
|
||||
}
|
||||
printObj, err := runtime.DefaultUnstructuredConverter.ToUnstructured(table)
|
||||
printObj, err := helper.ToUnstructured(table)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
newPrintObj := &unstructured.Unstructured{Object: printObj}
|
||||
|
||||
var printer printers.ResourcePrinter
|
||||
var lastMapping *meta.RESTMapping
|
||||
|
@ -275,9 +275,9 @@ func (g *CommandGetOptions) Run(karmadaConfig KarmadaConfig, cmd *cobra.Command,
|
|||
}
|
||||
return err
|
||||
}
|
||||
//lastMapping = mapping
|
||||
// lastMapping = mapping
|
||||
}
|
||||
err = printer.PrintObj(newPrintObj, w)
|
||||
err = printer.PrintObj(printObj, w)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -5,9 +5,7 @@ import (
|
|||
"sort"
|
||||
"sync/atomic"
|
||||
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||
"k8s.io/apimachinery/pkg/labels"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
|
||||
"k8s.io/client-go/tools/cache"
|
||||
|
@ -89,13 +87,13 @@ func (m *interpreterConfigManager) updateConfiguration() {
|
|||
|
||||
configs := make([]*configv1alpha1.ResourceInterpreterWebhookConfiguration, 0)
|
||||
for _, c := range configurations {
|
||||
unstructuredConfig, err := runtime.DefaultUnstructuredConverter.ToUnstructured(c)
|
||||
unstructuredConfig, err := helper.ToUnstructured(c)
|
||||
if err != nil {
|
||||
klog.Errorf("Failed to transform ResourceInterpreterWebhookConfiguration: %w", err)
|
||||
return
|
||||
}
|
||||
|
||||
config, err := helper.ConvertToResourceExploringWebhookConfiguration(&unstructured.Unstructured{Object: unstructuredConfig})
|
||||
config, err := helper.ConvertToResourceExploringWebhookConfiguration(unstructuredConfig)
|
||||
if err != nil {
|
||||
klog.Errorf("Failed to convert object(%s), err", config.GroupVersionKind().String(), err)
|
||||
return
|
||||
|
|
|
@ -6,7 +6,6 @@ import (
|
|||
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"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
|
||||
"github.com/karmada-io/karmada/pkg/util"
|
||||
|
@ -61,13 +60,12 @@ func retainPodFields(desired, observed *unstructured.Unstructured) (*unstructure
|
|||
}
|
||||
}
|
||||
|
||||
unCastObj, err := runtime.DefaultUnstructuredConverter.ToUnstructured(desiredPod)
|
||||
unstructuredObj, err := helper.ToUnstructured(desiredPod)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to transform Pod: %v", err)
|
||||
}
|
||||
|
||||
desired.Object = unCastObj
|
||||
return desired, nil
|
||||
return unstructuredObj, nil
|
||||
}
|
||||
|
||||
// retainServiceFields updates the desired service object with values retained from the cluster object.
|
||||
|
|
|
@ -171,13 +171,13 @@ func FetchWorkload(dynamicClient dynamic.Interface, informerManager informermana
|
|||
}
|
||||
}
|
||||
|
||||
unstructuredWorkLoad, err := runtime.DefaultUnstructuredConverter.ToUnstructured(workload)
|
||||
unstructuredWorkLoad, err := ToUnstructured(workload)
|
||||
if err != nil {
|
||||
klog.Errorf("Failed to transform object(%s/%s): %v", resource.Namespace, resource.Name, err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &unstructured.Unstructured{Object: unstructuredWorkLoad}, nil
|
||||
return unstructuredWorkLoad, nil
|
||||
}
|
||||
|
||||
// GetClusterResourceBindings returns a ClusterResourceBindingList by labels.
|
||||
|
|
|
@ -7,10 +7,10 @@ import (
|
|||
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
|
||||
clusterv1alpha1 "github.com/karmada-io/karmada/pkg/apis/cluster/v1alpha1"
|
||||
policyv1alpha1 "github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1"
|
||||
utilhelper "github.com/karmada-io/karmada/pkg/util/helper"
|
||||
"github.com/karmada-io/karmada/test/helper"
|
||||
)
|
||||
|
||||
|
@ -19,8 +19,7 @@ func TestGetMatchingOverridePolicies(t *testing.T) {
|
|||
cluster2 := helper.NewCluster("cluster2")
|
||||
|
||||
deployment := helper.NewDeployment(metav1.NamespaceDefault, "test")
|
||||
uncastObj, _ := runtime.DefaultUnstructuredConverter.ToUnstructured(deployment)
|
||||
deploymentObj := &unstructured.Unstructured{Object: uncastObj}
|
||||
deploymentObj, _ := utilhelper.ToUnstructured(deployment)
|
||||
|
||||
overriders1 := policyv1alpha1.Overriders{
|
||||
Plaintext: []policyv1alpha1.PlaintextOverrider{
|
||||
|
|
|
@ -9,8 +9,6 @@ import (
|
|||
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
||||
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
"k8s.io/client-go/dynamic"
|
||||
"k8s.io/klog/v2"
|
||||
|
@ -24,10 +22,10 @@ var crdGVR = schema.GroupVersionResource{Group: "apiextensions.k8s.io", Version:
|
|||
// CreateCRD create CustomResourceDefinition with dynamic client.
|
||||
func CreateCRD(client dynamic.Interface, crd *apiextensionsv1.CustomResourceDefinition) {
|
||||
ginkgo.By(fmt.Sprintf("Creating crd(%s)", crd.Name), func() {
|
||||
unstructObj, err := runtime.DefaultUnstructuredConverter.ToUnstructured(crd)
|
||||
unstructuredObj, err := helper.ToUnstructured(crd)
|
||||
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
|
||||
|
||||
_, err = client.Resource(crdGVR).Create(context.TODO(), &unstructured.Unstructured{Object: unstructObj}, metav1.CreateOptions{})
|
||||
_, err = client.Resource(crdGVR).Create(context.TODO(), unstructuredObj, metav1.CreateOptions{})
|
||||
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
|
||||
})
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@ import (
|
|||
"k8s.io/klog/v2"
|
||||
|
||||
workloadv1alpha1 "github.com/karmada-io/karmada/examples/customresourceinterpreter/apis/workload/v1alpha1"
|
||||
"github.com/karmada-io/karmada/pkg/util/helper"
|
||||
)
|
||||
|
||||
var workloadGVR = workloadv1alpha1.SchemeGroupVersion.WithResource("workloads")
|
||||
|
@ -22,10 +23,10 @@ var workloadGVR = workloadv1alpha1.SchemeGroupVersion.WithResource("workloads")
|
|||
// CreateWorkload create Workload with dynamic client
|
||||
func CreateWorkload(client dynamic.Interface, workload *workloadv1alpha1.Workload) {
|
||||
ginkgo.By(fmt.Sprintf("Creating workload(%s/%s)", workload.Namespace, workload.Name), func() {
|
||||
unstructuredObj, err := runtime.DefaultUnstructuredConverter.ToUnstructured(workload)
|
||||
unstructuredObj, err := helper.ToUnstructured(workload)
|
||||
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
|
||||
|
||||
_, err = client.Resource(workloadGVR).Namespace(workload.Namespace).Create(context.TODO(), &unstructured.Unstructured{Object: unstructuredObj}, metav1.CreateOptions{})
|
||||
_, err = client.Resource(workloadGVR).Namespace(workload.Namespace).Create(context.TODO(), unstructuredObj, metav1.CreateOptions{})
|
||||
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
|
||||
})
|
||||
}
|
||||
|
@ -33,11 +34,11 @@ func CreateWorkload(client dynamic.Interface, workload *workloadv1alpha1.Workloa
|
|||
// UpdateWorkload update Workload with dynamic client
|
||||
func UpdateWorkload(client dynamic.Interface, workload *workloadv1alpha1.Workload, clusterName string) {
|
||||
ginkgo.By(fmt.Sprintf("Update workload(%s/%s) in cluster(%s)", workload.Namespace, workload.Name, clusterName), func() {
|
||||
newUnstructuredObj, err := runtime.DefaultUnstructuredConverter.ToUnstructured(workload)
|
||||
newUnstructuredObj, err := helper.ToUnstructured(workload)
|
||||
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
|
||||
|
||||
gomega.Eventually(func() error {
|
||||
_, err = client.Resource(workloadGVR).Namespace(workload.Namespace).Update(context.TODO(), &unstructured.Unstructured{Object: newUnstructuredObj}, metav1.UpdateOptions{})
|
||||
_, err = client.Resource(workloadGVR).Namespace(workload.Namespace).Update(context.TODO(), newUnstructuredObj, metav1.UpdateOptions{})
|
||||
return err
|
||||
}, pollTimeout, pollInterval).ShouldNot(gomega.HaveOccurred())
|
||||
})
|
||||
|
|
|
@ -13,8 +13,6 @@ import (
|
|||
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||
"k8s.io/apimachinery/pkg/api/meta"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
"k8s.io/apimachinery/pkg/types"
|
||||
"k8s.io/apimachinery/pkg/util/rand"
|
||||
|
@ -27,6 +25,7 @@ import (
|
|||
policyv1alpha1 "github.com/karmada-io/karmada/pkg/apis/policy/v1alpha1"
|
||||
workv1alpha2 "github.com/karmada-io/karmada/pkg/apis/work/v1alpha2"
|
||||
"github.com/karmada-io/karmada/pkg/util"
|
||||
utilhelper "github.com/karmada-io/karmada/pkg/util/helper"
|
||||
"github.com/karmada-io/karmada/pkg/util/names"
|
||||
"github.com/karmada-io/karmada/test/e2e/framework"
|
||||
"github.com/karmada-io/karmada/test/helper"
|
||||
|
@ -744,9 +743,8 @@ var _ = ginkgo.Describe("[JobReplicaScheduling] JobReplicaSchedulingStrategy tes
|
|||
|
||||
// get the resource binding associated with the workload
|
||||
func getResourceBinding(workload interface{}) (*workv1alpha2.ResourceBinding, error) {
|
||||
uncastObj, err := runtime.DefaultUnstructuredConverter.ToUnstructured(workload)
|
||||
obj, err := utilhelper.ToUnstructured(workload)
|
||||
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
|
||||
obj := unstructured.Unstructured{Object: uncastObj}
|
||||
bindingName := names.GenerateBindingName(obj.GetKind(), obj.GetName())
|
||||
binding := &workv1alpha2.ResourceBinding{}
|
||||
|
||||
|
@ -756,9 +754,8 @@ func getResourceBinding(workload interface{}) (*workv1alpha2.ResourceBinding, er
|
|||
|
||||
// get the cluster resource binding associated with the workload
|
||||
func getClusterResourceBinding(workload interface{}) (*workv1alpha2.ClusterResourceBinding, error) {
|
||||
uncastObj, err := runtime.DefaultUnstructuredConverter.ToUnstructured(workload)
|
||||
obj, err := utilhelper.ToUnstructured(workload)
|
||||
gomega.Expect(err).ShouldNot(gomega.HaveOccurred())
|
||||
obj := unstructured.Unstructured{Object: uncastObj}
|
||||
bindingName := names.GenerateBindingName(obj.GetKind(), obj.GetName())
|
||||
binding := &workv1alpha2.ClusterResourceBinding{}
|
||||
|
||||
|
|
Loading…
Reference in New Issue