summaryrefslogtreecommitdiff
path: root/src/mongo/db/feature_flag_test.idl.tpl
blob: 5b5d6e8a0ed4ff170e8eb99ce1bf751f3f88a754 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#import bisect
#import re
#import yaml
##
#from packaging.version import Version
##
#set $releases_yml_path = $args[0] ## The path to a `releases.yml` file.
#set $mongo_version = $args[1]     ## The value of MONGO_VERSION.
##
#set $releases_file = open($releases_yml_path, 'r')
#set $releases = yaml.safe_load($releases_file)
#set $lts_releases = list(map(Version, $releases['longTermSupportReleases']))
##
## Parse the "MAJOR.MINOR" version from mongo_version.
#set $latest = Version(re.match(r'^[0-9]+\.[0-9]+', $mongo_version).group(0))
##
## The most recent lts release prior to 'latest'.
#set $last_lts = lts_releases[bisect.bisect_left(lts_releases, latest) - 1]
##
global:
  cpp_namespace: "mongo::feature_flags"
  cpp_includes:
  - "mongo/db/change_streams_cluster_parameter.h"

imports:
    - "mongo/db/basic_types.idl"
    - "mongo/idl/cluster_server_parameter.idl"

structs:
    CWSPIntStorage:
      description: "Storage used for cwspTestNeedsLatestFCV"
      inline_chained_structs: true
      chained_structs:
          ClusterServerParameter: ClusterServerParameter
      fields:
          intData:
              type: safeInt64
              default: 0

feature_flags:
    featureFlagToaster:
      description: "Create a feature flag"
      cpp_varname: gFeatureFlagToaster
      default: false
      shouldBeFCVGated: true

    featureFlagFryer:
      description: "Create a feature flag"
      cpp_varname: gFeatureFlagFryer
      default: false
      shouldBeFCVGated: true
    
    featureFlagFork:
      description: "Create a feature flag that should not be FCV gated"
      cpp_varname: gFeatureFlagFork
      default: true
      shouldBeFCVGated: false

#def $ver_str(v): ${'{}.{}'.format(v.major, v.minor)}
    featureFlagBlender:
      description: "Create a feature flag"
      cpp_varname: gFeatureFlagBlender
      default: true
      # The version should be a valid FCV not equal to GenericFCV::kLastLTS in
      # the generated 'releases.h' file.
      version: $ver_str(latest)
      shouldBeFCVGated: true

    featureFlagSpoon:
      description: "Create a feature flag"
      cpp_varname: gFeatureFlagSpoon
      default: true
      # The version should match GenericFCV::kLastLTS in the generated 'releases.h' file.
      version: $ver_str(last_lts)
      shouldBeFCVGated: true

server_parameters:
    spTestNeedsFeatureFlagToaster:
      description: "Server Parameter gated on featureFlagToaster"
      set_at: runtime
      cpp_varname: gSPTestFeatureFlagToaster
      cpp_vartype: bool
      test_only: true
      default: false
      condition:
        feature_flag: gFeatureFlagToaster

    spTestNeedsLatestFCV:
      description: "Server parameter gated on FCV >= latestFCV"
      set_at: runtime
      cpp_varname: gSPTestLatestFCV
      cpp_vartype: int
      test_only: true
      default: 0
      condition:
        min_fcv: $ver_str(latest)

    cwspTestNeedsLatestFCV:
      description: "Cluster server parameter gated on latest FCV"
      set_at: cluster
      cpp_varname: gCWSPTestLatestFCV
      cpp_vartype: CWSPIntStorage
      test_only: true
      condition:
        min_fcv: $ver_str(latest)

    spTestNeedsFeatureFlagBlender:
      description: "Server Parameter gated on featureFlagBlender"
      set_at: runtime
      cpp_varname: gSPTestFeatureFlagBlender
      cpp_vartype: int
      test_only: true
      default: 0
      condition:
        feature_flag: gFeatureFlagBlender

    cwspTestNeedsFeatureFlagBlender:
      description: "Cluster server Parameter gated on featureFlagBlender"
      set_at: cluster
      cpp_varname: gCWSPTestFeatureFlagBlender
      cpp_vartype: CWSPIntStorage
      test_only: true
      condition:
        feature_flag: gFeatureFlagBlender