Skip to content

Commit 526b29c

Browse files
committed
Fix versioning stuff
1 parent 6aebe9e commit 526b29c

4 files changed

Lines changed: 51 additions & 31 deletions

File tree

temporalcli/commands.gen.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -315,15 +315,17 @@ func (v *QueryModifiersOptions) buildFlags(cctx *CommandContext, f *pflag.FlagSe
315315
}
316316

317317
type WorkflowUpdateOptionsOptions struct {
318-
VersioningOverrideBehavior StringEnum
319-
VersioningOverridePinnedVersion string
318+
VersioningOverrideBehavior StringEnum
319+
VersioningOverrideDeploymentName string
320+
VersioningOverrideBuildId string
320321
}
321322

322323
func (v *WorkflowUpdateOptionsOptions) buildFlags(cctx *CommandContext, f *pflag.FlagSet) {
323-
v.VersioningOverrideBehavior = NewStringEnum([]string{"pinned", "auto_upgrade"}, "")
324-
f.Var(&v.VersioningOverrideBehavior, "versioning-override-behavior", "Override the versioning behavior of a Workflow. Accepted values: pinned, auto_upgrade. Required.")
324+
v.VersioningOverrideBehavior = NewStringEnum([]string{"unspecified", "pinned", "auto_upgrade"}, "")
325+
f.Var(&v.VersioningOverrideBehavior, "versioning-override-behavior", "Override the versioning behavior of a Workflow. Accepted values: unspecified, pinned, auto_upgrade. Required.")
325326
_ = cobra.MarkFlagRequired(f, "versioning-override-behavior")
326-
f.StringVar(&v.VersioningOverridePinnedVersion, "versioning-override-pinned-version", "", "Override Pinned Version for a Worker Deployment (Only for pinned).")
327+
f.StringVar(&v.VersioningOverrideDeploymentName, "versioning-override-deployment-name", "", "When overriding to a `pinned` behavior, specifies the Deployment Name of the version to target.")
328+
f.StringVar(&v.VersioningOverrideBuildId, "versioning-override-build-id", "", "When overriding to a `pinned` behavior, specifies the Build ID of the version to target.")
327329
}
328330

329331
type TemporalCommand struct {

temporalcli/commands.workflow_reset_update_options.go

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package temporalcli
33
import (
44
"fmt"
55

6-
"go.temporal.io/api/enums/v1"
6+
deploymentpb "go.temporal.io/api/deployment/v1"
77
workflowpb "go.temporal.io/api/workflow/v1"
88
"google.golang.org/protobuf/types/known/fieldmaskpb"
99
)
@@ -14,11 +14,15 @@ func (c *TemporalWorkflowResetWithWorkflowUpdateOptionsCommand) run(cctx *Comman
1414
return err
1515
}
1616

17-
if c.VersioningOverrideBehavior.Value == "pinned" && c.VersioningOverridePinnedVersion == "" {
18-
return fmt.Errorf("missing version with 'pinned' behavior")
17+
if c.VersioningOverrideBehavior.Value == "pinned" {
18+
if c.VersioningOverrideDeploymentName == "" || c.VersioningOverrideBuildId == "" {
19+
return fmt.Errorf("deployment name and build id are required with 'pinned' behavior")
20+
}
1921
}
20-
if c.VersioningOverrideBehavior.Value != "pinned" && c.VersioningOverridePinnedVersion != "" {
21-
return fmt.Errorf("cannot set pinned version with %v behavior", c.VersioningOverrideBehavior)
22+
if c.VersioningOverrideBehavior.Value != "pinned" {
23+
if c.VersioningOverrideDeploymentName != "" || c.VersioningOverrideBuildId != "" {
24+
return fmt.Errorf("cannot set deployment name or build id with %v behavior", c.VersioningOverrideBehavior.Value)
25+
}
2226
}
2327

2428
cl, err := c.Parent.Parent.ClientOptions.dialClient(cctx)
@@ -27,12 +31,22 @@ func (c *TemporalWorkflowResetWithWorkflowUpdateOptionsCommand) run(cctx *Comman
2731
}
2832
defer cl.Close()
2933

30-
var behavior enums.VersioningBehavior
34+
VersioningOverride := &workflowpb.VersioningOverride{}
3135
switch c.VersioningOverrideBehavior.Value {
3236
case "pinned":
33-
behavior = enums.VERSIONING_BEHAVIOR_PINNED
37+
VersioningOverride.Override = &workflowpb.VersioningOverride_Pinned{
38+
Pinned: &workflowpb.VersioningOverride_PinnedOverride{
39+
Behavior: workflowpb.VersioningOverride_PINNED_OVERRIDE_BEHAVIOR_PINNED,
40+
Version: &deploymentpb.WorkerDeploymentVersion{
41+
DeploymentName: c.VersioningOverrideDeploymentName,
42+
BuildId: c.VersioningOverrideBuildId,
43+
},
44+
},
45+
}
3446
case "auto_upgrade":
35-
behavior = enums.VERSIONING_BEHAVIOR_AUTO_UPGRADE
47+
VersioningOverride.Override = &workflowpb.VersioningOverride_AutoUpgrade{
48+
AutoUpgrade: true,
49+
}
3650
default:
3751
return fmt.Errorf("invalid deployment behavior: %v, valid values are: 'pinned', and 'auto_upgrade'", c.VersioningOverrideBehavior)
3852
}
@@ -47,10 +61,7 @@ func (c *TemporalWorkflowResetWithWorkflowUpdateOptionsCommand) run(cctx *Comman
4761
Variant: &workflowpb.PostResetOperation_UpdateWorkflowOptions_{
4862
UpdateWorkflowOptions: &workflowpb.PostResetOperation_UpdateWorkflowOptions{
4963
WorkflowExecutionOptions: &workflowpb.WorkflowExecutionOptions{
50-
VersioningOverride: &workflowpb.VersioningOverride{
51-
Behavior: behavior,
52-
PinnedVersion: c.VersioningOverridePinnedVersion,
53-
},
64+
VersioningOverride: VersioningOverride,
5465
},
5566
UpdateMask: protoMask,
5667
},

temporalcli/commands.workflow_reset_update_options_test.go

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ func (s *SharedServerSuite) TestWorkflow_ResetWithWorkflowUpdateOptions_Validate
3535
"--versioning-override-behavior", "pinned",
3636
)
3737
require.Error(s.T(), res.Err)
38-
require.Contains(s.T(), res.Err.Error(), "missing version with 'pinned' behavior")
38+
require.Contains(s.T(), res.Err.Error(), "deployment name and build id are required with 'pinned' behavior")
3939
}
4040

4141
func (s *SharedServerSuite) TestWorkflow_ResetWithWorkflowUpdateOptions_ValidatesArguments_AutoUpgradeWithVersion() {
@@ -46,10 +46,10 @@ func (s *SharedServerSuite) TestWorkflow_ResetWithWorkflowUpdateOptions_Validate
4646
"-t", "FirstWorkflowTask",
4747
"--reason", "test-reset",
4848
"--versioning-override-behavior", "auto_upgrade",
49-
"--versioning-override-pinned-version", "some-version",
49+
"--versioning-override-deployment-name", "some-deployment",
5050
)
5151
require.Error(s.T(), res.Err)
52-
require.Contains(s.T(), res.Err.Error(), "cannot set pinned version with")
52+
require.Contains(s.T(), res.Err.Error(), "cannot set deployment name or build id with auto_upgrade behavior")
5353
}
5454

5555
func (s *SharedServerSuite) TestWorkflow_ResetWithWorkflowUpdateOptions_Single_AutoUpgradeBehavior() {
@@ -122,15 +122,17 @@ func (s *SharedServerSuite) TestWorkflow_ResetWithWorkflowUpdateOptions_Single_P
122122
s.Equal(1, wfExecutions)
123123

124124
// Reset with pinned versioning behavior and properly formatted version
125-
pinnedVersion := "test-deployment.v1.0"
125+
pinnedDeploymentName := "test-deployment"
126+
pinnedBuildId := "v1.0"
126127
res := s.Execute(
127128
"workflow", "reset", "with-workflow-update-options",
128129
"--address", s.Address(),
129130
"-w", run.GetID(),
130131
"-t", "FirstWorkflowTask",
131132
"--reason", "test-reset-with-pinned-version",
132133
"--versioning-override-behavior", "pinned",
133-
"--versioning-override-pinned-version", pinnedVersion,
134+
"--versioning-override-deployment-name", pinnedDeploymentName,
135+
"--versioning-override-build-id", pinnedBuildId,
134136
)
135137
require.NoError(s.T(), res.Err)
136138

@@ -150,8 +152,7 @@ func (s *SharedServerSuite) TestWorkflow_ResetWithWorkflowUpdateOptions_Single_P
150152

151153
info := descResult.GetWorkflowExecutionInfo()
152154
pinnedVersionOverride := info.VersioningInfo.VersioningOverride.GetPinned().GetVersion()
153-
pinnedVersionOverrideString := pinnedVersionOverride.GetDeploymentName() + "." + pinnedVersionOverride.GetBuildId()
154-
return pinnedVersionOverrideString == pinnedVersion // the second execution should have the pinned version override.
155+
return pinnedVersionOverride.GetDeploymentName() == pinnedDeploymentName && pinnedVersionOverride.GetBuildId() == pinnedBuildId
155156
}, 5*time.Second, 100*time.Millisecond)
156157
}
157158

@@ -226,7 +227,8 @@ func (s *SharedServerSuite) TestWorkflow_ResetBatchWithWorkflowUpdateOptions_Pin
226227
s.Equal(1, wfExecutions)
227228

228229
// Reset batch with pinned versioning behavior and properly formatted version
229-
pinnedVersion := "batch-deployment.v1.0"
230+
pinnedDeploymentName := "batch-deployment"
231+
pinnedBuildId := "v1.0"
230232
s.CommandHarness.Stdin.WriteString("y\n")
231233
res := s.Execute(
232234
"workflow", "reset", "with-workflow-update-options",
@@ -235,7 +237,8 @@ func (s *SharedServerSuite) TestWorkflow_ResetBatchWithWorkflowUpdateOptions_Pin
235237
"-t", "FirstWorkflowTask",
236238
"--reason", "test-batch-reset-with-pinned-version",
237239
"--versioning-override-behavior", "pinned",
238-
"--versioning-override-pinned-version", pinnedVersion,
240+
"--versioning-override-deployment-name", pinnedDeploymentName,
241+
"--versioning-override-build-id", pinnedBuildId,
239242
)
240243
require.NoError(s.T(), res.Err)
241244

@@ -255,8 +258,7 @@ func (s *SharedServerSuite) TestWorkflow_ResetBatchWithWorkflowUpdateOptions_Pin
255258

256259
info := descResult.GetWorkflowExecutionInfo()
257260
pinnedVersionOverride := info.VersioningInfo.VersioningOverride.GetPinned().GetVersion()
258-
pinnedVersionOverrideString := pinnedVersionOverride.GetDeploymentName() + "." + pinnedVersionOverride.GetBuildId()
259-
return pinnedVersionOverrideString == pinnedVersion // the second execution should have the pinned version override.
261+
return pinnedVersionOverride.GetDeploymentName() == pinnedDeploymentName && pinnedVersionOverride.GetBuildId() == pinnedBuildId
260262
}, 5*time.Second, 100*time.Millisecond)
261263
}
262264

temporalcli/commandsgen/commands.yml

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4517,10 +4517,15 @@ option-sets:
45174517
Override the versioning behavior of a Workflow.
45184518
required: true
45194519
enum-values:
4520+
- unspecified
45204521
- pinned
45214522
- auto_upgrade
4522-
- name: versioning-override-pinned-version
4523+
- name: versioning-override-deployment-name
45234524
type: string
4524-
description: Override Pinned Version for a Worker Deployment (Only for pinned).
4525-
4525+
description: When overriding to a `pinned` behavior, specifies the Deployment Name of the
4526+
version to target.
4527+
- name: versioning-override-build-id
4528+
type: string
4529+
description: When overriding to a `pinned` behavior, specifies the Build ID of the
4530+
version to target.
45264531

0 commit comments

Comments
 (0)