---
# 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.resdentialService.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.resdentialService.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 }}