Skip to content

Commit

Permalink
refactor(auto-migration): rebase
Browse files Browse the repository at this point in the history
  • Loading branch information
JackZxj committed Jul 19, 2023
1 parent 8c04797 commit cb248a7
Showing 1 changed file with 13 additions and 12 deletions.
25 changes: 13 additions & 12 deletions pkg/controllers/automigration/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ func NewAutoMigrationController(
// Only need to handle UnschedulableThreshold updates
// Addition and deletion will be triggered by the target resources.
UpdateFunc: func(oldFedObj, newFedObj interface{}) {
oldObj, newObj := oldFedObj.(*fedcorev1a1.GenericFederatedObject), newFedObj.(*fedcorev1a1.GenericFederatedObject)
oldObj, newObj := oldFedObj.(fedcorev1a1.GenericFederatedObject), newFedObj.(fedcorev1a1.GenericFederatedObject)
oldThreshold := oldObj.GetAnnotations()[common.PodUnschedulableThresholdAnnotation]
newThreshold := newObj.GetAnnotations()[common.PodUnschedulableThresholdAnnotation]
if oldThreshold != newThreshold {
Expand Down Expand Up @@ -207,7 +207,7 @@ func (c *Controller) reconcile(ctx context.Context, qualifiedName common.Qualifi
keyedLogger.V(3).Info("Finished reconcile", "duration", time.Since(startTime), "status", status)
}()

var fedObject *fedcorev1a1.GenericFederatedObject
var fedObject fedcorev1a1.GenericFederatedObject
var err error
if qualifiedName.Namespace != "" {
fedObject, err = getFederatedObjectFromStore(c.federatedObjectInformer.Informer().GetStore(), key)
Expand Down Expand Up @@ -275,15 +275,16 @@ func (c *Controller) reconcile(ctx context.Context, qualifiedName common.Qualifi
fedObject.SetAnnotations(annotations)

keyedLogger.V(1).Info("Updating federated object with auto migration information", "estimatedCapacity", estimatedCapacity)
// TODO: use the adapter
if qualifiedName.Namespace != "" {
federatedObject := fedcorev1a1.FederatedObject(*fedObject.DeepCopy())
obj := fedObject.(*fedcorev1a1.FederatedObject)
_, err = c.federatedObjectClient.
FederatedObjects(qualifiedName.Namespace).
Update(ctx, &federatedObject, metav1.UpdateOptions{})
Update(ctx, obj, metav1.UpdateOptions{})
} else {
clusterFederatedObject := fedcorev1a1.ClusterFederatedObject(*fedObject.DeepCopy())
obj := fedObject.(*fedcorev1a1.ClusterFederatedObject)
_, err = c.clusterFederatedObjectClient.
Update(ctx, &clusterFederatedObject, metav1.UpdateOptions{})
Update(ctx, obj, metav1.UpdateOptions{})
}

if err != nil {
Expand Down Expand Up @@ -521,7 +522,7 @@ func (c *Controller) getSourceObjectFromCluster(
}

func (c *Controller) getTargetObjectsIfAutoMigrationEnabled(
fedObject *fedcorev1a1.GenericFederatedObject,
fedObject fedcorev1a1.GenericFederatedObject,
) (clusterObjs []util.FederatedObject, ftc *fedcorev1a1.FederatedTypeConfig, unschedulableThreshold *time.Duration, err error) {
// PodUnschedulableThresholdAnnotation is set by the scheduler. Its presence determines whether auto migration is enabled.
if value, exists := fedObject.GetAnnotations()[common.PodUnschedulableThresholdAnnotation]; exists {
Expand All @@ -534,7 +535,7 @@ func (c *Controller) getTargetObjectsIfAutoMigrationEnabled(
}

objectMeta := &metav1.PartialObjectMetadata{}
if err = json.Unmarshal(fedObject.Spec.Template.Raw, objectMeta); err != nil {
if err = json.Unmarshal(fedObject.GetSpec().Template.Raw, objectMeta); err != nil {
err = fmt.Errorf("failed to unmarshall template of federated object: %w", err)
return nil, nil, nil, err
}
Expand All @@ -555,7 +556,7 @@ func (c *Controller) getTargetObjectsIfAutoMigrationEnabled(
return nil, nil, nil, nil
}

for _, placement := range fedObject.Spec.Placements {
for _, placement := range fedObject.GetSpec().Placements {
for _, cluster := range placement.Placement {
lister, synced, exist := c.federatedInformer.GetResourceLister(gvk, cluster.Cluster)
if !exist || !synced() {
Expand Down Expand Up @@ -687,14 +688,14 @@ func isAutoMigrationEnabled(typeConfig *fedcorev1a1.FederatedTypeConfig) bool {
return typeConfig.Spec.AutoMigration != nil && typeConfig.Spec.AutoMigration.Enabled
}

func getFederatedObjectFromStore(store cache.Store, key string) (*fedcorev1a1.GenericFederatedObject, error) {
func getFederatedObjectFromStore(store cache.Store, key string) (fedcorev1a1.GenericFederatedObject, error) {
obj, exists, err := store.GetByKey(key)
if err != nil || !exists {
return nil, err
}
t, ok := obj.(*fedcorev1a1.GenericFederatedObject)
t, ok := obj.(fedcorev1a1.GenericFederatedObject)
if !ok {
return nil, nil
}
return t.DeepCopy(), nil
return t.DeepCopyGenericFederatedObject(), nil
}

0 comments on commit cb248a7

Please sign in to comment.