# 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
    sriovDp: docker.io/nfvpe/sriov-device-plugin:v3.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:
  sriov:
    enabled: true
    # Provide interface used as a SR-IOV PF
    # If your cluster has multiple nodes with different interface names,
    # simply provide the whole list
    resourceList:
      # Provide PF name with its VFs are bounded to vfio-pci driver
      vfio:
        pfNames:
          - eno1
      # Provide PF name with its VFs bounded to PF's driver
      # The driver name must be specified to prevent one interface is
      # registered to both vfio and netdevice resource pools
      # NOTE: netDevice is required to use CDN service
      #netDevice:
      #  pfNames:
      #    - eno2
      #  drivers:
      #    - ixgbevf
  spgwu:
    # Provide the S1U and SGI networks facing device name and IP address
    s1u:
      device: s1u-net
      ip: 119.0.0.3/24
    sgi:
      device: sgi-net
      ip: 13.1.1.3/24
    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-cp-comm
      port: 21
    dpComm:
      nodePort:
        enabled: false
        port: 30020
    # Set "--no-pci --vdev eth_af_packet0,iface=s1u-net --vdev eth_af_packet1,iface=sgi-net"
    # when sriov is disabled
    devices: ""

networks:
  cniPlugin: vfioveth
  # Currently, we do not support dynamic IP allocation
  ipam: static
  s1u:
    subnet: 119.0.0.0/24
    mask: 255.255.255.0
    gateway: 119.0.0.254
  sgi:
    subnet: 13.1.1.0/24
    mask: 255.255.255.0
    gateway: 13.1.1.254
