Versions Compared

Key

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

...

  • user gets identified by token (basicAuth or JWT)
  • Additional API in bundle data-provider
  • Create a settings entry in the database if none exists
  • Delivers back all settings of a user
  • Updates the settings of a user 
  • Can delete (reset) settings of a user

 Open Questions:

  • model is using camelCase for properties
  • subItems have to be also JSONObjects, not Arrays or simple typeswhen should the initial settings entry of a user be created? When settings are updated / saved for the first time?
  • UI is responsible for data-structure → so initial data is writting written by UI
    • Use PUT or PATCH for updating entries? (settings may grow over time, eg. dashboard, networkmap, ...) Should the entire settings object be send or only a partial one?
      • PUT!
      • partial will be implemented
    • If we use PUT, do we need POST?
      • no
    • Should settings be queryable by section? ( eg. dashboard, networkmap, ...)
      • filter only for root element key
      • empty data on server will return empty json object: "{}"
    • partial updates and requests are possible ( (filter) by root element key, see examples)

    Default values for deployment

    It is now possible to deploy a default userdata file ($ODL_HOME/etc/userdata-defaults.json) into the SDNC container which delivers a merge of its values and the DB entry of the userdata.

    Global settings for all users should be placed here, for example, available themes for the Network Map.

    Extension of data-provider

    OperationExpected result
    GET /userdataGets all the settings of a specified user
    GET /userdata/{key}Gets the subsettings of a spefic specific user for rootElem[key]
    PUT /userdataCreates/Updates settings entry of a user
    PUT /userdata/{key}Creates/Updates settings entry of a user for rootElem[key]
    DELETE /userdataDeletes settings entry of a user
    DELETE /userdata/{key}Deletes settings entry of a user for rootElem[key]

    In fact, that jetty servlets can also handle camelCase URLs it is easily possible to filter for the correct property.

    Examples

    Read settings data of a user

    ...

    Code Block
    {
        "networkMap":{
            "startupPosition": {"lat": 52.5095, "lon":13.3290, "zoom": 10},
            "tileOpacity": 90,
            "styling":{
                "theme": "light"
            }
        },
    	"networkMapThemes":{
    		"themes": [
        		{"key": "light", "site": "#11b4da", "selectedSite": "#116bda", "fiberLink": "#1154d9", "microwaveLink": "#039903"}
    		]
    	},
        "dashboard":{
            "color":"#F00"
        }
    }


    GET /userdata/networkMap

    ...

    Code Block
    {
        "networkMap":{
            "startupPosition": {"lat": 52.5095, "lon":13.3290, "zoom": 10},
            "tileOpacity": 90,
            "styling":{
                "theme": "light"
            }
        },
        "dashboard":{
            "color":"#F00"
        }
    }

    Write partial settings data of a user

    PUT /userdata/networkMap

    Code Block
    {
        "startupPosition": {"lat": 52.5095, "lon":13.3290, "zoom": 10},
        "tileOpacity": 90,
        "styling":{
            "theme": "light"
        }
    }

    ...