Design Notes for GUI Configuration Changes

Version 13

    Goal

     

    Allow administrators to view the last N (configurable) changes in the domain/server configurations made by other authorized administrators.

     

    Requirements

     

    There should be management operations to list the configuration changes.

    Actually there are management operations at domain and host controller level, below you can see the add operation to enable the configuration changes and limit its history size, the following operation list the changes
    Domain Level

     

    /core-service=management/service=configuration-changes:add(max-history=100)
    /core-service=management/service=configuration-changes:list-changes
               

     

    Host Level

     

    /host=master/subsystem=core-management/service=configuration-changes:add(max-history=100)
    /host=master/subsystem=core-management/service=configuration-changes:list-changes
               

     

    Actually the list-changes at domain level doesn't work, the design notes document related to the configuration changes

    Design notes for Configuration changes in domain mode

    Design notes for moving Configuration changes to the Core Management Subsystem

     

    The list-changes for host level works and will be used as the entry point to list the changes in HAL.

     

    Details

     

    See below some samples from list-changes

     

    [domain@localhost:9990 /] /host=master/subsystem=core-management/service=configuration-changes:list-changes

    {

        "outcome" => "success",

        "result" => [

            {

                "operation-date" => "2016-06-24T19:30:49.485Z",

                "domain-uuid" => "b957755a-0c00-4895-b196-c0246899cb2e",

                "access-mechanism" => "HTTP",

                "remote-address" => "127.0.0.1/127.0.0.1",

                "outcome" => "success",

                "operations" => [{

                    "name" => "org.jboss.testlog",

                    "category" => "org.jboss.testlog",

                    "filter-spec" => undefined,

                    "handlers" => undefined,

                    "level" => "INFO",

                    "use-parent-handlers" => true,

                    "address" => [

                        ("profile" => "default"),

                        ("subsystem" => "logging"),

                        ("logger" => "org.jboss.testlog")

                    ],

                    "operation" => "add",

                    "operation-headers" => {

                        "access-mechanism" => "HTTP",

                        "caller-type" => "user"

                    }

                }]

            },

            {

                "operation-date" => "2016-06-24T19:30:15.695Z",

                "domain-uuid" => "e08c4b39-c691-433b-8bae-8a81dcb6e50c",

                "access-mechanism" => "HTTP",

                "remote-address" => "127.0.0.1/127.0.0.1",

                "outcome" => "success",

                "operations" => [{

                    "operation" => "composite",

                    "address" => [],

                    "steps" => [{

                        "address" => [

                            ("profile" => "default"),

                            ("subsystem" => "transactions")

                        ],

                        "operation" => "write-attribute",

                        "name" => "statistics-enabled",

                        "value" => true

                    }],

                    "operation-headers" => {

                        "access-mechanism" => "HTTP",

                        "caller-type" => "user"

                    }

                }]

            },

            {

                "operation-date" => "2016-06-24T19:30:05.170Z",

                "domain-uuid" => "397f292f-ffab-49eb-a0b8-52a283ed0868",

                "access-mechanism" => "HTTP",

                "remote-address" => "127.0.0.1/127.0.0.1",

                "outcome" => "success",

                "operations" => [{

                    "user-name" => "sa",

                    "security-domain" => "",

                    "jndi-name" => "java:jboss/datasources/ExampleDS",

                    "pool-name" => "",

                    "new-connection-sql" => "",

                    "connection-url" => "jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE",

                    "driver-class" => "",

                    "datasource-class" => "",

                    "driver-name" => "h2",

                    "valid-connection-checker-class-name" => "",

                    "check-valid-connection-sql" => "",

                    "background-validation" => false,

                    "validate-on-match" => false,

                    "stale-connection-checker-class-name" => "",

                    "exception-sorter-class-name" => "",

                    "share-prepared-statements" => false,

                    "jta" => true,

                    "use-ccm" => true,

                    "transaction-isolation" => "",

                    "set-tx-query-timeout" => false,

                    "statistics-enabled" => false,

                    "track-statements" => "NOWARN",

                    "use-fast-fail" => false,

                    "allow-multiple-users" => false,

                    "spy" => false,

                    "enabled" => false,

                    "password" => "sa",

                    "name" => "enabled",

                    "address" => [

                        ("profile" => "default"),

                        ("subsystem" => "datasources"),

                        ("data-source" => "ExampleDS")

                    ],

                    "operation" => "write-attribute",

                    "value" => true,

                    "operation-headers" => {

                        "access-mechanism" => "HTTP",

                        "caller-type" => "user"

                    }

                }]

            },

            {

                "operation-date" => "2016-06-24T19:30:01.052Z",

                "domain-uuid" => "95ed4fe3-1fa4-48e8-b7d0-bf9dfc5f1e42",

                "access-mechanism" => "HTTP",

                "remote-address" => "127.0.0.1/127.0.0.1",

                "outcome" => "success",

                "operations" => [{

                    "user-name" => "sa",

                    "security-domain" => "",

                    "jndi-name" => "java:jboss/datasources/ExampleDS",

                    "pool-name" => "",

                    "new-connection-sql" => "",

                    "connection-url" => "jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE",

                    "driver-class" => "",

                    "datasource-class" => "",

                    "driver-name" => "h2",

                    "valid-connection-checker-class-name" => "",

                    "check-valid-connection-sql" => "",

                    "background-validation" => false,

                    "validate-on-match" => false,

                    "stale-connection-checker-class-name" => "",

                    "exception-sorter-class-name" => "",

                    "share-prepared-statements" => false,

                    "jta" => true,

                    "use-ccm" => true,

                    "transaction-isolation" => "",

                    "set-tx-query-timeout" => false,

                    "statistics-enabled" => false,

                    "track-statements" => "NOWARN",

                    "use-fast-fail" => false,

                    "allow-multiple-users" => false,

                    "spy" => false,

                    "enabled" => true,

                    "password" => "sa",

                    "name" => "enabled",

                    "address" => [

                        ("profile" => "default"),

                        ("subsystem" => "datasources"),

                        ("data-source" => "ExampleDS")

                    ],

                    "operation" => "write-attribute",

                    "value" => false,

                    "operation-headers" => {

                        "access-mechanism" => "HTTP",

                        "caller-type" => "user"

                    }

                }]

            },

            {

                "operation-date" => "2016-06-24T19:24:06.687Z",

                "domain-uuid" => "aa4e799c-7ac1-4a90-96a1-b8e88058af3f",

                "access-mechanism" => "NATIVE",

                "remote-address" => "127.0.0.1/127.0.0.1",

                "outcome" => "success",

                "operations" => [{

                    "address" => [

                        ("host" => "master"),

                        ("core-service" => "management"),

                        ("service" => "configuration-changes")

                    ],

                    "operation" => "write-attribute",

                    "name" => "max-history",

                    "value" => 20,

                    "operation-headers" => {

                        "caller-type" => "user",

                        "access-mechanism" => "NATIVE"

                    }

                }]

            },

            {

                "operation-date" => "2016-06-24T17:17:47.737Z",

                "access-mechanism" => "NATIVE",

                "remote-address" => "127.0.0.1/127.0.0.1",

                "outcome" => "success",

                "operations" => [{

                    "address" => [("host" => "master")],

                    "operation" => "reload",

                    "operation-headers" => {

                        "caller-type" => "user",

                        "access-mechanism" => "NATIVE"

                    }

                }]

            },

            {

                "operation-date" => "2016-06-24T16:56:40.487Z",

                "domain-uuid" => "a6de0c9b-600b-4a3a-9166-032753e48679",

                "access-mechanism" => "HTTP",

                "remote-address" => "127.0.0.1/127.0.0.1",

                "outcome" => "success",

                "operations" => [{

                    "name" => "pool2",

                    "max-threads" => 10L,

                    "address" => [

                        ("profile" => "default"),

                        ("subsystem" => "batch-jberet"),

                        ("thread-pool" => "pool2")

                    ],

                    "operation" => "add",

                    "operation-headers" => {

                        "access-mechanism" => "HTTP",

                        "caller-type" => "user"

                    }

                }]

            },

     

    The result shows a standard set of attributes, as there many attributes to be displayed, they must be displayed in a tabular mode, read-only.

    There will be no automatic update, the user must click on the refresh button to update the GUI to the latest configuration changes for the selected host.

     

     

    GUI Proposals

     

    As these data are associated to the host level, a good place to show is at the drop down menu for each host item, see prototype images.

    notfications1.png

     

    A panel as the following should be displayed.

    There is a button to enable/disable the configuration-changes at

    /host=master/subsystem=core-management/service=configuration-changes
               

     

    The "enable" button will ask the user to input the number of history size, it is a optional field (default is 10). Then it will add the service as

    /host=master/subsystem=core-management/service=configuration-changes:add(max-history=20)
               

     

    The disable button will remove the service.

     

    The standard fields will be displayed in the table: data, access mechanism, remote address, resource and operation.

    When the user selects any item from the table, the remaining data will be displayed in the section named "Configuration Change Details" below the table as raw results for the selected item.

    There is a "refresh" button to reload the configuration-changes:list-changes

    A text field named "quick filter" is to be added, it will filter the results in the table, as the user types in it.

    Also there should be a limit of 20 items to show in the table and a pagination component should be added.

    notfications2.png

     

     

     

    Related issues

     

    Configuration Change reporting

    [WFCORE-671] Configuration change reporting - JBoss Issue Tracker

     

    Configuration Change reporting - HAL

    [HAL-616] Configuration Change Notifications - JBoss Issue Tracker

     

    Design notes for Configuration changes in domain mode

    Design notes for moving Configuration changes to the Core Management Subsystem