# 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.disableSdncSdncDbhost }}
apiVersion: v1
kind: Service
metadata:
  name: dbhost
  namespace: "{{ .Values.nsPrefix }}"
  labels:
    app: sdnc-dbhost
spec:
  ports:
    - port: 3306
  selector:
    app: sdnc-dbhost
  clusterIP: None
---
# Client service for connecting to any MySQL instance for reads.
# Only master: sdnc-dbhost-0 accepts the write request.
apiVersion: v1
kind: Service
metadata:
  name: dbhost-read
  namespace: "{{ .Values.nsPrefix }}"
  labels:
    app: sdnc-dbhost
spec:
  ports:
  - name: sdnc-dbhost
    port: 3306
  selector:
    app: sdnc-dbhost
---
apiVersion: v1
kind: Service
metadata:
  name: sdnctldb01
  namespace: "{{ .Values.nsPrefix }}"
  labels:
    app: sdnc-dbhost
spec:
  ports:
    - port: 3306
  selector:
    app: sdnc-dbhost
  clusterIP: None
---
apiVersion: v1
kind: Service
metadata:
  name: sdnctldb02
  namespace: "{{ .Values.nsPrefix }}"
  labels:
    app: sdnc-dbhost
spec:
  ports:
    - port: 3306
  selector:
    app: sdnc-dbhost
  clusterIP: None
#{{ end }}
#{{ if not .Values.disableSdncSdnc }}
---
apiVersion: v1
kind: Service
metadata:
  name: sdnc-dgbuilder
  namespace: "{{ .Values.nsPrefix }}"
  labels:
    app: sdnc-dgbuilder
spec:
  ports:
  - name: "sdnc-dgbuilder-port"
    port: 3000
    targetPort: 3100
    nodePort: {{ .Values.nodePortPrefix }}03
  type: NodePort
  selector:
    app: sdnc-dgbuilder
---
apiVersion: v1
kind: Service
metadata:
  name: sdnhost
  namespace: "{{ .Values.nsPrefix }}"
  labels:
    app: sdnc
  annotations:
    msb.onap.org/service-info: '[
      {
          "serviceName": "sdnc",
          "version": "v1",
          "url": "/",
          "protocol": "REST",
          "port": "8282",
          "visualRange":"1",
          "path": "/"
      }
      ]'
spec:
  ports:
  - name: "sdnc-port-8181"
    port: 8282
    targetPort: 8181
    nodePort: {{ .Values.nodePortPrefix }}02
  - name: "sdnc-port-8101"
    port: 8201
    targetPort: 8101
    nodePort: {{ .Values.nodePortPrefix }}08
  - name: "sdnc-jolokia-port-8080"
    port: 8280
    targetPort: 8080
    nodePort: {{ .Values.nodePortPrefix }}46
  type: NodePort
  selector:
    app: sdnc
---
kind: Service
apiVersion: v1
metadata:
  name: nfs-provisioner
  namespace: "{{ .Values.nsPrefix }}"
  labels:
    app: nfs-provisioner
spec:
  ports:
    - name: nfs
      port: 2049
    - name: mountd
      port: 20048
    - name: rpcbind
      port: 111
    - name: rpcbind-udp
      port: 111
      protocol: UDP
  selector:
    app: nfs-provisioner
#{{ end }}
#{{ if not .Values.disableSdncSdncPortal }}
---
apiVersion: v1
kind: Service
metadata:
  name: sdnc-portal
  namespace: "{{ .Values.nsPrefix }}"
  labels:
    app: sdnc-portal
  annotations:
    msb.onap.org/service-info: '[
      {
          "serviceName": "sdnc-portal",
          "version": "v1",
          "url": "/",
          "protocol": "UI",
          "port": "8843",
          "visualRange":"0|1"
      }
      ]'
spec:
  ports:
  - name: "sdnc-portal-port"
    port: 8843
    nodePort: {{ .Values.nodePortPrefix }}01
  type: NodePort
  selector:
    app: sdnc-portal
#{{ end }}
#{{ if .Values.enableODLCluster }}
---
apiVersion: v1
kind: Service
metadata:
  name: sdnhost-cluster
  namespace: "{{ .Values.nsPrefix }}"
  labels:
    app: sdnc
  annotations:
    service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
spec:
  ports:
   - name: "sdnc-cluster-port"
     port: 2550
  clusterIP: None
  selector:
    app: sdnc
  sessionAffinity: None
  type: ClusterIP
#{{ end }}
