Skip to content

Commit 41bf274

Browse files
committed
Make versioning overrides structure nicer
1 parent caab471 commit 41bf274

File tree

3 files changed

+37
-59
lines changed

3 files changed

+37
-59
lines changed

temporalio/lib/temporalio/versioning_override.rb

Lines changed: 34 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -6,69 +6,50 @@ module Temporalio
66
# Base class for version overrides that can be provided in start workflow options.
77
# Used to control the versioning behavior of workflows started with this override.
88
#
9-
# Use factory methods {.auto_upgrade} or {.pinned} to create instances.
10-
#
119
# WARNING: Experimental API.
1210
class VersioningOverride
13-
# Creates an auto-upgrade versioning override
14-
# The workflow will auto-upgrade to the current deployment version on the next workflow task.
15-
#
16-
# @return [AutoUpgradeVersioningOverride] An auto-upgrade versioning override
17-
def self.auto_upgrade
18-
AutoUpgradeVersioningOverride.new
19-
end
20-
21-
# Creates a pinned versioning override
22-
# The workflow will be pinned to a specific deployment version.
23-
#
24-
# @param version [WorkerDeploymentVersion] The worker deployment version to pin the workflow to
25-
# @return [PinnedVersioningOverride] A pinned versioning override
26-
def self.pinned(version)
27-
PinnedVersioningOverride.new(version)
28-
end
29-
3011
# @!visibility private
3112
def _to_proto
3213
raise NotImplementedError, 'Subclasses must implement this method'
3314
end
34-
end
35-
36-
# Represents a versioning override to pin a workflow to a specific version
37-
class PinnedVersioningOverride < VersioningOverride
38-
# The worker deployment version to pin to
39-
# @return [WorkerDeploymentVersion]
40-
attr_reader :version
41-
42-
# Create a new pinned versioning override
43-
#
44-
# @param version [WorkerDeploymentVersion] The worker deployment version to pin to
45-
def initialize(version)
46-
@version = version
47-
super()
48-
end
49-
50-
# TODO: Remove deprecated field setting once removed from server
5115

52-
# @!visibility private
53-
def _to_proto
54-
Temporalio::Api::Workflow::V1::VersioningOverride.new(
55-
behavior: Temporalio::Api::Enums::V1::VersioningBehavior::VERSIONING_BEHAVIOR_PINNED,
56-
pinned_version: @version.to_canonical_string,
57-
pinned: Temporalio::Api::Workflow::V1::VersioningOverride::PinnedOverride.new(
58-
version: @version._to_proto
16+
# Represents a versioning override to pin a workflow to a specific version
17+
class Pinned < VersioningOverride
18+
# The worker deployment version to pin to
19+
# @return [WorkerDeploymentVersion]
20+
attr_reader :version
21+
22+
# Create a new pinned versioning override
23+
#
24+
# @param version [WorkerDeploymentVersion] The worker deployment version to pin to
25+
def initialize(version)
26+
@version = version
27+
super()
28+
end
29+
30+
# TODO: Remove deprecated field setting once removed from server
31+
32+
# @!visibility private
33+
def _to_proto
34+
Temporalio::Api::Workflow::V1::VersioningOverride.new(
35+
behavior: Temporalio::Api::Enums::V1::VersioningBehavior::VERSIONING_BEHAVIOR_PINNED,
36+
pinned_version: @version.to_canonical_string,
37+
pinned: Temporalio::Api::Workflow::V1::VersioningOverride::PinnedOverride.new(
38+
version: @version._to_proto
39+
)
5940
)
60-
)
41+
end
6142
end
62-
end
6343

64-
# Represents a versioning override to auto-upgrade a workflow
65-
class AutoUpgradeVersioningOverride < VersioningOverride
66-
# @!visibility private
67-
def _to_proto
68-
Temporalio::Api::Workflow::V1::VersioningOverride.new(
69-
behavior: Temporalio::Api::Enums::V1::VersioningBehavior::VERSIONING_BEHAVIOR_AUTO_UPGRADE,
70-
auto_upgrade: true
71-
)
44+
# Represents a versioning override to auto-upgrade a workflow
45+
class AutoUpgrade < VersioningOverride
46+
# @!visibility private
47+
def _to_proto
48+
Temporalio::Api::Workflow::V1::VersioningOverride.new(
49+
behavior: Temporalio::Api::Enums::V1::VersioningBehavior::VERSIONING_BEHAVIOR_AUTO_UPGRADE,
50+
auto_upgrade: true
51+
)
52+
end
7253
end
7354
end
7455
end

temporalio/sig/temporalio/versioning_override.rbs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,16 @@
11
module Temporalio
22
class VersioningOverride
3-
def self.auto_upgrade: -> AutoUpgradeVersioningOverride
4-
def self.pinned: (WorkerDeploymentVersion version) -> PinnedVersioningOverride
5-
63
def _to_proto: -> untyped
74
end
85

9-
class PinnedVersioningOverride < VersioningOverride
6+
class Pinned < VersioningOverride
107
attr_reader version: WorkerDeploymentVersion
118

129
def initialize: (WorkerDeploymentVersion version) -> void
1310
def _to_proto: -> untyped
1411
end
1512

16-
class AutoUpgradeVersioningOverride < VersioningOverride
13+
class AutoUpgrade < VersioningOverride
1714
def initialize: -> void
1815
def _to_proto: -> untyped
1916
end

temporalio/test/worker_workflow_versioning_test.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -552,7 +552,7 @@ def test_workflows_can_use_versioning_override
552552
DeploymentVersioningWorkflowV1AutoUpgrade,
553553
id: "override-versioning-#{SecureRandom.uuid}",
554554
task_queue: task_queue,
555-
versioning_override: Temporalio::VersioningOverride.pinned(worker_v1)
555+
versioning_override: Temporalio::VersioningOverride::Pinned.new(worker_v1)
556556
)
557557

558558
# Send signal to finish

0 commit comments

Comments
 (0)