---
# Copyright 2017-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: extensions/v1beta1
kind: Deployment
metadata:
  name: device-management
  labels:
    release: {{ .Release.Name }}
spec:
  replicas: {{ .Values.device_management_replicas }}
  template:
    metadata:
      labels:
        app: device-management
        release: {{ .Release.Name }}
    spec:
      containers:
        - name: device-management
          image:  "{{ .Values.global.registry }}{{ .Values.images.device_management.repository }}:{{ tpl .Values.images.device_management.tag . }}"
          imagePullPolicy: "{{ .Values.images.device_management.pullPolicy }}"
          ports:
            - containerPort: 8080
              port: 8080
              protocol: TCP
            - containerPort: 50051
              port: 50051
              protocol: TCP
          env:
          - name: EVENT_NOTIFICATION_DESTIP
            value: "{{ .Values.event_destip }}"
          - name: DEVICE_MANAGEMENT_DESTPORT
            value: "{{ .Values.device_management_httpPort }}"
{{- if .Values.needPersistence }}
          - name: DEVICE_MANAGEMENT_PVMOUNT
            value: {{ .Values.device_management_pv_mount | quote }}
          volumeMounts:
          - name: device-management-persistent-storage
            mountPath: {{ .Values.device_management_pv_mount | quote }}
      volumes:
        - name: device-management-persistent-storage
          persistentVolumeClaim:
            claimName: {{ .Values.pvClaimName }}
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: {{ .Values.pvClaimName }}
spec:
{{- if .Values.useCeph }}
  storageClassName: {{ .Values.storageCephClassName }}
{{- else }}
  storageClassName: {{ .Values.storageLDClassName }}
{{- end }}
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
{{- end }}
