# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
#
# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0

image:
  credential:
    secretName: &image-secret-name registry-credential
    registry: registry.aetherproject.org
    username: changeit
    password: changeit

import:
  onos-classic:
    enabled: true
  stratum:
    enabled: true
  pfcp-agent:
    enabled: false
  dbuf:
    enabled: false
  int-host-reporter:
    enabled: false
  di-topology-watchdog:
    enabled: false
  di-metrics-exporter:
    enabled: false

onos-classic:
  image:
    repository: registry.aetherproject.org/tost/tost
    tag: 1.0.2
    pullSecrets:
      - *image-secret-name

  replicas: 3

  ports:
    - name: up4
      port: 51001
    - name: east-west
      port: 9876
    - name: cli
      port: 8101
    - name: ui
      port: 8181

  apps:
    - org.onosproject.lldpprovider
    - org.onosproject.hostprovider
    - org.onosproject.netcfghostprovider
    - org.onosproject.gui
    - org.onosproject.drivers.barefoot
    - org.onosproject.segmentrouting
    - org.onosproject.t3
    - org.omecproject.up4
    - org.stratumproject.fabric-tna
    - org.onosproject.dhcprelay
    - org.onosproject.hostprobingprovider

  logging:
    karafVersion: 4.2.14
    config: |
      # Common pattern layout for appenders
      log4j2.stdout.pattern = %d{RFC3339} %-5level [%c{1}] %msg%n%throwable

      # Root logger
      log4j2.rootLogger.level = INFO

      # OSGi appender
      log4j2.rootLogger.appenderRef.PaxOsgi.ref = PaxOsgi
      log4j2.appender.osgi.type = PaxOsgi
      log4j2.appender.osgi.name = PaxOsgi
      log4j2.appender.osgi.filter = *

      # stdout appender
      log4j2.rootLogger.appenderRef.Console.ref = Console
      log4j2.appender.console.type = Console
      log4j2.appender.console.name = Console
      log4j2.appender.console.layout.type = PatternLayout
      log4j2.appender.console.layout.pattern = ${log4j2.stdout.pattern}

      # SSHD logger
      log4j2.logger.sshd.name = org.apache.sshd
      log4j2.logger.sshd.level = INFO

      # Spifly logger
      log4j2.logger.spifly.name = org.apache.aries.spifly
      log4j2.logger.spifly.level = WARN

  annotations:
    fluentbit.io/parser: onos

  atomix:
    replicas: 3
    persistence:
      enabled: false

  # Please check the README to learn more
  config:
    netcfg: >
      {}
    componentConfig: {}
  # netcfg: >
  #     {
  #     "devices": {
  #         "device:leaf1": {
  #             "segmentrouting": {
  #                 "ipv4NodeSid": 101,
  #                 "ipv4Loopback": "10.11.22.33",
  #                 "routerMac": "aa:bb:cc:dd:ee:ff",
  #                 "pairDeviceId" : "device:leaf2",
  #                 "pairLocalPort" : 260,
  #                 "isEdgeRouter": true,
  #                 "adjacencySids": []
  #             }
  #         }
  #     }
  # }
  # componentConfig:
  #   "org.onosproject.net.host.impl.HostManager": >
  #     {
  #       "monitorHosts": "true",
  #       "probeRate": "10000"
  #     }

stratum:
  image:
    registry: docker.io
    repository: stratumproject/stratum-bfrt
    tag: 21.12-9.5.0
    pullPolicy: IfNotPresent

  extraParams:
    - "-max_log_size=0"
    - "-write_req_log_file=''"
    - "-read_req_log_file=''"
    - "-v=0"
    - "-minloglevel=0"
    - "-bf_switchd_background=false"
    - "-colorlogtostderr=false"
    - "-logtostderr=true"

  annotations:
    fluentbit.io/parser: stratum

  # Specify nodeSelector to pin Stratum to switches only
  #
  # nodeSelector:
  #   node-role.aetherproject.org: switch

  # Override NoSchedule for Stratum to be scheduled on switches
  #
  # tolerations:
  #   - key: node-role.aetherproject.org
  #     value: switch
  #     effect: NoSchedule

  # Please check the README to learn more
  # chassis_config:
  #   "leaf1": >
  #     description: "Default Chassis Config for Edgecore Wedge100BF-32X"
  #     chassis {
  #       platform: PLT_GENERIC_BAREFOOT_TOFINO
  #       name: "Edgecore Wedge100BF-32x"
  #     }
  #     nodes {
  #       id: 1
  #       slot: 1
  #       index: 1
  #     }
  #     singleton_ports {
  #       id: 164
  #       name: "5/0"
  #       slot: 1
  #       port: 5
  #       speed_bps: 40000000000
  #       config_params {
  #         admin_state: ADMIN_STATE_ENABLED
  #         autoneg: TRI_STATE_FALSE
  #       }
  #       node: 1
  #     }


pfcp-agent:
  images:
    tags:
      init: registry.aetherproject.org/tools/busybox:stable
      pfcpiface: "registry.aetherproject.org/proxy/omecproject/upf-epc-pfcpiface:master-fcdbc95"
    pullPolicy: Always
    pullSecrets:
      - *image-secret-name
  nodeSelectors:
    enabled: false
    pfcp:
      label: omec-upf
      value: enabled
  resources:
    enabled: true
    pfcpiface:
      requests:
        cpu: 256m
        memory: 128Mi
      limits:
        cpu: 256m
        memory: 128Mi
  config:
    coreDump:
      enabled: false
      path: /tmp/coredump
    pfcp:
      cfgFiles:
        upf.json:
          measure: true
          enable_p4rt: true
          p4rtciface:
            # Should be the same as s1uAddr in ONOS netcfg for the UP4 app.
            access_ip: "172.17.0.1/32"
            # Do not change unless you are deploying ONOS in a custom way.
            p4rtc_server: "sdfabric-onos-classic-hs.sdfabric"
            p4rtc_port: "51001"
  service:
    type: ClusterIP
    #externalIp:
    #annotations:

dbuf:
  image:
    repository: registry.aetherproject.org/tost/dbuf
    pullPolicy: Always
    tag: "1.0.0"
    pullSecrets:
      - *image-secret-name
  extraParams:
    - '"-max_queues=1024"'
  replicaCount: 1
  sriovNICSize: 1
  sriovResourceName: intel_sriov_netdevice
  # Change both in the same time
  multusNetworkName: dbuf-sriov
  podAnnotations:
    k8s.v1.cni.cncf.io/networks: dbuf-sriov@net0
  podSecurityContext: {}
  resources:
    requests:
      intel.com/intel_sriov_netdevice: "1"
    limits:
      intel.com/intel_sriov_netdevice: "1"
  nodeSelector: {}
  tolerations: []
  affinity: {}
  # onos inforamtion
  onos:
    server: sdfabric-onos-classic-hs.sdfabric
    port: 8181
    username: onos
    password: rocks
  dataplane:
    port: 2152
    interface: "net0"
  prometheus_enable: true
  service:
    stats:
      port: 8080
      protocol: TCP
    grpc:
      port: 10000
      protocol: TCP
  # two options for ipam, dhcp or host-local
  # static is for host-local ipam
  network:
    #  ipam: dhcp
    ipam: host-local
    static:
      subnets: "10.56.217.0/24"
      gateway: "10.56.217.1"
    # route the following subnets via sr-iov interface
    # route: 10.56.215.0/24,10.56.214.0/24
    route: ""
    #vlan:

int-host-reporter:
  image:
    repository: registry.hub.docker.com/opennetworking/int-host-reporter
    pullPolicy: Always
    # Overrides the image tag whose default is the chart appVersion.
    tag: "latest"

  cni: cilium
  dataInterface: enp0s8
  intCollector: 192.168.33.50:30001

  intWatchlistRules:
    # - protocol: "UDP"
    #   src-addr: "192.168.99.50/32"
    #   dst-addr: "192.168.99.20/32"
    # - protocol: "TCP"
    #   src-addr: "192.168.99.50/32"
    #   dst-addr: "192.168.99.20/32"

di-topology-watchdog:
  image:
    pullSecrets:
      - *image-secret-name
  onosAddr: sdfabric-onos-classic-hs.tost:8181

di-metrics-exporter:
  image:
    pullSecrets:
      - *image-secret-name
