From 059489170801591289cf749491e68713812c7550 Mon Sep 17 00:00:00 2001 From: Srinivas Pothuraju Date: Tue, 5 Nov 2024 12:31:20 -0600 Subject: [PATCH] Use db ids of target cluster id during failover (#268) --- cmd/dr/delete_dr.go | 4 +++- cmd/dr/describe_dr.go | 4 +++- cmd/dr/failover_dr.go | 7 +++++-- cmd/dr/pause_dr.go | 4 +++- cmd/dr/restart_dr.go | 4 +++- cmd/dr/resume_dr.go | 4 +++- cmd/dr/switchover_dr.go | 4 +++- cmd/dr/update_dr.go | 4 +++- internal/client/client.go | 6 +++--- 9 files changed, 29 insertions(+), 12 deletions(-) diff --git a/cmd/dr/delete_dr.go b/cmd/dr/delete_dr.go index 4b050e7..660e451 100644 --- a/cmd/dr/delete_dr.go +++ b/cmd/dr/delete_dr.go @@ -51,10 +51,12 @@ var deleteDrCmd = &cobra.Command{ if err != nil { logrus.Fatal(err) } - drId, clusterId, err := authApi.GetDrDetailsByName(drName) + drInfo, err := authApi.GetDrDetailsByName(drName) if err != nil { logrus.Fatal(err) } + drId := drInfo.GetId() + clusterId := drInfo.GetSourceClusterId() r, err := authApi.DeleteXClusterDr(clusterId, drId).Execute() if err != nil { diff --git a/cmd/dr/describe_dr.go b/cmd/dr/describe_dr.go index 47efb0d..8f8b5bf 100644 --- a/cmd/dr/describe_dr.go +++ b/cmd/dr/describe_dr.go @@ -41,10 +41,12 @@ var describeDrCmd = &cobra.Command{ if err != nil { logrus.Fatalf("Could not get cluster data: %s", ybmAuthClient.GetApiErrorDetails(err)) } - drId, clusterId, err := authApi.GetDrDetailsByName(drName) + drInfo, err := authApi.GetDrDetailsByName(drName) if err != nil { logrus.Fatal(err) } + drId := drInfo.GetId() + clusterId := drInfo.GetSourceClusterId() drResp, r, err := authApi.GetXClusterDr(clusterId, drId).Execute() if err != nil { logrus.Debugf("Full HTTP response: %v", r) diff --git a/cmd/dr/failover_dr.go b/cmd/dr/failover_dr.go index 1d7fde0..40df313 100644 --- a/cmd/dr/failover_dr.go +++ b/cmd/dr/failover_dr.go @@ -45,10 +45,13 @@ var failoverDrCmd = &cobra.Command{ if err != nil { logrus.Fatalf("Could not get cluster data: %s", ybmAuthClient.GetApiErrorDetails(err)) } - drId, clusterId, err := authApi.GetDrDetailsByName(drName) + drInfo, err := authApi.GetDrDetailsByName(drName) if err != nil { logrus.Fatal(err) } + drId := drInfo.GetId() + sourceClusterId := drInfo.GetSourceClusterId() + clusterId := drInfo.GetTargetClusterId() namespacesResp, r, err := authApi.GetClusterNamespaces(clusterId).Execute() if err != nil { logrus.Debugf("Full HTTP response: %v", r) @@ -93,7 +96,7 @@ var failoverDrCmd = &cobra.Command{ msg := fmt.Sprintf("Failover is in progress for the DR %s ", formatter.Colorize(drName, formatter.GREEN_COLOR)) if viper.GetBool("wait") { - returnStatus, err := authApi.WaitForTaskCompletion(clusterId, ybmclient.ENTITYTYPEENUM_CLUSTER, ybmclient.TASKTYPEENUM_DR_FAILOVER, []string{"FAILED", "SUCCEEDED"}, msg) + returnStatus, err := authApi.WaitForTaskCompletion(sourceClusterId, ybmclient.ENTITYTYPEENUM_CLUSTER, ybmclient.TASKTYPEENUM_DR_FAILOVER, []string{"FAILED", "SUCCEEDED"}, msg) if err != nil { logrus.Fatalf("error when getting task status: %s", err) } diff --git a/cmd/dr/pause_dr.go b/cmd/dr/pause_dr.go index 8c220ca..b10fb47 100644 --- a/cmd/dr/pause_dr.go +++ b/cmd/dr/pause_dr.go @@ -43,10 +43,12 @@ var pauseDrCmd = &cobra.Command{ if err != nil { logrus.Fatalf("Could not get cluster data: %s", ybmAuthClient.GetApiErrorDetails(err)) } - drId, clusterId, err := authApi.GetDrDetailsByName(drName) + drInfo, err := authApi.GetDrDetailsByName(drName) if err != nil { logrus.Fatal(err) } + drId := drInfo.GetId() + clusterId := drInfo.GetSourceClusterId() pauseDrRequest := ybmclient.NewPauseDrRequestWithDefaults() pauseDrRequest.SetDurationMinutes(durationInMin) diff --git a/cmd/dr/restart_dr.go b/cmd/dr/restart_dr.go index c99e890..0c9aac6 100644 --- a/cmd/dr/restart_dr.go +++ b/cmd/dr/restart_dr.go @@ -44,10 +44,12 @@ var restartDrCmd = &cobra.Command{ if err != nil { logrus.Fatalf("Could not get cluster data: %s", ybmAuthClient.GetApiErrorDetails(err)) } - drId, clusterId, err := authApi.GetDrDetailsByName(drName) + drInfo, err := authApi.GetDrDetailsByName(drName) if err != nil { logrus.Fatal(err) } + drId := drInfo.GetId() + clusterId := drInfo.GetSourceClusterId() namespacesResp, r, err := authApi.GetClusterNamespaces(clusterId).Execute() if err != nil { logrus.Debugf("Full HTTP response: %v", r) diff --git a/cmd/dr/resume_dr.go b/cmd/dr/resume_dr.go index d7d19e4..e2b3501 100644 --- a/cmd/dr/resume_dr.go +++ b/cmd/dr/resume_dr.go @@ -42,10 +42,12 @@ var resumeDrCmd = &cobra.Command{ if err != nil { logrus.Fatalf("Could not get cluster data: %s", ybmAuthClient.GetApiErrorDetails(err)) } - drId, clusterId, err := authApi.GetDrDetailsByName(drName) + drInfo, err := authApi.GetDrDetailsByName(drName) if err != nil { logrus.Fatal(err) } + drId := drInfo.GetId() + clusterId := drInfo.GetSourceClusterId() response, err := authApi.ResumeXClusterDr(clusterId, drId).Execute() if err != nil { diff --git a/cmd/dr/switchover_dr.go b/cmd/dr/switchover_dr.go index f2e8eee..3ac49a4 100644 --- a/cmd/dr/switchover_dr.go +++ b/cmd/dr/switchover_dr.go @@ -42,10 +42,12 @@ var switchoverDrCmd = &cobra.Command{ if err != nil { logrus.Fatalf("Could not get cluster data: %s", ybmAuthClient.GetApiErrorDetails(err)) } - drId, clusterId, err := authApi.GetDrDetailsByName(drName) + drInfo, err := authApi.GetDrDetailsByName(drName) if err != nil { logrus.Fatal(err) } + drId := drInfo.GetId() + clusterId := drInfo.GetSourceClusterId() response, err := authApi.SwitchoverXClusterDr(clusterId, drId).Execute() if err != nil { diff --git a/cmd/dr/update_dr.go b/cmd/dr/update_dr.go index 6dec645..6626c94 100644 --- a/cmd/dr/update_dr.go +++ b/cmd/dr/update_dr.go @@ -44,10 +44,12 @@ var updateDrCmd = &cobra.Command{ if err != nil { logrus.Fatalf("Could not get cluster data: %s", ybmAuthClient.GetApiErrorDetails(err)) } - drId, clusterId, err := authApi.GetDrDetailsByName(drName) + drInfo, err := authApi.GetDrDetailsByName(drName) if err != nil { logrus.Fatal(err) } + drId := drInfo.GetId() + clusterId := drInfo.GetSourceClusterId() namespacesResp, r, err := authApi.GetClusterNamespaces(clusterId).Execute() if err != nil { logrus.Debugf("Full HTTP response: %v", r) diff --git a/internal/client/client.go b/internal/client/client.go index 617d1dc..c617509 100644 --- a/internal/client/client.go +++ b/internal/client/client.go @@ -587,13 +587,13 @@ func (a *AuthApiClient) GetClusterIdByName(clusterName string) (string, error) { return "", fmt.Errorf("could not get cluster data for cluster name: %s", clusterName) } -func (a *AuthApiClient) GetDrDetailsByName(drName string) (string, string, error) { +func (a *AuthApiClient) GetDrDetailsByName(drName string) (ybmclient.XClusterDrInfo, error) { drData, err := a.GetDrByName(drName) if err == nil { - return drData.Info.GetId(), drData.Info.GetSourceClusterId(), nil + return drData.GetInfo(), nil } - return "", "", fmt.Errorf("Could not get data for the DR config %s", drName) + return ybmclient.XClusterDrInfo{}, fmt.Errorf("Could not get data for the DR config %s", drName) } func (a *AuthApiClient) CreateCluster() ybmclient.ApiCreateClusterRequest {