Skip to content

Commit e58605b

Browse files
Fix: Release Creation Strategy mapping on project update (#38)
1 parent 8e19a30 commit e58605b

File tree

2 files changed

+24
-14
lines changed

2 files changed

+24
-14
lines changed

octopusdeploy_framework/resource_project_expand.go

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111
"github.com/OctopusDeploy/go-octopusdeploy/v2/pkg/packages"
1212
"github.com/OctopusDeploy/go-octopusdeploy/v2/pkg/projects"
1313
"github.com/hashicorp/terraform-plugin-framework/types"
14-
"github.com/hashicorp/terraform-plugin-framework/types/basetypes"
1514
"github.com/hashicorp/terraform-plugin-log/tflog"
1615
)
1716

@@ -109,9 +108,15 @@ func expandProject(ctx context.Context, model projectResourceModel) *projects.Pr
109108
}
110109

111110
if !model.ReleaseCreationStrategy.IsNull() {
112-
var strategy releaseCreationStrategyModel
113-
model.ReleaseCreationStrategy.ElementsAs(ctx, &strategy, false)
114-
project.ReleaseCreationStrategy = expandReleaseCreationStrategy(strategy)
111+
var strategyList []releaseCreationStrategyModel
112+
diags := model.ReleaseCreationStrategy.ElementsAs(ctx, &strategyList, false)
113+
if diags.HasError() {
114+
tflog.Error(ctx, fmt.Sprintf("Error converting release creation strategy settings: %v\n", diags))
115+
} else {
116+
if len(strategyList) > 0 {
117+
project.ReleaseCreationStrategy = expandReleaseCreationStrategy(strategyList[0])
118+
}
119+
}
115120
}
116121

117122
if !model.Template.IsNull() {
@@ -306,20 +311,25 @@ func expandReleaseCreationStrategy(model releaseCreationStrategyModel) *projects
306311
ChannelID: model.ChannelID.ValueString(),
307312
ReleaseCreationPackageStepID: model.ReleaseCreationPackageStepID.ValueString(),
308313
}
309-
if !model.ReleaseCreationPackage.IsNull() {
310-
var releaseCreationPackage deploymentActionPackageModel
311-
model.ReleaseCreationPackage.As(context.Background(), &releaseCreationPackage, basetypes.ObjectAsOptions{})
312-
strategy.ReleaseCreationPackage = expandDeploymentActionPackage(releaseCreationPackage)
314+
if model.ReleaseCreationPackage != nil {
315+
strategy.ReleaseCreationPackage = expandDeploymentActionPackage(model.ReleaseCreationPackage[0])
313316
}
314317
return strategy
315318
}
316319

317320
func expandDeploymentActionPackage(model deploymentActionPackageModel) *packages.DeploymentActionPackage {
318-
return &packages.DeploymentActionPackage{
319-
DeploymentAction: model.DeploymentAction.ValueString(),
320-
PackageReference: model.PackageReference.ValueString(),
321+
deploymentActionPackage := &packages.DeploymentActionPackage{}
322+
323+
if !model.DeploymentAction.IsNull() {
324+
deploymentActionPackage.DeploymentAction = model.DeploymentAction.ValueString()
325+
}
326+
if !model.PackageReference.IsNull() {
327+
deploymentActionPackage.PackageReference = model.PackageReference.ValueString()
321328
}
329+
330+
return deploymentActionPackage
322331
}
332+
323333
func expandTemplates(templates []templateModel) []actiontemplates.ActionTemplateParameter {
324334
result := make([]actiontemplates.ActionTemplateParameter, len(templates))
325335
for i, template := range templates {

octopusdeploy_framework/resource_project_model.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,9 @@ type versioningStrategyModel struct {
7272
}
7373

7474
type releaseCreationStrategyModel struct {
75-
ChannelID types.String `tfsdk:"channel_id"`
76-
ReleaseCreationPackageStepID types.String `tfsdk:"release_creation_package_step_id"`
77-
ReleaseCreationPackage types.Object `tfsdk:"release_creation_package"`
75+
ChannelID types.String `tfsdk:"channel_id"`
76+
ReleaseCreationPackageStepID types.String `tfsdk:"release_creation_package_step_id"`
77+
ReleaseCreationPackage []deploymentActionPackageModel `tfsdk:"release_creation_package"`
7878
}
7979

8080
type deploymentActionPackageModel struct {

0 commit comments

Comments
 (0)