# 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-d2e5b8c
  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
    serviceType: ClusterIP
    singleInterface: false
    networkTopo:
      - upfAddr: "192.168.252.3/32"
        upfGw: "192.168.251.1"
    sriov:
      enabled: disabled
      resourceName: "intel.com/intel_sriov_vfio"
    ipam: static
    cniPlugin: macvlan # supported CNIs: sriov, macvlan, host-device
    iface: data # master in macvlan or device in host-device
    gnb:
      ip: 192.168.251.5/24 #user plane IP at gnb if 2 separate interface provided
    httpServer:
      enable: false
      ipAddr: "POD_IP"
      port: 6000
    profile:
      enable: true
      port: 5000
    ngapp:
      port: 38412
      nodePort:
        enabled: false
        port: 30071
    yamlCfgFiles:
      gnb.conf:
        info:
          version: 1.0.0
          description: gNodeB sim initial configuration
        logger:
          logLevel: info # how detailed the log will be, values: trace, debug, info, warn, error, fatal, panic
        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" #default icmp pkt destination
              opc: "981d464c7c52eb6e5036234984ad0bcf"
              key: "5122250214c33e723a5dd523fc145fc0"
              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
              opc: "981d464c7c52eb6e5036234984ad0bcf"
              key: "5122250214c33e723a5dd523fc145fc0"
              plmnId:
                mcc: 208
                mnc: 93
              dataPktCount: 5 # Number of UL user data packets to be transmitted. Common for all UEs
              defaultAs: "192.168.250.1" #default icmp pkt destination
            - profileType: anrelease
              profileName: profile3
              enable: false
              gnbName: gnb1
              startImsi: 208930100007497
              ueCount: 5
              opc: "981d464c7c52eb6e5036234984ad0bcf"
              key: "5122250214c33e723a5dd523fc145fc0"
              plmnId:
                mcc: 208
                mnc: 93
              defaultAs: "192.168.250.1" #default icmp pkt destination
            - profileType: uetriggservicereq
              profileName: profile4
              enable: false
              gnbName: gnb1
              startImsi: 208930100007497
              ueCount: 5
              opc: "981d464c7c52eb6e5036234984ad0bcf"
              key: "5122250214c33e723a5dd523fc145fc0"
              plmnId:
                mcc: 208
                mnc: 93
              defaultAs: "192.168.250.1" #default icmp pkt destination
            - profileType: deregister
              profileName: profile5
              enable: false
              gnbName: gnb1
              startImsi: 208930100007497
              ueCount: 5
              opc: "981d464c7c52eb6e5036234984ad0bcf"
              key: "5122250214c33e723a5dd523fc145fc0"
              plmnId:
                mcc: 208
                mnc: 93
              defaultAs: "192.168.250.1" #default icmp pkt destination
            - profileType: nwtriggeruedereg # profile type
              profileName: profile6 # 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: 208930100007497 # First IMSI. Subsequent values will be used if ueCount is more than 1
              ueCount: 5 # Number of UEs for for which the profile will be executed
              defaultAs: "192.168.250.1" #default icmp pkt destination
              perUserTimeout: 100 #if no expected event received in this time then treat it as failure
              opc: "981d464c7c52eb6e5036234984ad0bcf"
              key: "5122250214c33e723a5dd523fc145fc0"
              plmnId: # Public Land Mobile Network ID, <PLMN ID> = <MCC><MNC>. Should match startImsi
                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: uereqpdusessrelease # profile type
              profileName: profile7 # 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: 208930100007497 # First IMSI. Subsequent values will be used if ueCount is more than 1
              ueCount: 5 # Number of UEs for for which the profile will be executed
              opc: "981d464c7c52eb6e5036234984ad0bcf"
              key: "5122250214c33e723a5dd523fc145fc0"
              plmnId: # Public Land Mobile Network ID, <PLMN ID> = <MCC><MNC>. Should match startImsi
                mcc: 208 # Mobile Country Code (3 digits string, digit: 0~9)
                mnc: 93 # Mobile Network Code (2 or 3 digits string, digit: 0~9)
              defaultAs: "192.168.250.1" #default icmp pkt destination
