The goal of this MR is to get rid of the low-level usage of map[string]interface{} and provide a more abstract way to interact with data.
The data abstraction layer is going to be the new core of skipper and must handle all data related tasks such as
reading files
decoding data
address data
set data dynamically
merge data
Goals
Reduce the required usage of the raw map[string]interface{} by introducing a Container type which encapsulates the raw map.
Replace the unnecessary complicated []interface{} type used to address data with something based on []string (Path)
Provide a wrapper for actual "Values"
Provide an agnostic codec layer to decouple raw data and decoded map[string]interface{} data
Introduce a new Inventory which is responsible for managing namespaced containers.
Introduce a FileContainer which is going to be the main container type. It will only be able to read data from files.
Introduce a ManagedFileContainer which is going to be used by containers which files are fully managed by Skipper (secrets) and should not be modified manually (maybe even add a hash to ensure that)
The goal of this MR is to get rid of the low-level usage of
map[string]interface{}
and provide a more abstract way to interact with data.The data abstraction layer is going to be the new core of skipper and must handle all data related tasks such as
Goals
Reduce the required usage of the raw
map[string]interface{}
by introducing aContainer
type which encapsulates the raw map.Replace the unnecessary complicated
[]interface{}
type used to address data with something based on[]string
(Path
)Provide a wrapper for actual "Values"
Provide an agnostic codec layer to decouple raw data and decoded
map[string]interface{}
dataInventory
which is responsible for managing namespaced containers.Introduce a
FileContainer
which is going to be the main container type. It will only be able to read data from files.Introduce a
ManagedFileContainer
which is going to be used by containers which files are fully managed by Skipper (secrets) and should not be modified manually (maybe even add a hash to ensure that)