docker-compose/.paasify/plugins/docker-net-provider.jsonnet
2022-08-18 22:08:53 -04:00

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,
# }