# Copyright 2018 the original author or authors.
#
# 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: Service
metadata:
  name: ro-core
  namespace: voltha
spec:
  clusterIP: None
  ports:
    - name: grpc
      port: 50057
      targetPort: 50057
  selector:
    app: ro-core
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: ro-core
  namespace: voltha
spec:
  replicas: 3
  selector:
    matchLabels:
      app: ro-core
  template:
    metadata:
      labels:
        app: ro-core
      annotations:
        cni: "calico"
    spec:
      containers:
        - name: voltha
          image: voltha-ro-core
          env:
            - name: NAMESPACE
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace
            - name: POD_IP
              valueFrom:
                fieldRef:
                  fieldPath: status.podIP
          args:
            - "/app/ro_core"
            - "-kv_store_type=etcd"
            - "-kv_store_host=etcd.$(NAMESPACE).svc.cluster.local"
            - "-kv_store_port=2379"
            - "-grpc_host=$(POD_IP)"
            - "-grpc_port=50057"
            - "-banner=true"
            - "-ro_core_topic=rocore"
            - "-log_level=0"
          ports:
            - containerPort: 50057
              name: grpc-port
          imagePullPolicy: IfNotPresent



