# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
#
# SPDX-License-Identifier: Apache-2.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
