---
# Copyright 2019-present Open Networking Foundation
#
# 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.

apiVersion: v1
kind: ConfigMap
metadata:
  name: comac-tosca
data:
{{- if .Values.residentialService.enabled }}
  010-rcord-subscriber-service.yaml: |
{{ include "rcord.serviceTosca" .Values.rcord | indent 4 }}
  020-volt-service.yaml: |
{{ include "volt.serviceTosca" .Values.volt | indent 4 }}
  030-fabric-crossconnect-service.yaml: |
{{ include "fabric-crossconnect.serviceTosca" (index .Values "fabric-crossconnect") | indent 4 }}
  031-fixtures.yaml: |
{{ include "att-workflow-driver.serviceTosca"  (index .Values "att-workflow-driver") | indent 4 }}
{{- end }}
  040-onos-service.yaml: |
{{ include "comac.onosTosca" .Values | indent 4 }}
{{- if .Values.fabric.enabled }}
  050-fabric-service.yaml: |
{{ include "fabric.serviceTosca" .Values.fabric | indent 4 }}
{{- end }}
{{- if .Values.residentialService.enabled }}
  060-fixtures.yaml: |
{{ include "comac.basicFixturesTosca" . | indent 4 }}
{{- end }}
  070-vrouter-service.yaml: |
{{ include "vrouter.serviceTosca" .Values.vrouter | indent 4 }}
  080-mcord-subscriber-service.yaml: |
{{ include "mcord-subscriber.serviceTosca" (index .Values "mcord-subscriber") | indent 4 }}
  300-service-graph.yaml: |
{{ include "comac.serviceGraphTosca" . | indent 4 }}