# Copyright 2020-present Open Networking Foundation
#
# SPDX-License-Identifier: Apache-2.0

images:
  repository: "" #default docker hub
  tags:
    init: omecproject/pod-init:1.0.0
    gnbsim: omecproject/5gc-gnbsim:main-6e34bd2
  pullPolicy: IfNotPresent

nodeSelectors:
  enabled: false
  gnbsim:
    label: omec-cp
    value: enabled

resources:
  enabled: true
  gnbsim:
    requests:
      cpu: 2
      memory: 1Gi
    limits:
      cpu: 2
      memory: 1Gi

config:
  useExistingConfigMap: false
  clusterDomain: cluster.local
  coreDump:
    enabled: false
    path: /tmp/coredump
  gnbsim:
    deploy: true
    sriov:
      enabled: disabled
    ipam: static
    cniPlugin: simpleovs #need override value
    gnb:
      ip: 192.168.251.5/24 #user plane IP at gnb if 2 separate interface provided
    profile:
      enable: true
      port: 5000
    ngapp:
      port: 38412
      nodePort:
        enabled: false
        port: 30071
    singleInterface: false
    networkTopo:
      - upfAddr: "192.168.252.3/32"
        upfGw: "192.168.251.1"
    yamlCfgFiles:
      gnb.conf:
        info:
          version: 1.0.0
          description: gNodeB sim initial configuration
        configuration:
          #singleInterface: #this will be added thorugh configmap script
          gnbs: # pool of gNodeBs
            gnb1:
              n2IpAddr: # gNB N2 interface IP address used to connect to AMF 
              n2Port: 9487 # gNB N2 Port used to connect to AMF
              n3IpAddr: 192.168.251.5 # gNB N3 interface IP address used to connect to UPF
              n3Port: 2152 # gNB N3 Port used to connect to UPF
              name: gnb1 # gNB name that uniquely identify a gNB within application
              globalRanId:
                plmnId:
                  mcc: 208 # Mobile Country Code (3 digits string, digit: 0~9)
                  mnc: 93 # Mobile Network Code (2 or 3 digits string, digit: 0~9)
                gNbId: 
                  bitLength: 24
                  gNBValue: "000102" # gNB identifier (3 bytes hex string, range: 000000~FFFFFF)
              supportedTaList:
              - tac: "000001" # Tracking Area Code (3 bytes hex string, range: 000000~FFFFFF)
                broadcastPlmnList:
                  - plmnId:
                      mcc: 208 
                      mnc: 93
                    taiSliceSupportList:
                        - sst: 1 # Slice/Service Type (uinteger, range: 0~255)
                          sd: "010203" # Slice Differentiator (3 bytes hex string, range: 000000~FFFFFF)
              defaultAmf:
                hostName: amf # Host name of AMF
                ipAddr: # AMF IP address
                port: 38412 # AMF port
 
          profiles: # profile information
            - profileType: register # profile type
              profileName: profile1 # uniqely identifies a profile within application
              enable: false # Set true to execute the profile, false otherwise.
              gnbName: gnb1 # gNB to be used for this profile
              startImsi: 208930100007487 #First IMSI. Subsequent values will be used if ueCount is mo    re than 1
              ueCount: 5 # Number of UEs for for which the profile will be executed
              defaultAs: "192.168.250.1"
              plmnId: # Public Land Mobile Network ID, <PLMN ID> = <MCC><MNC>
                mcc: 208 # Mobile Country Code (3 digits string, digit: 0~9)
                mnc: 93 # Mobile Network Code (2 or 3 digits string, digit: 0~9)
            - profileType: pdusessest
              profileName: profile2
              enable: true
              gnbName: gnb1
              startImsi: 208930100007492
              ueCount: 5
              plmnId:
                mcc: 208
                mnc: 93
              dataPktCount: 5 # Number of UL user data packets to be transmitted. Common for all UEs
            - profileType: anrelease
              profileName: profile3
              enable: false
              gnbName: gnb1
              startImsi: 208930100007497
              ueCount: 5
              plmnId:
                mcc: 208
                mnc: 93
            - profileType: uetriggservicereq
              profileName: profile4
              enable: false
              gnbName: gnb1
              startImsi: 208930100007497
              ueCount: 5
              plmnId:
                mcc: 208
                mnc: 93
            - profileType: deregister
              profileName: profile4
              enable: false
              gnbName: gnb1
              startImsi: 208930100007497
              ueCount: 5
              plmnId:
                mcc: 208
                mnc: 93
        logger:
          logLevel: info # how detailed the log will be, values: trace, debug, info, warn, error, fatal, panic 
