# Copyright 2018-present Open Networking Foundation
# Copyright 2018 Intel Corporation
#
# 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.

images:
  tags:
    init: docker.io/omecproject/pod-init:1.0.0
    omecCni: docker.io/omecproject/omec-cni:1.0.0
    spgwu: docker.io/omecproject/ngic-dp:1.0.0
    depCheck: quay.io/stackanetes/kubernetes-entrypoint:v0.3.1
  pullPolicy: IfNotPresent

nodeSelectors:
  enabled: false
  spgwu:
    label: omec-dp
    value: enabled

resources:
  enabled: true
  spgwu:
    requests:
      cpu: 4
      memory: 8Gi
    limits:
      cpu: 4
      memory: 8Gi

config:
  coreDump:
    enabled: false
    path: /tmp/coredump
  sriov:
    enabled: true
  spgwu:
    # Provide the S1U and SGI networks facing device name and IP address
    s1u:
      device: s1u-net
      ip: 192.168.251.3/24
    sgi:
      device: sgi-net
      ip: 192.168.250.3/24
    # Note that zmq is used for cp-dp commmunication when multiple UPFs is set
    # Otherwise, direct UDP communication is used
    # TODO: unify cp-dp comm to ZMQ for both multi and single UPF scenario
    multiUpfs: false
    cpComm:
      # IMPORTANT: when you deploy CP and DP to separate clusters, enable nodePort
      # from both cpComm(omec-control-plane) and dpComm(omec-data-plane) and
      # set "addr" to remote cluster's entry node IP and
      # "port" to cpComm.nodePort.port value configured in omec-control-plane.
      addr: spgwc
      port: 21
    dpComm:
      nodePort:
        enabled: false
        port: 30020
      port: 20
    # Set "--no-pci --vdev eth_af_packet0,iface=s1u-net --vdev eth_af_packet1,iface=sgi-net"
    # when sriov is disabled
    devices: ""
    dpName: "dp1"

networks:
  cniPlugin: vfioveth
  # Currently, we do not support dynamic IP allocation
  ipam: static
  s1u:
    subnet: 192.168.251.0/24
    mask: 255.255.255.0
    gateway: 192.168.251.254
  sgi:
    subnet: 192.168.250.0/24
    mask: 255.255.255.0
    gateway: 192.168.250.250
