Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix Config Daemon node selector #483

Merged

Commits on Aug 29, 2023

  1. Configuration menu
    Copy the full SHA
    25a291e View commit details
    Browse the repository at this point in the history
  2. Add test for multiple updates to the node selector of the config daemon

    It was found that updating the node selector may not be applied. This
    test ensures that we catch any problems with the node selector being
    modified.
    
    Signed-off-by: William Zhao <[email protected]>
    wizhaoredhat committed Aug 29, 2023
    Configuration menu
    Copy the full SHA
    bf30003 View commit details
    Browse the repository at this point in the history
  3. Fix Config Daemon node selector

    When node selectors are added then removed via "configDaemonNodeSelector"
    via the sriovoperatorconfigs CRD, certain combinations will not trigger
    an update due to the ordering of arguments into "DeepDerivative" from
    the reflect library.
    
    This is an example combination of setting "configDaemonNodeSelector" that
    would make it such that the sriov-config-daemon daemon set's nodeSelector
    to become out of sync with the original "DeepDerivative" argument order:
    
    Step 1) Create 3 labels in node selector:
    configDaemonNodeSelector = {"labelA": "", "labelB": "", "labelC": ""}
    config-daemon DS NodeSelector = {"labelA": "", "labelB": "", "labelC": ""}
    
    Step 2) Remove 1 label in node selector without making changes to the other labels:
    configDaemonNodeSelector = {"labelA": "", "labelB": ""}
    config-daemon DS NodeSelector = {"labelA": "", "labelB": "", "labelC": ""} (Out of Sync)
    
    "DeepDerivative" assumes that the left argument is the original (v1) and
    the right argument is the updated (v2). For maps it only checks if v1 >
    v2 in length:
        case reflect.Map:
            ...
            if v1.Len() > v2.Len() {
                return false
            }
            ...
    
    This commit just reverts changes from commit:
    "661a65b8e1aee6339037948732f75d06ceb91611"
    Use DeepDerivative to compare the kube object content
    Such that we react to changes to node selectors properly.
    
    Signed-off-by: William Zhao <[email protected]>
    wizhaoredhat committed Aug 29, 2023
    Configuration menu
    Copy the full SHA
    5c1b0af View commit details
    Browse the repository at this point in the history