Get different model for 'add subsystem step' in standalone/domain mode
dastraub Apr 16, 2012 1:14 PMI work on an extension, this extensensio has a model like this (simplified) :
[domain@localhost:9999 /] /host=dcs1/server=dcs1/subsystem=config-mgnt:read-resource-description
{
"outcome" => "success",
"result" => {
"description" => "ConfigManagement Extension",
"head-comment-allowed" => true,
"tail-comment-allowed" => true,
"namespace" => "urn:de.xxxx:1.0",
"attributes" => {
"user" => {
"description" => "user name",
"type" => STRING,
"required" => true,
"nillable" => false,
"access-type" => "read-only",
"storage" => "configuration",
"restart-required" => "no-services"
},
"credential" => {
"description" => "user credential",
"type" => STRING,
"required" => true,
"nillable" => false,
"access-type" => "read-only",
"storage" => "configuration",
"restart-required" => "no-services"
}
}
}
}
In standalone mode, I can populate the parsed model in an an step handler (AbstractBoottimeAddStepHandler.populateModel)
Log:
19:04:01,651 DEBUG [config-management] (ServerService Thread Pool -- 48) performBoottime {
"address" => [("subsystem" => "config-mgnt")],
"user" => "dcs",
"credential" => "xxxx"
}
CLI:
[standalone@localhost:9999 /] /subsystem=config-mgnt:read-resource
{
"outcome" => "success",
"result" => {
"address" => [("subsystem" => "config-mgnt")],
"credential" => "xxxx",
"user" => "dcs"
}
}
in domain mode the handler received only an model node with operation and address.
Log :
[Server:dcs1] 19:01:24,258 DEBUG [config-management] (ServerService Thread Pool -- 26) performBoottime {"address" => [("subsystem" => "config-mgnt")]}
CLI:
[domain@localhost:9999 /] /host=dcs1/server=dcs1/subsystem=config-mgnt:read-resource
{
"outcome" => "success",
"result" => {"address" => [("subsystem" => "config-mgnt")]}
}
The Subsystem looks like this:
@Override
public void initialize(ExtensionContext context) {
final SubsystemRegistration subsystem = context.registerSubsystem(SUBSYSTEM_NAME);
subsystem.registerXMLElementWriter(ConfigManagementSubsystemParser.INSTANCE);
final ManagementResourceRegistration registration = subsystem.registerSubsystemModel(ConfigManagementDescriptionProvider.SubsytemDescription);
registration.registerOperationHandler(ADD, ConfigManagementExtensionAdd.INSTANCE, ConfigManagementDescriptionProvider.SubsystemAddDescription, false);
registration.registerOperationHandler(DESCRIBE, ConfigManagementDescriptionProvider.INSTANCE, ConfigManagementDescriptionProvider.INSTANCE, false, OperationEntry.EntryType.PRIVATE);
registration.registerReadWriteAttribute(PROPAGATION, null, new ConfigParamWriteHandler(), Storage.CONFIGURATION);
registration.registerReadWriteAttribute(CONTROLLER, null, new ConfigParamWriteHandler(), Storage.CONFIGURATION);
registration.registerReadWriteAttribute(USER_CREDENTIAL, null, new ConfigParamWriteHandler(), Storage.CONFIGURATION);
registration.registerReadWriteAttribute(USER_NAME, null, new ConfigParamWriteHandler(), Storage.CONFIGURATION);
....
If compare this e.g. with other extensions (e.g. Webservices, Transactions etc), I can't find any differences in the way, how the subsystem, description providers etc. are implemented.
I guess, I forget an little important step, but I can't find it ...