package tidbscaler

import (
	"fmt"

	"github.com/tidbcloud/aws-shared-provider/pkg/types"
	corev1 "k8s.io/api/core/v1"
	apitypes "k8s.io/apimachinery/pkg/types"
	"sigs.k8s.io/controller-runtime/pkg/client"
)

func (ts *TidbScaler) UnlockIfNeed() {
	tidbServerPodTemplateCm := &corev1.ConfigMap{}
	if err := ts.client.Get(ts.ctx,
		client.ObjectKey{
			Name:      types.TidbServerPodTemplateCm,
			Namespace: ts.pool.Namespace(),
		}, tidbServerPodTemplateCm); err != nil {
		ts.Error(err, "UnlockIfNeed Get TidbServerPodTemplateCm")
		return
	}

	if tidbServerPodTemplateCm.Annotations[types.AnnoTidbScalerLock] != "" {
		data := fmt.Sprintf(`{"metadata":{"annotations":{"%s":null}}}`, types.AnnoTidbScalerLock)
		if err := ts.client.Patch(ts.ctx, tidbServerPodTemplateCm,
			client.RawPatch(apitypes.StrategicMergePatchType, []byte(data))); err != nil {
			ts.Error(err, "UnlockIfNeed Patch TidbServerPodTemplateCm")
			return
		}
	}
}
