5 Replies Latest reply on Apr 16, 2012 4:38 PM by ctomc

    Get different model for 'add subsystem step' in standalone/domain mode

    dastraub

      I 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 ...