From 011f58578bbf0632194e89a417b8387beaac6bcf Mon Sep 17 00:00:00 2001 From: Guilherme Branco Date: Thu, 8 Aug 2024 07:10:14 -0300 Subject: [PATCH] chore: refactor name and parameter for classic/hcp --- .../cluster_rosa_classic_datasource.go | 2 +- .../classic/cluster_rosa_classic_resource.go | 46 +++++++++---------- .../cluster_rosa_classic_resource_test.go | 6 +-- provider/clusterrosa/hcp/resource.go | 45 +++++++++--------- 4 files changed, 47 insertions(+), 52 deletions(-) diff --git a/provider/clusterrosa/classic/cluster_rosa_classic_datasource.go b/provider/clusterrosa/classic/cluster_rosa_classic_datasource.go index ca4a5c7e..e51e12b4 100644 --- a/provider/clusterrosa/classic/cluster_rosa_classic_datasource.go +++ b/provider/clusterrosa/classic/cluster_rosa_classic_datasource.go @@ -378,7 +378,7 @@ func (r *ClusterRosaClassicDatasource) Read(ctx context.Context, request datasou object := get.Body() // Save the state: - err = populateRosaClassicClusterState(ctx, object, state, common.DefaultHttpClient{}) + err = populateRosaClassicClusterState(ctx, object, state) if err != nil { response.Diagnostics.AddError( "Can't populate cluster state", diff --git a/provider/clusterrosa/classic/cluster_rosa_classic_resource.go b/provider/clusterrosa/classic/cluster_rosa_classic_resource.go index 27213a39..3e854d5d 100644 --- a/provider/clusterrosa/classic/cluster_rosa_classic_resource.go +++ b/provider/clusterrosa/classic/cluster_rosa_classic_resource.go @@ -795,8 +795,8 @@ func (r *ClusterRosaClassicResource) Create(ctx context.Context, request resourc tflog.Debug(ctx, "begin create()") // Get the plan: - state := &ClusterRosaClassicState{} - diags := request.Plan.Get(ctx, state) + plan := &ClusterRosaClassicState{} + diags := request.Plan.Get(ctx, plan) response.Diagnostics.Append(diags...) if response.Diagnostics.HasError() { return @@ -805,7 +805,7 @@ func (r *ClusterRosaClassicResource) Create(ctx context.Context, request resourc // In case version with "openshift-v" prefix was used here, // Give a meaningful message to inform the user that it not supported any more - if common.HasValue(state.Version) && strings.HasPrefix(state.Version.ValueString(), rosa.VersionPrefix) { + if common.HasValue(plan.Version) && strings.HasPrefix(plan.Version.ValueString(), rosa.VersionPrefix) { response.Diagnostics.AddError( summary, "Openshift version must be provided without the \"openshift-v\" prefix", @@ -814,12 +814,12 @@ func (r *ClusterRosaClassicResource) Create(ctx context.Context, request resourc } channelGroup := consts.DefaultChannelGroup - if common.HasValue(state.ChannelGroup) { - channelGroup = state.ChannelGroup.ValueString() + if common.HasValue(plan.ChannelGroup) { + channelGroup = plan.ChannelGroup.ValueString() } desiredVersion := "" - if common.HasValue(state.Version) { - desiredVersion = state.Version.ValueString() + if common.HasValue(plan.Version) { + desiredVersion = plan.Version.ValueString() } version, err := r.GetAndValidateVersionInChannelGroup(ctx, rosaTypes.Classic, channelGroup, desiredVersion) if err != nil { @@ -827,31 +827,31 @@ func (r *ClusterRosaClassicResource) Create(ctx context.Context, request resourc summary, fmt.Sprintf( "Can't build cluster with name '%s': %v", - state.Name.ValueString(), err, + plan.Name.ValueString(), err, ), ) return } - err = validateHttpTokensVersion(ctx, state, version) + err = validateHttpTokensVersion(ctx, plan, version) if err != nil { response.Diagnostics.AddError( summary, fmt.Sprintf( "Can't build cluster with name '%s': %v", - state.Name.ValueString(), err, + plan.Name.ValueString(), err, ), ) return } - object, err := createClassicClusterObject(ctx, state, diags) + object, err := createClassicClusterObject(ctx, plan, diags) if err != nil { response.Diagnostics.AddError( summary, fmt.Sprintf( "Can't build cluster with name '%s': %v", - state.Name.ValueString(), err, + plan.Name.ValueString(), err, ), ) return @@ -863,7 +863,7 @@ func (r *ClusterRosaClassicResource) Create(ctx context.Context, request resourc summary, fmt.Sprintf( "Can't create cluster with name '%s': %v", - state.Name.ValueString(), err, + plan.Name.ValueString(), err, ), ) return @@ -871,7 +871,7 @@ func (r *ClusterRosaClassicResource) Create(ctx context.Context, request resourc object = add.Body() // Save initial state: - err = populateRosaClassicClusterState(ctx, object, state, common.DefaultHttpClient{}) + err = populateRosaClassicClusterState(ctx, object, plan) if err != nil { response.Diagnostics.AddError( "Can't populate cluster state", @@ -881,8 +881,9 @@ func (r *ClusterRosaClassicResource) Create(ctx context.Context, request resourc ) return } + response.Diagnostics.Append(response.State.Set(ctx, plan)...) - if common.HasValue(state.WaitForCreateComplete) && state.WaitForCreateComplete.ValueBool() { + if common.HasValue(plan.WaitForCreateComplete) && plan.WaitForCreateComplete.ValueBool() { object, err = r.ClusterWait.WaitForClusterToBeReady(ctx, object.ID(), rosa.DefaultWaitTimeoutInMinutes) if err != nil { response.Diagnostics.AddError( @@ -890,15 +891,14 @@ func (r *ClusterRosaClassicResource) Create(ctx context.Context, request resourc fmt.Sprintf("Waiting for cluster creation finished with the error %v", err), ) if object == nil { - diags = response.State.Set(ctx, state) - response.Diagnostics.Append(diags...) + response.Diagnostics.Append(response.State.Set(ctx, plan)...) return } } } // Save the state post wait completion: - err = populateRosaClassicClusterState(ctx, object, state, common.DefaultHttpClient{}) + err = populateRosaClassicClusterState(ctx, object, plan) if err != nil { response.Diagnostics.AddError( "Can't populate cluster state", @@ -908,9 +908,7 @@ func (r *ClusterRosaClassicResource) Create(ctx context.Context, request resourc ) return } - - diags = response.State.Set(ctx, state) - response.Diagnostics.Append(diags...) + response.Diagnostics.Append(response.State.Set(ctx, plan)...) } func (r *ClusterRosaClassicResource) Read(ctx context.Context, request resource.ReadRequest, @@ -947,7 +945,7 @@ func (r *ClusterRosaClassicResource) Read(ctx context.Context, request resource. object := get.Body() // Save the state: - err = populateRosaClassicClusterState(ctx, object, state, common.DefaultHttpClient{}) + err = populateRosaClassicClusterState(ctx, object, state) if err != nil { response.Diagnostics.AddError( "Can't populate cluster state", @@ -1140,7 +1138,7 @@ func (r *ClusterRosaClassicResource) Update(ctx context.Context, request resourc object := update.Body() // Update the state: - err = populateRosaClassicClusterState(ctx, object, plan, common.DefaultHttpClient{}) + err = populateRosaClassicClusterState(ctx, object, plan) if err != nil { response.Diagnostics.AddError( "Can't populate cluster state", @@ -1412,7 +1410,7 @@ func (r *ClusterRosaClassicResource) ImportState(ctx context.Context, request re } // populateRosaClassicClusterState copies the data from the API object to the Terraform state. -func populateRosaClassicClusterState(ctx context.Context, object *cmv1.Cluster, state *ClusterRosaClassicState, httpClient common.HttpClient) error { +func populateRosaClassicClusterState(ctx context.Context, object *cmv1.Cluster, state *ClusterRosaClassicState) error { state.ID = types.StringValue(object.ID()) state.ExternalID = types.StringValue(object.ExternalID()) object.API() diff --git a/provider/clusterrosa/classic/cluster_rosa_classic_resource_test.go b/provider/clusterrosa/classic/cluster_rosa_classic_resource_test.go index 4ea945ff..467bba51 100644 --- a/provider/clusterrosa/classic/cluster_rosa_classic_resource_test.go +++ b/provider/clusterrosa/classic/cluster_rosa_classic_resource_test.go @@ -237,7 +237,7 @@ var _ = Describe("Rosa Classic Sts cluster", func() { clusterObject, err := cmv1.UnmarshalCluster(clusterJsonString) Expect(err).ToNot(HaveOccurred()) - Expect(populateRosaClassicClusterState(context.Background(), clusterObject, clusterState, mockHttpClient)).To(Succeed()) + Expect(populateRosaClassicClusterState(context.Background(), clusterObject, clusterState)).To(Succeed()) Expect(clusterState.ID.ValueString()).To(Equal(clusterId)) Expect(clusterState.CloudRegion.ValueString()).To(Equal(regionId)) @@ -281,7 +281,7 @@ var _ = Describe("Rosa Classic Sts cluster", func() { clusterObject, err := cmv1.UnmarshalCluster(clusterJsonString) Expect(err).ToNot(HaveOccurred()) - err = populateRosaClassicClusterState(context.Background(), clusterObject, clusterState, mockHttpClient) + err = populateRosaClassicClusterState(context.Background(), clusterObject, clusterState) Expect(err).ToNot(HaveOccurred()) Expect(clusterState.Sts.OIDCEndpointURL.ValueString()).To(Equal("nonce.com")) }) @@ -296,7 +296,7 @@ var _ = Describe("Rosa Classic Sts cluster", func() { clusterObject, err := cmv1.UnmarshalCluster(clusterJsonString) Expect(err).ToNot(HaveOccurred()) - err = populateRosaClassicClusterState(context.Background(), clusterObject, clusterState, mockHttpClient) + err = populateRosaClassicClusterState(context.Background(), clusterObject, clusterState) Expect(err).ToNot(HaveOccurred()) Expect(clusterState.Sts.Thumbprint.ValueString()).To(Equal("")) }) diff --git a/provider/clusterrosa/hcp/resource.go b/provider/clusterrosa/hcp/resource.go index 554f4804..cef14c3b 100644 --- a/provider/clusterrosa/hcp/resource.go +++ b/provider/clusterrosa/hcp/resource.go @@ -717,16 +717,16 @@ func (r *ClusterRosaHcpResource) Create(ctx context.Context, request resource.Cr tflog.Debug(ctx, "begin create()") // Get the plan: - state := &ClusterRosaHcpState{} - diags := request.Plan.Get(ctx, state) + plan := &ClusterRosaHcpState{} + diags := request.Plan.Get(ctx, plan) response.Diagnostics.Append(diags...) if response.Diagnostics.HasError() { return } summary := "Can't build cluster" - shouldWaitCreationComplete := common.BoolWithFalseDefault(state.WaitForCreateComplete) - shouldWaitComputeNodesComplete := common.BoolWithFalseDefault(state.WaitForStdComputeNodesComplete) + shouldWaitCreationComplete := common.BoolWithFalseDefault(plan.WaitForCreateComplete) + shouldWaitComputeNodesComplete := common.BoolWithFalseDefault(plan.WaitForStdComputeNodesComplete) if shouldWaitComputeNodesComplete && !shouldWaitCreationComplete { response.Diagnostics.AddError( summary, @@ -735,8 +735,8 @@ func (r *ClusterRosaHcpResource) Create(ctx context.Context, request resource.Cr return } - hasEtcdEncrpytion := common.BoolWithFalseDefault(state.EtcdEncryption) - hasEtcdKmsKeyArn := common.HasValue(state.EtcdKmsKeyArn) && state.EtcdKmsKeyArn.ValueString() != "" + hasEtcdEncrpytion := common.BoolWithFalseDefault(plan.EtcdEncryption) + hasEtcdKmsKeyArn := common.HasValue(plan.EtcdKmsKeyArn) && plan.EtcdKmsKeyArn.ValueString() != "" if (!hasEtcdEncrpytion && hasEtcdKmsKeyArn) || (hasEtcdEncrpytion && !hasEtcdKmsKeyArn) { response.Diagnostics.AddError( summary, @@ -747,7 +747,7 @@ func (r *ClusterRosaHcpResource) Create(ctx context.Context, request resource.Cr // In case version with "openshift-v" prefix was used here, // Give a meaningful message to inform the user that it not supported any more - if common.HasValue(state.Version) && strings.HasPrefix(state.Version.ValueString(), rosa.VersionPrefix) { + if common.HasValue(plan.Version) && strings.HasPrefix(plan.Version.ValueString(), rosa.VersionPrefix) { response.Diagnostics.AddError( summary, "Openshift version must be provided without the \"openshift-v\" prefix", @@ -756,12 +756,12 @@ func (r *ClusterRosaHcpResource) Create(ctx context.Context, request resource.Cr } channelGroup := consts.DefaultChannelGroup - if common.HasValue(state.ChannelGroup) { - channelGroup = state.ChannelGroup.ValueString() + if common.HasValue(plan.ChannelGroup) { + channelGroup = plan.ChannelGroup.ValueString() } desiredVersion := "" - if common.HasValue(state.Version) { - desiredVersion = state.Version.ValueString() + if common.HasValue(plan.Version) { + desiredVersion = plan.Version.ValueString() } _, err := r.GetAndValidateVersionInChannelGroup(ctx, rosaTypes.Hcp, channelGroup, desiredVersion) if err != nil { @@ -769,19 +769,19 @@ func (r *ClusterRosaHcpResource) Create(ctx context.Context, request resource.Cr summary, fmt.Sprintf( "Can't build cluster with name '%s': %v", - state.Name.ValueString(), err, + plan.Name.ValueString(), err, ), ) return } - object, err := createHcpClusterObject(ctx, state, diags) + object, err := createHcpClusterObject(ctx, plan, diags) if err != nil { response.Diagnostics.AddError( summary, fmt.Sprintf( "Can't build cluster with name '%s': %v", - state.Name.ValueString(), err, + plan.Name.ValueString(), err, ), ) return @@ -793,7 +793,7 @@ func (r *ClusterRosaHcpResource) Create(ctx context.Context, request resource.Cr summary, fmt.Sprintf( "Can't create cluster with name '%s': %v", - state.Name.ValueString(), err, + plan.Name.ValueString(), err, ), ) return @@ -801,7 +801,7 @@ func (r *ClusterRosaHcpResource) Create(ctx context.Context, request resource.Cr object = add.Body() // Save initial state: - err = populateRosaHcpClusterState(ctx, object, state) + err = populateRosaHcpClusterState(ctx, object, plan) if err != nil { response.Diagnostics.AddError( "Can't populate cluster state", @@ -811,6 +811,7 @@ func (r *ClusterRosaHcpResource) Create(ctx context.Context, request resource.Cr ) return } + response.Diagnostics.Append(response.State.Set(ctx, plan)...) if shouldWaitCreationComplete { tflog.Info(ctx, "Waiting for cluster to get ready") @@ -821,8 +822,7 @@ func (r *ClusterRosaHcpResource) Create(ctx context.Context, request resource.Cr fmt.Sprintf("Waiting for cluster creation finished with the error %v", err), ) if object == nil { - diags = response.State.Set(ctx, state) - response.Diagnostics.Append(diags...) + response.Diagnostics.Append(response.State.Set(ctx, plan)...) return } } @@ -835,8 +835,7 @@ func (r *ClusterRosaHcpResource) Create(ctx context.Context, request resource.Cr fmt.Sprintf("Waiting for std compute nodes completion finished with the error %v", err), ) if object == nil { - diags = response.State.Set(ctx, state) - response.Diagnostics.Append(diags...) + response.Diagnostics.Append(response.State.Set(ctx, plan)...) return } } @@ -844,7 +843,7 @@ func (r *ClusterRosaHcpResource) Create(ctx context.Context, request resource.Cr } // Save the state post wait completion: - err = populateRosaHcpClusterState(ctx, object, state) + err = populateRosaHcpClusterState(ctx, object, plan) if err != nil { response.Diagnostics.AddError( "Can't populate cluster state", @@ -854,9 +853,7 @@ func (r *ClusterRosaHcpResource) Create(ctx context.Context, request resource.Cr ) return } - - diags = response.State.Set(ctx, state) - response.Diagnostics.Append(diags...) + response.Diagnostics.Append(response.State.Set(ctx, plan)...) } func (r *ClusterRosaHcpResource) Read(ctx context.Context, request resource.ReadRequest,