{{/*
  ============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-cloudify-manager" "dcae-config-binding-service" "dcae-dashboard" "dcae-deployment-handler" "dcae-inventory-api" "dcae-policy-handler" "dcae-servicechange-handler" "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 }}

