This is documentation for the next version of Alloy. For the latest stable release, go to the latest version.
argument block
argument
is an optional configuration block used to specify parameterized input to a custom component.
argument
blocks must be given a label which determines the name of the argument.
The argument
block may only be specified inside the definition of a declare
block.
Example
argument "ARGUMENT_NAME" {}
Arguments
Note
For clarity, “argument” in this section refers to arguments which can be given to the argument block. “Module argument” refers to the argument being defined for a module, determined by the label of the argument block.
The following arguments are supported:
Name | Type | Description | Default | Required |
---|---|---|---|---|
comment | string | Description for the argument. | false | no |
default | any | Default value for the argument. | null | no |
optional | bool | Whether the argument may be omitted. | false | no |
By default, all module arguments are required.
The optional
argument can be used to mark the module argument as optional.
When optional
is true
, the initial value for the module argument is specified by default
.
Exported fields
The following fields are exported and can be referenced by other components:
Name | Type | Description |
---|---|---|
value | any | The current value of the argument. |
If you use a custom component, you are responsible for determining the values for arguments.
Other expressions within a custom component may use argument.ARGUMENT_NAME.value
to retrieve the value you provide.
Example
This example creates a custom component that self-collects process metrics and forwards them to an argument specified by the user of the custom component:
declare "self_collect" {
argument "metrics_output" {
optional = false
comment = "Where to send collected metrics."
}
prometheus.scrape "selfmonitor" {
targets = [{
__address__ = "127.0.0.1:12345",
}]
forward_to = [argument.metrics_output.value]
}
}