1049 lines
41 KiB
YAML
1049 lines
41 KiB
YAML
title: IDL Schema
|
|
"$schema": https://json-schema.org/draft/2020-12/schema
|
|
description: Schema for IDL files in the mongo codebase.
|
|
"$defs":
|
|
expression:
|
|
type: object
|
|
additionalProperties: false
|
|
properties:
|
|
expr:
|
|
description: String or boolean of the C++ expression.
|
|
oneOf:
|
|
- type: string
|
|
- type: boolean
|
|
is_constexpr:
|
|
type: boolean
|
|
description: Boolean for if the expression is constexpr.
|
|
required:
|
|
- expr
|
|
variant:
|
|
type: object
|
|
additionalProperties: false
|
|
properties:
|
|
variant:
|
|
type: array
|
|
description: >
|
|
Variant that chooses among a set of IDL types. You can have a variant of strings and
|
|
structs.
|
|
items:
|
|
type: string
|
|
minProperties: 1
|
|
check_or_privilege:
|
|
description: List of privileges the command checks
|
|
oneOf:
|
|
- type: object
|
|
description: >
|
|
Checks a part of the access control system like is_authenticated. See
|
|
src/mongo/db/auth/access_checks.idl for a complete list.
|
|
additionalProperties: false
|
|
properties:
|
|
check:
|
|
type: string
|
|
required:
|
|
- check
|
|
- type: object
|
|
description: Privilege that the command checks.
|
|
additionalProperties: false
|
|
properties:
|
|
privilege:
|
|
type: object
|
|
additionalProperties: false
|
|
properties:
|
|
resource_pattern:
|
|
type: string
|
|
description: >
|
|
A resource pattern to check for a given set of privileges. See MatchType enum in
|
|
src/mongo/db/auth/action_type.idl for complete list.
|
|
action_type:
|
|
oneOf:
|
|
- type: array
|
|
description: >
|
|
List of action types the command may check. See ActionType enum in
|
|
src/mongo/db/auth/action_type.idl for complete list.
|
|
items:
|
|
type: string
|
|
minItems: 1
|
|
uniqueItems: true
|
|
- type: string
|
|
description: >
|
|
Action type the command may check. See ActionType enum in
|
|
src/mongo/db/auth/action_type.idl for complete list.
|
|
agg_stage:
|
|
type: string
|
|
description: >
|
|
Name of aggregation stage. Used to appease the idl compatibility checker.
|
|
required:
|
|
- privilege
|
|
number_or_expression:
|
|
oneOf:
|
|
- type: number
|
|
- "$ref": "#/$defs/expression"
|
|
validator:
|
|
type: object
|
|
description: >
|
|
Validators generate functions that ensure a value during parse or set in a setter are valid.
|
|
Comparisons are generated with C++ operators for these comparisons.
|
|
additionalProperties: false
|
|
properties:
|
|
gt:
|
|
description: Validates field is greater than string.
|
|
"$ref": "#/$defs/number_or_expression"
|
|
lt:
|
|
description: Validates field is less than string.
|
|
"$ref": "#/$defs/number_or_expression"
|
|
gte:
|
|
description: Validates field is greater than or equal to string.
|
|
"$ref": "#/$defs/number_or_expression"
|
|
lte:
|
|
description: Validates field is less than or equal to string.
|
|
"$ref": "#/$defs/number_or_expression"
|
|
callback:
|
|
type: string
|
|
description: >
|
|
A static function to call of the shape Status <function_name>(const <cpp_type> value).
|
|
For non-simple types, value is passed by const-reference.
|
|
minProperties: 1
|
|
mod_visibility:
|
|
description: Out-of-module visibility of the struct, enum, or namespace.
|
|
oneOf:
|
|
- type: string
|
|
enum:
|
|
- pub # deprecated alias for public
|
|
- public
|
|
- public_for_technical_reasons
|
|
- private
|
|
- file_private
|
|
- needs_replacement
|
|
- unfortunately_open
|
|
- type: string
|
|
pattern: "^use_replacement(.+)$"
|
|
fields:
|
|
description: Fields of an IDL struct or command.
|
|
type: object
|
|
patternProperties:
|
|
"^.*$":
|
|
oneOf:
|
|
- type: string
|
|
description: Field of an IDL struct or command.
|
|
- type: object
|
|
description: Field of an IDL struct or command.
|
|
additionalProperties: false
|
|
properties:
|
|
cpp_name:
|
|
type: string
|
|
description: >
|
|
Optional name to use for member variable and getters/setters. Defaults to
|
|
camelCase of field name.
|
|
type:
|
|
description: Supports a single type, array<type>, or variant.
|
|
oneOf:
|
|
- type: string
|
|
description: >
|
|
String name of a type must be a enum, type, or struct that is defined in an IDL
|
|
file or imported. String can also be array<type> where type must be a enum, type,
|
|
struct, or variant. The C++ type will be std::vector<type> in this case.
|
|
- "$ref": "#/$defs/variant"
|
|
description:
|
|
type: string
|
|
description: A comment to add to the generated C++
|
|
ignore:
|
|
type: boolean
|
|
description: >
|
|
True means field generates no code but is ignored by the generated deserializer.
|
|
Used to deprecate fields that no longer have an affect but allow strict parsers to
|
|
ignore them.
|
|
optional:
|
|
type: boolean
|
|
description: >
|
|
True means the field is optional. Generated C++ type is boost::optional<type>.
|
|
default:
|
|
type:
|
|
- string
|
|
- number
|
|
- boolean
|
|
description: >
|
|
The default value of type. Types with default values are not required to be found
|
|
in the original document or set before serialization.
|
|
supports_doc_sequence:
|
|
type: boolean
|
|
description: >
|
|
True indicates the field can be found in a OpMsg's document sequence. Must use the
|
|
generated <struct>::parse(OpMsgRequest) parser to use this.
|
|
comparison_order:
|
|
type: integer
|
|
description: Comparison order for fields.
|
|
validator:
|
|
"$ref": "#/$defs/validator"
|
|
non_const_getter:
|
|
type: boolean
|
|
description: True indicates it generates a mutable getter.
|
|
unstable:
|
|
type: boolean
|
|
description: Deprecated, prefer stability = unstable instead.
|
|
stability:
|
|
type: string
|
|
description: >
|
|
Choice of [unstable, stable] - if unstable, parsing the field throws a field if
|
|
strict api checking is enabled.
|
|
enum:
|
|
- unstable
|
|
- stable
|
|
- internal
|
|
always_serialize:
|
|
type: boolean
|
|
description: Whether to always serialize optional fields even if none.
|
|
forward_to_shards:
|
|
type: boolean
|
|
description: >
|
|
Used by generic arg code to generate shouldForwardToShards, no affect on BSON
|
|
deserialization/serialization.
|
|
forward_from_shards:
|
|
type: boolean
|
|
description: >
|
|
Used by generic arg code to generate shouldForwardFromShards, no affect on BSON
|
|
deserialization/serialization.
|
|
query_shape:
|
|
type: string
|
|
description: >
|
|
Choice of [anonymize, literal, parameter, custom] - see
|
|
`src/mongo/db/query/query_shape.h`.
|
|
minProperties: 1
|
|
struct_base:
|
|
type: object
|
|
type: object
|
|
additionalProperties: false
|
|
properties:
|
|
structs:
|
|
description: List of BSON documents to deserialize/serialize to C++ classes.
|
|
type: object
|
|
patternProperties:
|
|
"^.*$":
|
|
type: object
|
|
description: Definition of a struct.
|
|
additionalProperties: false
|
|
properties:
|
|
description:
|
|
type: string
|
|
description: A comment to add to the generated C++.
|
|
chained_structs:
|
|
type: object
|
|
description: >
|
|
A list of structs to include this struct. IDL adds the chained structs as member
|
|
variables in the generated C++ class. IDL also adds a getter for each chained struct.
|
|
patternProperties:
|
|
"^.*$":
|
|
oneOf:
|
|
- type: string
|
|
description: The cpp_name to use for the chained struct.
|
|
- type: object
|
|
description: ""
|
|
additionalProperties: false
|
|
properties:
|
|
cpp_name:
|
|
type: string
|
|
description: The cpp_name to use for the chained struct.
|
|
fields:
|
|
"$ref": "#/$defs/fields"
|
|
cpp_name:
|
|
type: string
|
|
description: C++ name of the command or struct
|
|
strict:
|
|
type: boolean
|
|
description: >
|
|
Defaults to true, a strict parser errors if a unknown field is encountered by the
|
|
generated parser. Persisted structs should set this to false to allow them to
|
|
encounter documents from future versions of MongoDB without throwing an error.
|
|
generate_comparison_operators:
|
|
type: boolean
|
|
description:
|
|
"If true, generates support for C++ operatiors: ==, !=, <, >,
|
|
<=, >=."
|
|
inline_chained_structs:
|
|
type: boolean
|
|
description:
|
|
If true, exposes chained struct getters as members of this struct
|
|
in generated code.
|
|
immutable:
|
|
type: boolean
|
|
description: If true, does not generate mutable getters for structs.
|
|
non_const_getter:
|
|
type: boolean
|
|
description: If true, generates mutable getters for non-struct fields.
|
|
cpp_validator_func:
|
|
type: string
|
|
description: >
|
|
Name of a C++ function to call after a BSON document has been deserialized. Function
|
|
has signature of void <function_name>(<struct_name>* obj). Method is expected to
|
|
thrown a C++ exception (i.e. uassert) if validation fails.
|
|
is_catalog_ctxt:
|
|
type: boolean
|
|
description: >
|
|
If we set the struct or command to use a catalog context through the
|
|
`is_catalog_ctxt` IDL flag, serialze for catalog instead.
|
|
is_command_reply:
|
|
type: boolean
|
|
description: >
|
|
If true, marks the struct as a command reply. A struct marked a is_command_reply
|
|
generates a parser that ignores known generic or common fields across all replies
|
|
when parsing replies (i.e. ok, errmsg, etc).
|
|
is_generic_cmd_list:
|
|
type: string
|
|
description: >
|
|
Either "arg" or "reply". If set, generates functions bool hasField(StringData) and
|
|
bool shouldForwardToShards(StringData) for each field in the struct. If set to arg,
|
|
the struct will automatically be chained to every command.
|
|
enum:
|
|
- arg
|
|
- reply
|
|
query_shape_component:
|
|
type: boolean
|
|
description: >
|
|
True indicates this special serialization code will be generated to serialize as a
|
|
query shape.
|
|
unsafe_dangerous_disable_extra_field_duplicate_checks:
|
|
type: boolean
|
|
description: Undocumented, DO NOT USE!
|
|
mod_visibility:
|
|
"$ref": "#/$defs/mod_visibility"
|
|
types:
|
|
description: List of types which instruct IDL how deserialize/serialize primitives
|
|
type: object
|
|
patternProperties:
|
|
"^.*$":
|
|
type: object
|
|
additionalProperties: false
|
|
properties:
|
|
description:
|
|
type: string
|
|
description: A comment to add to the generated C++
|
|
bson_serialization_type:
|
|
description: >
|
|
A list of types BSON generated code should check a type is before calling the
|
|
deserializer.
|
|
oneOf:
|
|
- type: string
|
|
- type: array
|
|
items:
|
|
type: string
|
|
minItems: 1
|
|
uniqueItems: true
|
|
bindata_subtype:
|
|
type: string
|
|
description: >
|
|
If bson_serialization_type is bindata, this is the required bindata subtype.
|
|
enum:
|
|
- generic
|
|
- function
|
|
- uuid
|
|
- md5
|
|
- encrypt
|
|
- sensitive
|
|
- vector
|
|
cpp_type:
|
|
type: string
|
|
description: The C++ type to store the deserialized value as.
|
|
deserialize_with_tenant:
|
|
type: boolean
|
|
description: If set, adds TenantId as the first parameter to deserializer.
|
|
deserializer:
|
|
type: string
|
|
description: A method to deserialize the type.
|
|
serializer:
|
|
type: string
|
|
description: A method to serialize the type.
|
|
internal_only:
|
|
type: boolean
|
|
description: Undocumented, DO NOT USE!
|
|
default:
|
|
type: string
|
|
description: >
|
|
Default value for a type. A field in a struct inherits this value if a field does
|
|
not set a default.
|
|
is_view:
|
|
type: boolean
|
|
description: >
|
|
Indicates whether the type is a view or not. See idl/README.md for more info.
|
|
required:
|
|
- description
|
|
- cpp_type
|
|
- bson_serialization_type
|
|
enums:
|
|
description: YAML map that allows integer and string enumeration.
|
|
type: object
|
|
patternProperties:
|
|
"^.*$":
|
|
type: object
|
|
additionalProperties: false
|
|
properties:
|
|
description:
|
|
type: string
|
|
description: A comment to add to the generated C++.
|
|
type:
|
|
type: string
|
|
description: Enum type, can be either string or int.
|
|
enum:
|
|
- string
|
|
- int
|
|
mod_visibility:
|
|
"$ref": "#/$defs/mod_visibility"
|
|
values:
|
|
type: object
|
|
description: A map of `enum value name` -> `enum value`.
|
|
patternProperties:
|
|
"^.*$":
|
|
oneOf:
|
|
- type: string
|
|
- type: integer
|
|
- type: object
|
|
additionalProperties: false
|
|
properties:
|
|
description:
|
|
type: string
|
|
description: A comment to add to the generated C++.
|
|
value:
|
|
description: Int or string value associated with the named value.
|
|
oneOf:
|
|
- type: string
|
|
- type: integer
|
|
extra_data:
|
|
description:
|
|
See idl/README.md for more information about this
|
|
field.
|
|
"$comment": Parses as an arbitrary value in IDL.
|
|
required:
|
|
- description
|
|
- value
|
|
minProperties: 1
|
|
commands:
|
|
description:
|
|
List of BSON commands used by MongoDB RPC to deserialize/serialize
|
|
to C++ classes.
|
|
type: object
|
|
patternProperties:
|
|
"^.*$":
|
|
type: object
|
|
additionalProperties: false
|
|
properties:
|
|
description:
|
|
type: string
|
|
description: A comment to add to the generated C++.
|
|
chained_structs:
|
|
type: object
|
|
description: >
|
|
A list of structs to include this struct. IDL adds the chained structs as member
|
|
variables in the generated C++ class. IDL also adds a getter for each chained struct.
|
|
patternProperties:
|
|
"^.*$":
|
|
oneOf:
|
|
- type: string
|
|
description: The cpp_name to use for the chained struct.
|
|
- type: object
|
|
description: ""
|
|
additionalProperties: false
|
|
properties:
|
|
cpp_name:
|
|
type: string
|
|
description: The cpp_name to use for the chained struct.
|
|
fields:
|
|
"$ref": "#/$defs/fields"
|
|
cpp_name:
|
|
type: string
|
|
description: C++ name of the command or struct
|
|
strict:
|
|
type: boolean
|
|
description: >
|
|
Defaults to true, a strict parser errors if a unknown field is encountered by the
|
|
generated parser. Persisted structs should set this to false to allow them to
|
|
encounter documents from future versions of MongoDB without throwing an error.
|
|
generate_comparison_operators:
|
|
type: boolean
|
|
description:
|
|
"If true, generates support for C++ operatiors: ==, !=, <, >,
|
|
<=, >=."
|
|
inline_chained_structs:
|
|
type: boolean
|
|
description: >
|
|
If true, exposes chained struct getters as members of this struct in generated code.
|
|
immutable:
|
|
type: boolean
|
|
description: If true, does not generate mutable getters for structs.
|
|
non_const_getter:
|
|
type: boolean
|
|
description: If true, generates mutable getters for non-struct fields.
|
|
namespace:
|
|
type: string
|
|
description: >
|
|
Instructs how the value of command field should be parsed.
|
|
Possible string values:
|
|
|
|
- `concatenate_with_db` - Indicates the command field is a string and
|
|
should be treated as a collection name. Typically used by
|
|
commands that deal with collections. Automatically concatenated
|
|
with `$db` by the IDL parser. Adds a method `const NamespaceString
|
|
getNamespace()` to the generated class.
|
|
|
|
- `concatenate_with_db_or_uuid` - Indicates the command field is a
|
|
string or uuid, and should be treated as a collection name.
|
|
Typically used by commands that deal with collections.
|
|
Automatically concatenated with `$db` by the IDL parser. Adds a
|
|
method `const NamespaceStringOrUUID& getNamespaceOrUUID()` to the
|
|
generated class.
|
|
|
|
- `ignored` - Ignores the value of the command field. Used by
|
|
commands that ignore their command argument entirely.
|
|
|
|
- `type` - Indicates the command takes a custom type for the first
|
|
field. The `type` field must be set.
|
|
enum:
|
|
- concatenate_with_db
|
|
- concatenate_with_db_or_uuid
|
|
- ignored
|
|
- type
|
|
type:
|
|
description: Name of IDL type or struct to parse the command field as.
|
|
oneOf:
|
|
- type: string
|
|
description: >
|
|
String name of a type must be a enum, type, or struct that is defined in an IDL
|
|
file or imported. String can also be array<type> where type must be a enum, type,
|
|
struct, or variant. The C++ type will be std::vector<type> in this case.
|
|
- "$ref": "#/$defs/variant"
|
|
command_name:
|
|
type: string
|
|
description: >
|
|
IDL generated parser expects the command to be named the name of YAML map. This can
|
|
be overwritten with command_name. Commands should be camelCase.
|
|
command_alias:
|
|
type: string
|
|
description: >
|
|
Allows commands to have multiple names. DO NOT USE. Some older commands have both
|
|
lowercase and camelCase names.
|
|
reply_type:
|
|
type: string
|
|
description: >
|
|
IDL struct that this command replies with. Reply struct must have is_command_reply
|
|
set.
|
|
api_version:
|
|
description: >
|
|
Typically set to the empty string "". Only set to a non-empty string if command is
|
|
part of the stable API. Generates a class name<command_name>CommandNameCmdVersion1Gen
|
|
derived from TypedCommand that commands should be derived from.
|
|
oneOf:
|
|
- type: string
|
|
- type: number
|
|
- type: "null"
|
|
is_deprecated:
|
|
type: boolean
|
|
description: Indicates command is deprecated.
|
|
allow_global_collection_name:
|
|
type: boolean
|
|
description: >
|
|
If true, command can accept both collect names and non-collection names. Used by
|
|
the aggregate command.
|
|
access_check:
|
|
type: object
|
|
description: >
|
|
A list of privileges the command checks. Only applicable for commands that are
|
|
apart of API Version 1. Checked at runtime when test commands are enabled.
|
|
additionalProperties: false
|
|
properties:
|
|
none:
|
|
type: boolean
|
|
description: No privileges required.
|
|
simple:
|
|
"$ref": "#/$defs/check_or_privilege"
|
|
complex:
|
|
type: array
|
|
items:
|
|
"$ref": "#/$defs/check_or_privilege"
|
|
ignore:
|
|
type: boolean
|
|
minProperties: 1
|
|
maxProperties: 1
|
|
mod_visibility:
|
|
"$ref": "#/$defs/mod_visibility"
|
|
server_parameters:
|
|
description: >
|
|
List of server parameters to serialize into C++. The generated code will self-register
|
|
server parameters with the runtime.
|
|
type: object
|
|
patternProperties:
|
|
"^.*$":
|
|
type: object
|
|
description: ""
|
|
additionalProperties: false
|
|
properties:
|
|
set_at:
|
|
description: >
|
|
Must contain the value startup, runtime, [startup, runtime], or cluster. If runtime
|
|
is specified along with cpp_varname, then decltype(cpp_varname) must refer to a
|
|
thread-safe storage type, specifically: AtomicWord<T>, AtomicWord<double>, std::atomic<T>,
|
|
or boost::synchronized<T>. Parameters declared as cluster can only be set at
|
|
runtime and exhibit numerous differences.
|
|
oneOf:
|
|
- type: string
|
|
enum:
|
|
- startup
|
|
- runtime
|
|
- cluster
|
|
- readonly
|
|
- type: array
|
|
items:
|
|
type: string
|
|
enum:
|
|
- startup
|
|
- runtime
|
|
minItems: 1
|
|
uniqueItems: true
|
|
description:
|
|
type: string
|
|
description: >
|
|
Free-form text field currently used only for commenting the generated C++ code.
|
|
Future uses may preserve this value for a possible {listSetParameters:1} command
|
|
or other programmatic and potentially user-facing purposes.
|
|
cpp_vartype:
|
|
type: string
|
|
description: >
|
|
Declares the full storage type. If cpp_vartype is not defined, it may be inferred
|
|
from the C++ variable referenced by cpp_varname.
|
|
cpp_varname:
|
|
type: string
|
|
description: >
|
|
Declares the underlying variable or C++ struct member to use when setting or
|
|
reading the server parameter. If defined together with cpp_vartype, the storage
|
|
will be declared as a global variable, and externed in the generated header file.
|
|
If defined alone, a variable of this name will assume to have been declared and
|
|
defined by the implementer, and its type will be automatically inferred at compile
|
|
time. If cpp_varname is not defined, then cpp_class must be specified.
|
|
mod_visibility:
|
|
"$ref": "#/$defs/mod_visibility"
|
|
cpp_class:
|
|
description: >
|
|
Declares a custom ServerParameter class in the generated header using the provided
|
|
string, or the name field in the associated map. The declared class will require
|
|
an implementation of setFromString(), and optionally set(), append(), and a
|
|
constructor.
|
|
oneOf:
|
|
- type: string
|
|
- type: object
|
|
additionalProperties: false
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: Name to assign to the class (e.g., SomeParameterImpl).
|
|
data:
|
|
type: string
|
|
description: cpp data type to add to the class as a property named "_data".
|
|
override_ctor:
|
|
type: boolean
|
|
description: "True to allow defining a custom constructor, default: false."
|
|
override_set:
|
|
type: boolean
|
|
description:
|
|
"True to allow defining a custom set() method, default:
|
|
false."
|
|
override_validate:
|
|
type: boolean
|
|
description: "True to allow defining a custom validate() method, default: false."
|
|
override_warn_if_deprecated:
|
|
type: boolean
|
|
description: "True to allow defining a custom warnIfDeprecated() method, default: false."
|
|
default:
|
|
description: String or expression map representation of the initial value.
|
|
oneOf:
|
|
- type: string
|
|
- type: number
|
|
- type: boolean
|
|
- type: object
|
|
redact:
|
|
type: boolean
|
|
description: >
|
|
Set to true to replace values of this setting with placeholders (e.g., for
|
|
passwords). This is a required field and must be explicitly set to false to
|
|
disable redaction.
|
|
omit_in_ftdc:
|
|
type: boolean
|
|
description: >
|
|
'Only applies to cluster parameters. If set to true, then the cluster parameter
|
|
will be omitted when `getClusterParameter` is invoked with `omitInFTDC`: true. In
|
|
practice, FTDC runs `getClusterParameter` with this option periodically to collect
|
|
configuration metadata about the server and setting this flag to true for a cluster
|
|
parameter ensures that its value(s) will not be exposed in FTDC.'
|
|
test_only:
|
|
type: boolean
|
|
description: >
|
|
Set to true to disable this set parameter if `enableTestCommands` is not specified.
|
|
deprecated_name:
|
|
description: >
|
|
One or more names which can be used with the specified setting and underlying
|
|
storage. Reading or writing a setting using this name will result in a warning in
|
|
the server log.
|
|
oneOf:
|
|
- type: string
|
|
- type: array
|
|
items:
|
|
type: string
|
|
minItems: 1
|
|
uniqueItems: true
|
|
is_deprecated:
|
|
type: boolean
|
|
description: >
|
|
Marks the server parameter as deprecated. Warns users if the server parameter
|
|
is ever used. Defaults to false.
|
|
annotations:
|
|
type: object
|
|
description: >
|
|
Opaque metadata block attached to the server parameter. Parsed as-is and
|
|
exposed at runtime via ServerParameter::annotations() as a BSONObj.
|
|
on_update:
|
|
type: string
|
|
description: >
|
|
'C++ callback invoked after all validation rules have completed successfully and
|
|
the new value has been stored. Prototype: Status(const cpp_vartype&);'
|
|
condition:
|
|
type: object
|
|
description: >
|
|
Up to five conditional rules for deciding whether or not to apply this server
|
|
parameter. `preprocessor` will be evaluated first, followed by `constexpr`, then
|
|
finally `expr`. If no provided setting evaluates to false, the server parameter
|
|
will be registered. `feature_flag` and `min_fcv` are evaluated after the parameter
|
|
is registered, and instead affect whether the parameter is enabled. `min_fcv` is
|
|
a string of the form X.Y, representing the minimum FCV version for which this
|
|
parameter should be enabled. `feature_flag` is the name of a feature flag variable
|
|
upon which this server parameter depends -- if the feature flag is disabled,
|
|
this parameter will be disabled. `feature_flag` should be removed when all other
|
|
instances of that feature flag are deleted, which typically is done after the next
|
|
LTS version of the server is branched. `min_fcv` should be removed after it is no
|
|
longer possible to downgrade to a FCV lower than that version - this occurs when
|
|
the next LTS version of the server is branched.
|
|
additionalProperties: false
|
|
properties:
|
|
expr:
|
|
oneOf:
|
|
- type: string
|
|
- type: boolean
|
|
constexpr:
|
|
type: string
|
|
preprocessor:
|
|
type: string
|
|
min_fcv:
|
|
type: number
|
|
feature_flag:
|
|
type: string
|
|
minProperties: 1
|
|
validator:
|
|
"$ref": "#/$defs/validator"
|
|
required:
|
|
- set_at
|
|
- description
|
|
configs:
|
|
description: >
|
|
List of config options parsed from the command line as well as YAML and INI config files.
|
|
type: object
|
|
patternProperties:
|
|
"^.*$":
|
|
type: object
|
|
description: Config option.
|
|
additionalProperties: false
|
|
properties:
|
|
short_name:
|
|
type: string
|
|
description: Name to use for command line and INI.
|
|
single_name:
|
|
type: string
|
|
description: Name to use for JSON config.
|
|
deprecated_name:
|
|
description: List or string of deprecated name(s) used for JSON config.
|
|
oneOf:
|
|
- type: string
|
|
- type: array
|
|
items:
|
|
type: string
|
|
minItems: 1
|
|
uniqueItems: true
|
|
deprecated_short_name:
|
|
description:
|
|
List or string of deprecated name(s) used for command line
|
|
and INI.
|
|
oneOf:
|
|
- type: string
|
|
- type: array
|
|
items:
|
|
type: string
|
|
minItems: 1
|
|
uniqueItems: true
|
|
description:
|
|
description: String or expression for the description for the option.
|
|
oneOf:
|
|
- type: string
|
|
- "$ref": "#/$defs/expression"
|
|
section:
|
|
type: string
|
|
description: Name of the option's section, visible in the '--help' string.
|
|
arg_vartype:
|
|
type: string
|
|
description: >
|
|
Type of the option argument (defined in
|
|
mongo/util/options_parser/option_description.h) that is supported by OptionsParser.
|
|
enum:
|
|
- StringVector
|
|
- StringMap
|
|
- Bool
|
|
- Double
|
|
- Int
|
|
- Long
|
|
- String
|
|
- UnsignedLongLong
|
|
- Unsigned
|
|
- Switch
|
|
cpp_vartype:
|
|
type: string
|
|
description: >
|
|
Type of the global variable which stores the option. Used with cpp_varname.
|
|
cpp_varname:
|
|
type: string
|
|
description: >
|
|
Name of the global variable which stores the option. Used with cpp_vartype.
|
|
mod_visibility:
|
|
"$ref": "#/$defs/mod_visibility"
|
|
condition:
|
|
type: object
|
|
description: >
|
|
Up to three conditional rules for deciding whether or not to apply this config
|
|
option. `preprocessor` will be evaluated first, followed by `constexpr`, then
|
|
finally `expr`.
|
|
additionalProperties: false
|
|
properties:
|
|
expr:
|
|
type: string
|
|
constexpr:
|
|
type: string
|
|
preprocessor:
|
|
type: string
|
|
conflicts:
|
|
description: >
|
|
String or string list that defines another option that is incompatible with this one.
|
|
oneOf:
|
|
- type: string
|
|
- type: array
|
|
items:
|
|
type: string
|
|
minItems: 1
|
|
uniqueItems: true
|
|
requires:
|
|
description: >
|
|
Specifies another option that this option requires in order to be specified.
|
|
oneOf:
|
|
- type: string
|
|
- type: array
|
|
items:
|
|
type: string
|
|
minItems: 1
|
|
uniqueItems: true
|
|
hidden:
|
|
type: boolean
|
|
description: >
|
|
If true, this option is hidden so that it does not appear in command line help.
|
|
redact:
|
|
type: boolean
|
|
description: >
|
|
If true, marks this option as sensitive so that attempts by a client to read
|
|
this setting will only return a placeholder value rather than the real setting.
|
|
default:
|
|
description: Default value for this option if it is not specified.
|
|
oneOf:
|
|
- type: string
|
|
- type: number
|
|
- type: boolean
|
|
- "$ref": "#/$defs/expression"
|
|
implicit:
|
|
description:
|
|
Implicit value for this option if it is specified with no
|
|
argument.
|
|
oneOf:
|
|
- type: string
|
|
- type: number
|
|
- type: boolean
|
|
- "$ref": "#/$defs/expression"
|
|
source:
|
|
description: >
|
|
String or list describing where the option came from. Choices ["cli", "ini", "yaml"].
|
|
oneOf:
|
|
- type: string
|
|
enum:
|
|
- cli
|
|
- ini
|
|
- yaml
|
|
- type: array
|
|
items:
|
|
type: string
|
|
enum:
|
|
- cli
|
|
- ini
|
|
- yaml
|
|
minItems: 1
|
|
uniqueItems: true
|
|
canonicalize:
|
|
type: string
|
|
description: Canonicalizer method.
|
|
duplicate_behavior:
|
|
type: string
|
|
description: >
|
|
Choice ["append", "overwrite"]. Defaults to "overwite", but "append" will make
|
|
different sources add their values instead of overriding.
|
|
enum:
|
|
- append
|
|
- overwrite
|
|
positional:
|
|
description: >
|
|
Specifies the position(s) the option can be found in. Single digit, closed range, or
|
|
open range of digits. Ex. "1", "-2", "3-4".
|
|
oneOf:
|
|
- type: string
|
|
- type: integer
|
|
validator:
|
|
"$ref": "#/$defs/validator"
|
|
required:
|
|
- description
|
|
- arg_vartype
|
|
feature_flags:
|
|
description: List of feature flags to serialize into C++.
|
|
type: object
|
|
patternProperties:
|
|
"^.*$":
|
|
type: object
|
|
description: ""
|
|
additionalProperties: false
|
|
properties:
|
|
description:
|
|
type: string
|
|
description: A comment to add to the generated C++.
|
|
cpp_varname:
|
|
type: string
|
|
description: Declares the underlying variable to use for the feature flag.
|
|
mod_visibility:
|
|
"$ref": "#/$defs/mod_visibility"
|
|
default:
|
|
type: boolean
|
|
description: >
|
|
Feature flags that default to false must not have a version. Feature flags that
|
|
default to true and should be FCV gated are required to have a version. Feature
|
|
flags that should not be FCV gated must not have a version.
|
|
version:
|
|
type: number
|
|
description: MongoDB version in which the feature flag is introduced.
|
|
fcv_gated:
|
|
type: boolean
|
|
description: Whether or not the feature flag should be FCV gated
|
|
enable_on_transitional_fcv_UNSAFE:
|
|
type: boolean
|
|
description: >
|
|
Also enable this feature flag during the transitional FCV state (kUpgrade,
|
|
kDowngrade). Can only appear along with fcv_gated: true.
|
|
|
|
Setting this property should be avoided if possible, and requires careful handling to
|
|
avoid compatibility issues with old FCVs and binaries.
|
|
See the FCV and Feature Flag README (FCV_AND_FEATURE_FLAG_README.md) for more detail.
|
|
incremental_rollout_phase:
|
|
type: string
|
|
description: >
|
|
Set to a value other than the default ('not_for_incremental_rollout') to make an
|
|
Incremental Feature Rollout (IFR) feature flag, which can be toggled at runtime. IFR
|
|
feature flags are disabled by default when in the 'in_development' phase and enabled
|
|
by default in the 'rollout' and 'released' phases. Client software can query a feature
|
|
flag's phase using the getParameter command with 'showDetails' enabled. Non-IFR
|
|
feature flags must specify an explicit 'default' value.
|
|
enum:
|
|
- not_for_incremental_rollout
|
|
- in_development
|
|
- rollout
|
|
- released
|
|
serialize_on_outgoing_requests:
|
|
type: boolean
|
|
description: >
|
|
If true, this IFR flag's current value will be serialized on outgoing requests
|
|
(e.g., to shards) so that remote nodes use the same value as the sender.
|
|
Must be paired with 'version' to specify the FCV at which serialization begins.
|
|
Only valid on IFR flags (those with an incremental_rollout_phase specified).
|
|
check_against_fcv:
|
|
type: string
|
|
description: >
|
|
Specifies whether the feature flag is checked against an Operation FCV
|
|
(`VersionContext`), a short-lived server FCV snapshot (`FCVSnapshot`), or both.
|
|
This determines the signature of the C++ method used for feature flag checks.
|
|
See the FCV and Feature Flag README (FCV_AND_FEATURE_FLAG_README.md) for more detail.
|
|
enum:
|
|
- operation_fcv_or_fcv_snapshot
|
|
- operation_fcv_only
|
|
# TODO(SERVER-102615): Remove this value once it's not needed anymore
|
|
- legacy_fcv_snapshot_only
|
|
required:
|
|
- description
|
|
- fcv_gated
|
|
global:
|
|
description: Global settings that affect code generation
|
|
type: object
|
|
additionalProperties: false
|
|
properties:
|
|
cpp_namespace:
|
|
type: string
|
|
description: >
|
|
The C++ namespace for all generated classes and enums to belong to. Must start with
|
|
mongo.
|
|
pattern: "^mongo.*$"
|
|
cpp_includes:
|
|
description: >
|
|
A list of C++ headers to include in the generated .h file. You should not list
|
|
generated IDL headers here as includes for them are automatically generated from imports.
|
|
oneOf:
|
|
- type: array
|
|
items:
|
|
type: string
|
|
uniqueItems: true
|
|
- type: string
|
|
mod_visibility:
|
|
"$ref": "#/$defs/mod_visibility"
|
|
configs:
|
|
type: object
|
|
additionalProperties: false
|
|
properties:
|
|
source:
|
|
oneOf:
|
|
- type: string
|
|
enum:
|
|
- cli
|
|
- ini
|
|
- yaml
|
|
- type: array
|
|
items:
|
|
type: string
|
|
enum:
|
|
- cli
|
|
- ini
|
|
- yaml
|
|
minItems: 1
|
|
uniqueItems: true
|
|
section:
|
|
type: string
|
|
initializer:
|
|
oneOf:
|
|
- type: string
|
|
- type: object
|
|
additionalProperties: false
|
|
properties:
|
|
register:
|
|
type: string
|
|
store:
|
|
type: string
|
|
minItems: 1
|
|
uniqueItems: true
|
|
unevaluatedProperties: true
|
|
imports:
|
|
description: >
|
|
List of other IDL files that contain enums, types and structs this file refers to.
|
|
type: array
|
|
items:
|
|
type: string
|
|
minItems: 1
|
|
uniqueItems: true
|