[
https://issues.apache.org/jira/browse/IGNITE-19294?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Kirill Sizov updated IGNITE-19294:
-----------------------------------
Description:
Сurrently, the configuration root can only be modified and extended in the
module where the configuration root is defined. Let's describe the situation.
Module *A* -> configuration root *Root1*
Module *B* depends on module {*}A{*}. In some cases, module *B* wants to extend
the *Root1* configuration with additional staff, but this is currently not
possible. This limitation looks artificial and there are cases when this
extension is necessary and in the current architecture we have to create a
separate root for each module, which, from the point of view of configuration
semantics, may look quite strange for the user.
h3. Example
We have a *security* module with the configuration
{code:java}
security {
authentication {
enabled=false
}
} {code}
Imagine we want to add one more authentication component that is located in
another module that depends on {*}security{*}.
If this module had its own properties to configure, the only way to do that is
to add a new configuration root.
Instead we want to mix-in the properties into the *security* tree.
The combined configuration root will look as follows:
{code:java}
security {
authentication {
enabled=false
type=plain
}
user="admin"
} {code}
h3. Proposed solution
Ignite already supports extensions, but only for its internal purposes and does
not expose the extended configurations to the users.
We can reuse this functionality by converting it to a full-featured extensions
with an option to control whether they are internal or public.
was:
Сurrently, the configuration root can only be modified and extended in the
module where the configuration root is defined. Let's describe the situation.
Module *A* -> configuration root *Root1*
Module *B* depends on module {*}A{*}. In some cases, module *B* wants to extend
the *Root1* configuration with additional staff, but this is currently not
possible. This limitation looks artificial and there are cases when this
extension is necessary and in the current architecture we have to create a
separate root for each module, which, from the point of view of configuration
semantics, may look quite strange for the user.
h3. Example
We have a *security* module with the configuration
{code}
security {
authentication {
enabled=false
}
} {code}
Imagine we want to add one more authentication component that is located in
another module that depends on *security*.
If this module had its own properties to configure, the only way to do that is
to add a new configuration root.
Instead we want to mix-in the properties into the *security* tree.
The combined configuration root will look as follows:
{code}
security {
authentication {
enabled=false
type=plain
}
user="admin"
} {code}
h3. Proposed slution
Ignite already supports extensions, but only for its internal purposes and does
not expose the extended configurations to the users.
We can reuse this functionality by converting it to a full-featured extensions
with an option to control whether they are internal or public.
> Support merged configuration roots for multiple modules
> -------------------------------------------------------
>
> Key: IGNITE-19294
> URL: https://issues.apache.org/jira/browse/IGNITE-19294
> Project: Ignite
> Issue Type: New Feature
> Reporter: Mikhail Pochatkin
> Assignee: Kirill Sizov
> Priority: Major
> Labels: ignite-3
> Fix For: 3.0.0-beta2
>
> Time Spent: 1h 10m
> Remaining Estimate: 0h
>
> Сurrently, the configuration root can only be modified and extended in the
> module where the configuration root is defined. Let's describe the situation.
> Module *A* -> configuration root *Root1*
> Module *B* depends on module {*}A{*}. In some cases, module *B* wants to
> extend the *Root1* configuration with additional staff, but this is currently
> not possible. This limitation looks artificial and there are cases when this
> extension is necessary and in the current architecture we have to create a
> separate root for each module, which, from the point of view of configuration
> semantics, may look quite strange for the user.
> h3. Example
> We have a *security* module with the configuration
> {code:java}
> security {
> authentication {
> enabled=false
> }
> } {code}
> Imagine we want to add one more authentication component that is located in
> another module that depends on {*}security{*}.
> If this module had its own properties to configure, the only way to do that
> is to add a new configuration root.
> Instead we want to mix-in the properties into the *security* tree.
> The combined configuration root will look as follows:
> {code:java}
> security {
> authentication {
> enabled=false
> type=plain
> }
> user="admin"
> } {code}
> h3. Proposed solution
> Ignite already supports extensions, but only for its internal purposes and
> does not expose the extended configurations to the users.
> We can reuse this functionality by converting it to a full-featured
> extensions with an option to control whether they are internal or public.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)