# Copyright © 2017 Amdocs, Bell Canada
#
# 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.

#{{ if not .Values.disablePolicyMariadb }}
apiVersion: v1
kind: Service
metadata:
  name: mariadb
  namespace: "{{ .Values.nsPrefix }}"
  labels:
    app: mariadb
spec:
  ports:
  - name: 3306-port
    port: 3306
  selector:
    app: mariadb
  clusterIP: None
#{{ end }}
#{{ if not .Values.disablePolicyNexus }}
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: nexus
  name: nexus
  namespace: "{{ .Values.nsPrefix }}"
spec:
  ports:
  - name: nexus-port
    port: 8081
  selector:
    app: nexus
  clusterIP: None
#{{ end }}
#{{ if not .Values.disablePolicyDrools }}
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: drools
  name: drools
  namespace: "{{ .Values.nsPrefix }}"
spec:
  ports:
  - name: "drools-port"
    port: 6969
    nodePort: {{ .Values.nodePortPrefix }}17
  - name: "drools-port2"
    port: 9696
    nodePort: {{ .Values.nodePortPrefix }}21
  selector:
    app: drools
  type: NodePort
#{{ end }}
#{{ if not .Values.disablePolicyPap }}
---
apiVersion: v1
kind: Service
metadata:
  name: pap
  namespace: "{{ .Values.nsPrefix }}"
  labels:
    app: pap
spec:
  ports:
  - name: 8443-port
    port: 8443
    nodePort: {{ .Values.nodePortPrefix }}19
  - name: 9091-port
    port: 9091
    nodePort: {{ .Values.nodePortPrefix }}18
  selector:
    app: pap
  type: NodePort
#{{ end }}
#{{ if not .Values.disablePolicyPdp }}
---
apiVersion: v1
kind: Service
metadata:
  name: pdp
  namespace: "{{ .Values.nsPrefix }}"
  labels:
    app: pdp
  annotations:
    msb.onap.org/service-info: '[
      {
          "serviceName": "policy-pdp",
          "version": "v1",
          "url": "/pdp",
          "protocol": "REST",
          "port": "8081",
          "visualRange":"1"
      },
      {
          "serviceName": "policy-pdp-deprecated",
          "version": "v1",
          "url": "/pdp",
          "protocol": "REST",
          "port": "8081",
          "visualRange":"1",
          "path":"/pdp"
      }
      ]'
spec:
  ports:
  - name: 8081-port
    port: 8081
    nodePort: {{ .Values.nodePortPrefix }}20
  selector:
    app: pdp
  type: NodePort
#{{ end }}
#{{ if not .Values.disablePolicyBrmsgw }}
---
apiVersion: v1
kind: Service
metadata:
  name: brmsgw
  namespace: "{{ .Values.nsPrefix }}"
  labels:
    app: brmsgw
spec:
  ports:
  - name: 9989-port
    port: 9989
    nodePort: {{ .Values.nodePortPrefix }}16
  selector:
    app: brmsgw
  type: NodePort
#{{ end }}
