Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

 A service provider can accomplish all the above just by changing their service definition in the stacks/ folder.


 Example: Hive HBase Enhanced Configs

Hive Enhanced Configs

Features

  • Define theme with custom layout of configs

    • Tabs

    • Sections

    • Sub-sections

  • Place selected configs in the layout defined above

  • Associate UI widget to use for a config

    • Radio Buttons

    • Slider

    • Combo

    • Time Interval Spinner

    • Toggle

    • Directory

    • Directories

    • List

    • Password

    • Text Field

    • Checkbox

    • Text Area

  • Automatic unit conversion for configs which have to be shown in units different from the units being saved as.

    • Memory - B, KB, MB, GB, TB, PB

    • Time - milliseconds, seconds, minutes, hours, days, months, years

    • Percentage - float, percentage

  • Ability to define dependencies between configurations across services (depends-on, depended-by).

  • Ability to dynamically update values of other depended-by configs when a config is changed.

...

    1. Tabs: Multiple tabs can be defined in a layout. Each tab can have its contents laid out using a simple grid-layout using the tab-columns and tab-rows keys.

      In below example the Settings tab has a grid of 3 rows and 2 columns in which sections can be placed.

      "layouts": [
      {
      "name": "default",
      "tabs": [
      {
      "name": "settings",
      "display-name": "Settings",
      "layout": {
      "tab-columns": "2",
      "tab-rows": "3",
      "sections": [ … ]
      }
      }
          ]
      }
      ]
    2. Sections: Each section is defined inside a tab and specifies its location and size inside the tab's grid-layout by using the row-index, column-index, row-span and column-span keys. Being a container itself, it can further define a grid-layout for the sub-sections it contains using the section-rows and section-columns keys.

      In below example the MapReduce section occupies the first cell of the Settings tab grid, and itself has a grid-layout of 1 row and 3 columns.

 

 

    1. "sections": [

...

    1.   {

...

    1.     "name": "section-mr-scheduler",

...

    1.     "display-name": "MapReduce",

...

    1.     "row-index": "0",

...

    1.     "column-index": "0",

...

    1.     "row-span": "1",

...

    1.     "column-span": "1",

...

    1.     "section-columns": "3",

...

    1.     "section-rows": "1",

...

    1.     "subsections": [ ... ]

...

    1.   },

...

    1.   ...
      ]

       

    2. Sub-sections: Each sub-section is defined inside a section and specifies its location and size inside the section's grid-layout using the row-index, column-index, row-span and column-span keys. Each section also has an optional border boolean key which tells if a border should encapsulate its content.


...


 

    1. "subsections": [

...

    1.   {

...

    1.     "name": "subsection-mr-scheduler-row1-col1",

...

    1.     "display-name": "MapReduce Framework",

...

    1.     "row-index": "0",

...

    1.     "column-index": "0",

...

    1.     "row-span": "1",

...

    1.     "column-span": "1"

...

    1.   },

...

    1.   ...

...

    1. ]

       

 

 

 

 

  1. Placement: Specifies the order of configurations that are to be placed into each sub-section. Each placement identifies a config, and which sub-section it should appear in. The placement specifies which layout it applies to using the configuration-layout key.

...