Bug 2116547

Summary: phyc2sys config will be automatically added to ptpconfigs even if it is not included in user PGT
Product: OpenShift Container Platform Reporter: yliu1
Component: NetworkingAssignee: Joseph Richard <josricha>
Networking sub component: ptp QA Contact: obochan <obochan>
Status: CLOSED ERRATA Docs Contact:
Severity: high    
Priority: unspecified CC: bzvonar, keyoung
Version: 4.11   
Target Milestone: ---   
Target Release: 4.12.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2023-01-17 19:54:37 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description yliu1 2022-08-08 19:24:34 UTC
Description of problem:
Currently all ptp configs in ZTP source-cr includes phc2sysOpts option, thus even if user did not include phc2sysOpts in user PGT, it will end up being added to spoke ptpconfigs. 
For PTP dual nic feature, user need to create 2 ptpconfig but only 1 phc2sys should be running. 

Suggest to add a new source-cr that is tailored for dual nic feature (modifying existing ptp source-crs may cause problems in upgrade because policies can become NonCompliant unexpectedly). 


Version-Release number of selected component (if applicable):
4.11

How reproducible:
100%

Steps to Reproduce:
1. configure ptp with dual nic via PGT (one with phc2sysOpts, and one without)
http://registry.kni-qe-0.lab.eng.rdu2.redhat.com:3000/kni-qe/ztp-site-configs/src/cnfde4-4.11/policygentemplates/group-du-sno-ranGen.yaml#L48-L248

2. deploy spoke using above config
3. Check ptp configs and ensure only 1 phyc2sys is running

Actual results:
3. phc2sysOpts is included in both ptpconfigs

Expected results:
3. For dual NIC configs, phc2sysOpts should not be added if user did not add it in PGT


Additional info:
Note "phc2sysOpts: -a -r -n 24" is not added by user, but by default source-cr.

[kni ~]$ oc get ptpconfigs.ptp.openshift.io -A
NAMESPACE       NAME         AGE
openshift-ptp   du-ptp-bc1   38s
openshift-ptp   du-ptp-bc2   38s
[kni ~]$ oc get ptpconfigs.ptp.openshift.io -A -o yaml |grep phc
      phc2sysOpts: -a -r -n 24
      phc2sysOpts: -a -r -m -n 24 -N 8 -R 16

Comment 2 obochan 2022-11-03 07:47:12 UTC
issue is verified in :

[kni ~]$ oc version 
Client Version: 4.11.10
Kustomize Version: v4.5.4
Server Version: 4.12.0-0.nightly-2022-10-25-210451
Kubernetes Version: v1.25.2+4bd0702


[kni ~]$ oc get ptpconfig -n openshift-ptp du-ptp-bc2 -o yaml 
apiVersion: ptp.openshift.io/v1
kind: PtpConfig
metadata:
  creationTimestamp: "2022-11-02T17:31:38Z"
  generation: 1
  name: du-ptp-bc2
  namespace: openshift-ptp
  resourceVersion: "30372"
  uid: 9a7c0bd2-d373-43d6-83dd-9120fcec535c
spec:
  profile:
  - name: bc2
    phc2sysOpts: -s ens1f0 -w -r -m -n 24 -N 8 -R 16
    ptp4lConf: "[ens1f0]\nmasterOnly 0\n[ens1f1]\nmasterOnly 1\n[ens1f2]\nmasterOnly
      1\n[ens1f3]\nmasterOnly 1\n[global]\npriority1   128\npriority2   128\ndomainNumber
      \ 24\nclockAccuracy 0xFE\noffsetScaledLogVariance 0xFFFF\nfree_running  0\nfreq_est_interval
      1\ndscp_event  0\ndscp_general 0 \ndataset_comparison ieee1588\nG.8275.defaultDS.localPriority
      \ 128\nlogAnnounceInterval     -3\nlogSyncInterval         -4\nlogMinDelayReqInterval
      \ -4\nlogMinPdelayReqInterval -4\nannounceReceiptTimeout   3\nsyncReceiptTimeout
      \     0\ndelayAsymmetry          0\nfault_reset_interval    4\nneighborPropDelayThresh
      20000000\nmasterOnly              0\nG.8275.portDS.localPriority 128\nassume_two_step
      \        0\nlogging_level           6\npath_trace_enabled      0\nfollow_up_info
      \         0\nhybrid_e2e              0\ninhibit_multicast_service 0\nnet_sync_monitor
      \       0\ntc_spanning_tree        0\ntx_timestamp_timeout    50\nunicast_listen
      \         0\nunicast_master_table    0\nunicast_req_duration    3600\nuse_syslog
      \             1\nverbose                 0\nsummary_interval        4\nkernel_leap
      \            1\ncheck_fup_sync          0\npi_proportional_const   0.0\npi_integral_const
      \      0.0\npi_proportional_scale   0.0\npi_proportional_exponent  -0.3\npi_proportional_norm_max
      \ 0.7\npi_integral_scale       0.0\npi_integral_exponent    0.4\npi_integral_norm_max
      \   0.3\nstep_threshold          30.0\nfirst_step_threshold    0.00002\nmax_frequency
      \          900000000\nclock_servo             pi\nsanity_freq_limit       0\nntpshm_segment
      \         0\ntransportSpecific       0x0\nptp_dst_mac             01:1B:19:00:00:00\np2p_dst_mac
      \            01:80:C2:00:00:0E\nudp_ttl                 1\nudp6_scope              0x0E\nuds_address
      \            /var/run/ptp4l\nclock_type              BC\nnetwork_transport       L2\ndelay_mechanism
      \        E2E\ntime_stamping           hardware\ntsproc_mode             filter\ndelay_filter
      \           moving_median\ndelay_filter_length     10\negressLatency           0\ningressLatency
      \         0\nboundary_clock_jbod     0\nproductDescription      ;;\nrevisionData
      \           ;;\nmanufacturerIdentity    00:00:00\nuserDescription         ;\ntimeSource
      \             0xA0\n"
    ptp4lOpts: -2 --summary_interval -4
    ptpClockThreshold:
      holdOverTimeout: 60
      maxOffsetThreshold: 100
      minOffsetThreshold: -100
    ptpSchedulingPolicy: SCHED_FIFO
    ptpSchedulingPriority: 10
  recommend:
  - match:
    - nodeLabel: node-role.kubernetes.io/master
    priority: 4
    profile: bc2
[kni ~]$ oc get ptpconfig -n openshift-ptp du-ptp-bc1 -o yaml 
apiVersion: ptp.openshift.io/v1
kind: PtpConfig
metadata:
  creationTimestamp: "2022-11-02T17:31:38Z"
  generation: 1
  name: du-ptp-bc1
  namespace: openshift-ptp
  resourceVersion: "30366"
  uid: 19639eaf-9772-44d1-a613-c39269476109
spec:
  profile:
  - name: bc1
    phc2sysOpts: ""
    ptp4lConf: |
      [ens4f0]
      masterOnly 0
      [ens4f1]
      masterOnly 1
      [ens4f2]
      masterOnly 1
      [ens4f3]
      masterOnly 1
      [global]
      priority1   128
      priority2   128
      domainNumber  24
      clockAccuracy 0xFE
      offsetScaledLogVariance 0xFFFF
      free_running  0
      freq_est_interval 1
      dscp_event    0
      dscp_general  0
      dataset_comparison ieee1588
      G.8275.defaultDS.localPriority  128
      logAnnounceInterval     -3
      logSyncInterval         -4
      logMinDelayReqInterval  -4
      logMinPdelayReqInterval -4
      announceReceiptTimeout   3
      syncReceiptTimeout      0
      delayAsymmetry          0
      fault_reset_interval    4
      neighborPropDelayThresh 20000000
      masterOnly              0
      G.8275.portDS.localPriority 128
      assume_two_step         0
      logging_level           6
      path_trace_enabled      0
      follow_up_info          0
      hybrid_e2e              0
      inhibit_multicast_service 0
      net_sync_monitor        0
      tc_spanning_tree        0
      tx_timestamp_timeout    50
      unicast_listen          0
      unicast_master_table    0
      unicast_req_duration    3600
      use_syslog              1
      verbose                 0
      summary_interval        4
      kernel_leap             1
      check_fup_sync          0
      pi_proportional_const   0.0
      pi_integral_const       0.0
      pi_proportional_scale   0.0
      pi_proportional_exponent -0.3
      pi_proportional_norm_max  0.7
      pi_integral_scale       0.0
      pi_integral_exponent    0.4
      pi_integral_norm_max    0.3
      step_threshold          30.0
      first_step_threshold    0.00002
      max_frequency           900000000
      clock_servo             pi
      sanity_freq_limit       0
      ntpshm_segment          0
      transportSpecific       0x0
      ptp_dst_mac             01:1B:19:00:00:00
      p2p_dst_mac             01:80:C2:00:00:0E
      udp_ttl                 1
      udp6_scope              0x0E
      uds_address             /var/run/ptp4l
      clock_type              BC
      network_transport       L2
      delay_mechanism         E2E
      time_stamping           hardware
      tsproc_mode             filter
      delay_filter            moving_median
      delay_filter_length     10
      egressLatency           0
      ingressLatency          0
      boundary_clock_jbod     0
      productDescription      ;;
      revisionData            ;;
      manufacturerIdentity    00:00:00
      userDescription         ;
      timeSource              0xA0
    ptp4lOpts: -2 --summary_interval -4
    ptpClockThreshold:
      holdOverTimeout: 60
      maxOffsetThreshold: 100
      minOffsetThreshold: -100
    ptpSchedulingPolicy: SCHED_FIFO
    ptpSchedulingPriority: 10
  recommend:
  - match:
    - nodeLabel: node-role.kubernetes.io/master
    priority: 4
    profile: bc1
[kni@regis

Comment 5 errata-xmlrpc 2023-01-17 19:54:37 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (Moderate: OpenShift Container Platform 4.12.0 bug fix and security update), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHSA-2022:7399