Skip to content

Commit edcab5d

Browse files
Addressed initial review comments
1 parent c2d8d61 commit edcab5d

File tree

2 files changed

+51
-10
lines changed

2 files changed

+51
-10
lines changed

internal/resources/ekscluster/data_source.go

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -83,32 +83,49 @@ func dataSourceTMCEKSClusterRead(ctx context.Context, d *schema.ResourceData, m
8383
}
8484

8585
if isWaitForKubeconfig(d) {
86-
clusFullName := &clustermodel.VmwareTanzuManageV1alpha1ClusterFullName{Name: resp.EksCluster.Spec.AgentName, OrgID: clusterFn.OrgID, ManagementClusterName: "eks", ProvisionerName: "eks"}
86+
clusFullName := &clustermodel.VmwareTanzuManageV1alpha1ClusterFullName{
87+
Name: resp.EksCluster.Spec.AgentName,
88+
OrgID: clusterFn.OrgID,
89+
ManagementClusterName: "eks",
90+
ProvisionerName: "eks",
91+
}
8792
clusterResp, err := config.TMCConnection.ClusterResourceService.ManageV1alpha1ClusterResourceServiceGet(clusFullName)
8893
// nolint: wsl
8994
if err != nil {
90-
log.Printf("Unable to get Tanzu Mission Control cluster entry, name : %s", clusterFn.Name)
91-
return true, nil
95+
log.Printf("Unable to get Tanzu Mission Control cluster entry, name : %s, error : %s", clusterFn.Name, err.Error())
96+
return true, err
9297
}
9398

94-
if !isManagemetClusterHealthy(clusterResp) {
99+
mgmtClusterHealthy, err := isManagemetClusterHealthy(clusterResp)
100+
if err != nil {
95101
log.Printf("[DEBUG] waiting for cluster(%s) to be in Healthy status", clusterFn.Name)
96102
return true, nil
103+
} else {
104+
if !mgmtClusterHealthy {
105+
log.Printf("[DEBUG] waiting for cluster(%s) to be in Healthy status", clusterFn.Name)
106+
return true, nil
107+
}
97108
}
98109

99110
fn := &configModels.VmwareTanzuManageV1alpha1ClusterFullName{
100111
ManagementClusterName: "eks",
101112
ProvisionerName: "eks",
102113
Name: resp.EksCluster.Spec.AgentName,
103-
OrgID: "",
104114
}
105115
resp, err := config.TMCConnection.KubeConfigResourceService.KubeconfigServiceGet(fn)
116+
if err != nil {
117+
log.Printf("Unable to get Tanzu Mission Control Kubeconfig entry, name : %s, error : %s", fn.Name, err.Error())
118+
return true, err
119+
}
106120

107121
if kubeConfigReady(err, resp) {
108122
if err = d.Set(kubeconfigKey, resp.Kubeconfig); err != nil {
109-
log.Printf("Failed to set Kubeconfig")
110-
return true, nil
123+
log.Printf("Failed to set Kubeconfig for cluster %s, error : %s", clusterFn.Name, err.Error())
124+
return false, err
111125
}
126+
} else {
127+
log.Printf("[DEBUG] waiting for cluster(%s)'s Kubeconfig to be in Ready status", clusterFn.Name)
128+
return true, nil
112129
}
113130
}
114131

@@ -157,8 +174,16 @@ func dataSourceTMCEKSClusterRead(ctx context.Context, d *schema.ResourceData, m
157174
return diags
158175
}
159176

160-
func isManagemetClusterHealthy(cluster *clustermodel.VmwareTanzuManageV1alpha1ClusterGetClusterResponse) bool {
161-
return cluster.Cluster.Status.Health != nil && *cluster.Cluster.Status.Health == clustermodel.VmwareTanzuManageV1alpha1CommonClusterHealthHEALTHY
177+
func isManagemetClusterHealthy(cluster *clustermodel.VmwareTanzuManageV1alpha1ClusterGetClusterResponse) (bool, error) {
178+
if cluster == nil || cluster.Cluster == nil || cluster.Cluster.Status == nil || cluster.Cluster.Status.Health == nil {
179+
return false, errors.New("cluster data is invalid or nil")
180+
}
181+
182+
if *cluster.Cluster.Status.Health == clustermodel.VmwareTanzuManageV1alpha1CommonClusterHealthHEALTHY {
183+
return true, nil
184+
}
185+
186+
return false, nil
162187
}
163188

164189
func kubeConfigReady(err error, resp *configModels.VmwareTanzuManageV1alpha1ClusterKubeconfigGetKubeconfigResponse) bool {

internal/resources/ekscluster/data_source_test.go

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ package ekscluster
88
import (
99
"testing"
1010

11+
"github.com/pkg/errors"
1112
"github.com/stretchr/testify/require"
1213

1314
clustermodel "github.com/vmware/terraform-provider-tanzu-mission-control/internal/models/cluster"
@@ -92,11 +93,26 @@ func TestIsManagemetClusterHealthy(t *testing.T) {
9293
response: true,
9394
err: nil,
9495
},
96+
{
97+
name: "Error",
98+
cluster: &clustermodel.VmwareTanzuManageV1alpha1ClusterGetClusterResponse{
99+
Cluster: &clustermodel.VmwareTanzuManageV1alpha1ClusterCluster{
100+
Status: nil,
101+
},
102+
},
103+
response: false,
104+
err: errors.New("cluster data is invalid or nil"),
105+
},
95106
}
96107

97108
for _, test := range tests {
98109
t.Run(test.name, func(t *testing.T) {
99-
if test.response != isManagemetClusterHealthy(test.cluster) {
110+
result, err := isManagemetClusterHealthy(test.cluster)
111+
if err != nil {
112+
if err.Error() != test.err.Error() {
113+
t.Errorf("expected error to match")
114+
}
115+
} else if test.response != result {
100116
t.Errorf("expected function output to match")
101117
}
102118
})

0 commit comments

Comments
 (0)