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

Propagate VR condition error message to protected pvc conditions #1639

Merged
merged 4 commits into from
Nov 11, 2024

Commits on Nov 10, 2024

  1. Fix default Validated condition

    It was added in failed state (Status=False, Reason=PrerequisiteNotMet)
    by default which is wrong. The issue was hidden since we check the
    condition only when deleting the VRG. We want to inspect the condition
    when the when the VRG is live, so we can report the condition status in
    the protected pvcs conditions.
    
    Signed-off-by: Nir Soffer <[email protected]>
    nirs committed Nov 10, 2024
    Configuration menu
    Copy the full SHA
    91ebbd2 View commit details
    Browse the repository at this point in the history
  2. Add .Message to VR conditions

    Based on the messages addded in
    csi-addons/kubernetes-csi-addons#691. We want to
    propagate the error messages to the protected pvcs conditions.
    
    Signed-off-by: Nir Soffer <[email protected]>
    nirs committed Nov 10, 2024
    Configuration menu
    Copy the full SHA
    586281b View commit details
    Browse the repository at this point in the history
  3. Propagate VR conditions .Message

    When a VR condition is not met, we set the protected PVC condition
    message using the error message returned from isVRConditionMet(). When
    using csi-addons > 0.10.0, we use now the message from the condition
    instead of the default message.
    
    Since the Validated condition is not reported by older version of
    csi-addons, and we must wait until the Validated condition status is
    known when VRG is deleted, isVRConditionMet() returns now also the state
    of the condition, which can be:
    
    - missing: condition not found
    - stale: observed generation does not match object generation
    - unknown: the special "Unknown" value
    - known: status is True or False
    
    When we validate the Validate condition we have these cases:
    
    - Condition is missing: continue to next condition.
    
    - Condition is met: continue to the next condition.
    
    - Condition not met and its status is False. This VR will never
      complete and it is safe to delete since replication will never start.
      If VRG is deleted, we return true since the VR reached the designed
      state. Otherwise we return false. In this case we updated the
      protected pvc condition with the message from the VR condition.
    
    - Condition is not met and is stale or unnown: we need to check again
      later. There is no point to check the completed condition since a VR
      cannot complete without validation.In this case we updated the
      protected pvc condition with the message generated by
      isVRConditionMet() for stale or unknown conditions.
    
    Example protected pvc DataReady condition with propagated message when
    VR validation failed:
    
        conditions:
          - lastTransitionTime: "2024-11-06T15:33:06Z"
            message: 'failed to meet prerequisite: rpc error: code = FailedPrecondition
              desc = system is not in a state required for the operation''s execution:
              failed to enable mirroring on image "replicapool/csi-vol-fe2ca7f8-713c-4c51-bf52-0d4b2c11d329":
              parent image "replicapool/csi-snap-e2114105-b451-469b-ad97-eb3cbe2af54e"
              is not enabled for mirroring'
            observedGeneration: 1
            reason: Error
            status: "False"
            type: DataReady
    
    Signed-off-by: Nir Soffer <[email protected]>
    nirs committed Nov 10, 2024
    Configuration menu
    Copy the full SHA
    b8871c6 View commit details
    Browse the repository at this point in the history
  4. Test propagating VR conditions message

    Verify that when VR Validated condition is False, the condition message
    is propagated to the protected pvc DataReady condition message.
    
    To make this easy to test, we have a new helper for waiting until
    protected pvc condition status and message are updated to specified
    values.
    
    We propagate the same message to the DataProtected condition, but this
    behavior seems like unwanted behavior that should change and is not
    worth testing.
    
    Signed-off-by: Nir Soffer <[email protected]>
    nirs committed Nov 10, 2024
    Configuration menu
    Copy the full SHA
    aa0a819 View commit details
    Browse the repository at this point in the history