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