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