Skip to content

Commit

Permalink
charts: add option to change path of CSC defaults
Browse files Browse the repository at this point in the history
This is needed as we put Loki inside logging directory,
so the path is not metalk8s/addons/loki/config/loki.yaml
but metalk8s/addons/logging/loki/config/loki.yaml, so
we need to be able to set the path.

Refs: #2682
(cherry picked from commit daea4b2)
  • Loading branch information
alexandre-allard authored and Ebaneck committed Aug 17, 2020
1 parent efff1c0 commit e22be54
Showing 1 changed file with 47 additions and 20 deletions.
67 changes: 47 additions & 20 deletions charts/render.py
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,32 @@ def main():
)
parser.add_argument('values', help="Our custom chart values")

class ActionServiceConfigArgs(argparse.Action):
def __call__(self, parser, args, values, option_string=None):
if len(values) > 3:
raise argparse.ArgumentTypeError(
'Argument "{0}" requires between 1 and 3 arguments'
.format(option_string)
)

name = values.pop(0)
try:
configmap = values.pop(0)
except IndexError:
configmap = 'metalk8s-{0}-config'.format(name)
try:
path = values.pop(0)
except IndexError:
path = 'metalk8s/addons/{0}/config/{1}.yaml'.format(
args.name, name
)

option = getattr(args, self.dest)
if option is None:
setattr(args, self.dest, [[name, configmap, path]])
else:
option.append([name, configmap, path])

'''
To use this argument, follow the format below:
--service-config service_name service_configmap_name
Expand All @@ -189,11 +215,12 @@ def main():
# Todo: Add kind & apiVersion to the service-config nargs
parser.add_argument(
'--service-config',
action='append',
nargs=2,
action=ActionServiceConfigArgs,
nargs='+',
required=False,
dest="service_configs",
help="Example: --service-config grafana metalk8s-grafana-config"
help="Example: --service-config grafana metalk8s-grafana-config "
"metalk8s/addons/prometheus-operator/config/grafana.yaml"
)
parser.add_argument('path', help="Path to the chart directory")
args = parser.parse_args()
Expand All @@ -212,27 +239,27 @@ def main():
doc=fixup_doc(
doc=doc
)
) if doc else None

import_csc_yaml = []
config = []
for name, configmap, path in args.service_configs:
import_csc_yaml.append(
"{{% import_yaml '{0}' as {1}_defaults with context %}}".format(
path, name
)
)
if args.service_configs:
import_csc_yaml = '\n'.join(
("{{% import_yaml 'metalk8s/addons/{0}/config/{1}.yaml' as "
"{1}_defaults with context %}}").format(
args.name, service_config[0]
) for service_config in args.service_configs
)

config = '\n'.join(
("{{%- set {0} = salt.metalk8s_service_configuration"
".get_service_conf('{1}', '{2}', {0}_defaults) %}}").format(
service_config[0], args.namespace, service_config[1]
) for service_config in args.service_configs
config.append(
"{{%- set {0} = salt.metalk8s_service_configuration"
".get_service_conf('{1}', '{2}', {0}_defaults) %}}".format(
name, args.namespace, configmap
)
)
else:
import_csc_yaml = ''
config = ''

sys.stdout.write(START_BLOCK.format(
csc_defaults=import_csc_yaml, configlines=config).lstrip()
csc_defaults='\n'.join(import_csc_yaml),
configlines='\n'.join(config)
).lstrip()
)
sys.stdout.write('\n')

Expand Down

0 comments on commit e22be54

Please sign in to comment.