116 lines
3.3 KiB
Jsonnet
116 lines
3.3 KiB
Jsonnet
# Tag to add a shared network
|
|
#
|
|
# Examples:
|
|
|
|
# Default imports
|
|
local action = std.parseJson(std.extVar('action'));
|
|
local user_data = std.parseJson(std.extVar('user_data'));
|
|
local docker_data = std.parseJson(std.extVar('docker_data'));
|
|
|
|
# Internal vars
|
|
local docker_services = std.get(docker_data, 'services', default={});
|
|
local docker_services_names = std.objectFields(docker_services);
|
|
|
|
# User options with defaults
|
|
local default_svcs = std.get(user_data, 'PAASIFY_STACK_SVCS');
|
|
|
|
# Build default config
|
|
local default_vars(user_data) =
|
|
local ns = std.get(user_data, 'paasify_ns', 'NS');
|
|
local stack = std.get(user_data, 'paasify_stack', 'APP');
|
|
local sep = std.get(user_data, 'paasify_sep', '_');
|
|
local default_name = ns + sep + stack ;
|
|
{
|
|
app_network_ident: std.get(user_data, 'app_network', 'default'),
|
|
app_network_name: std.get(user_data, 'app_network_name', default_name),
|
|
app_network_external: std.get(user_data, 'app_network_external',true),
|
|
};
|
|
|
|
#local conf = config_default + user_data;
|
|
|
|
local conf_override(conf) =
|
|
#local conf = default_vars(user_data) + user_data;
|
|
conf + default_vars(conf) ;
|
|
|
|
|
|
|
|
# Process
|
|
local docker_transform(conf, docker_data) =
|
|
local service = std.get(conf, 'paasify_stack_service');
|
|
local services = std.split(std.get(conf, 'paasify_stack_services', service), ',');
|
|
#docker_data + {
|
|
# 'zz': conf,
|
|
#};
|
|
{
|
|
networks+: {
|
|
[conf.app_network_ident]: {
|
|
name: conf.app_network_name,
|
|
external: conf.app_network_external,
|
|
}
|
|
},
|
|
services+: {
|
|
[svc_name]+: { networks+: { [conf.app_network_ident]: null } } for svc_name in services
|
|
},
|
|
};
|
|
|
|
|
|
# Return result
|
|
# -------------------------------------
|
|
|
|
if action == 'conf_schema' then
|
|
# Return the schema
|
|
{} # conf_schema
|
|
|
|
else if action == 'vars_docker' then
|
|
local default_data = default_vars(user_data);
|
|
local common = { [x]: std.get(user_data, x, default_data[x] ) for x in std.objectFields(default_data) };
|
|
{
|
|
input: user_data,
|
|
|
|
# Mendatory fields
|
|
diff: conf_override( common ),
|
|
merged: conf_override( default_data + user_data ),
|
|
}
|
|
|
|
else if action == 'docker_transform' then
|
|
{
|
|
# input: user_data,
|
|
diff: docker_transform(conf_override(user_data), docker_data),
|
|
merged: docker_data + self.diff,
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
###############3
|
|
##
|
|
##
|
|
##
|
|
### Internal vars
|
|
##local docker_services = std.get(docker_data, 'services', default={});
|
|
##local docker_services_names = std.objectFields(docker_services);
|
|
#
|
|
## System options
|
|
#local service_ns = std.get(user_data, 'namespace', default=std.get(stack_data, 'namespace', default=''));
|
|
#local service_stack = std.get(user_data, 'name', default=std.get(stack_data, 'current_stack', default=''));
|
|
#
|
|
#local default_name = if std.isString(service_ns) then service_ns + "_" + service_stack else service_stack;
|
|
#
|
|
## User options with defaults
|
|
#local network_name = std.get(user_data, 'network_name', default='default');
|
|
#local service_name = std.get(user_data, 'service', default='app');
|
|
#local services_names = std.get(user_data, 'services', default=[service_name]);
|
|
|
|
# if action == 'vars_docker' then
|
|
# vars_docker(user_data)
|
|
# #conf_override(user_data)
|
|
# else if action == 'docker_transform' then
|
|
# {
|
|
# diff: docker_transform(
|
|
# conf_override(user_data),
|
|
# docker_data),
|
|
# merged: docker_data + self.diff,
|
|
# }
|
|
|