{{/*
  ============LICENSE_START========================================================
  =================================================================================
  Copyright (c) 2021 J. F. Lucas. All rights reserved.
  =================================================================================
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
  =============LICENSE_END=========================================================
*/}}

{{/*

  This template generates a JSON file with an array containing the names of the
  components that the healthcheck container always expects to see--that is, the
  components that are enabled in the top-level values.yaml file.

  The code loops through the list of components ($components) and checks each component's
  entry in the values.yaml file is set to "enabled".  It adds the name of each enabled
  component to the list.

  There is a bit of Helm trickery here--the code uses a dict ($enabled), because that's
  apparently the only way to create a variable outside of a range loop that can be updated
  from within the range loop.  The code here generates a list of the components that are
  enabled in values.yaml, and stores it into the list called "enabled" in the dictionary
  $enabled.

  Note also the assignment to an otherwise unused variable ($x) in the loop.  Without that
  assignment, the updated value of the $enabled.enabled list would be rendered into the
  file each time an enabled component is found.

*/}}

{{- $ctx := . -}}
{{- $components := list "dcae-hv-ves-collector" "dcae-prh" "dcae-tcagen2" "dcae-ves-collector" "dcae-ves-openapi-manager" -}}
{{- $enabled := dict "enabled" list -}}
{{- range $components -}}
  {{- if index $ctx.Values . "enabled" -}}
    {{- $x:= . | append $enabled.enabled  | set $enabled "enabled" -}}
  {{- end -}}
{{- end -}}
{{- $enabled.enabled | toJson }}


