Uploaded image for project: 'OpenShift Over the Air'
  1. OpenShift Over the Air
  2. OTA-1045

Cincinnati: Forwards compatibility for graph-data versions

XMLWordPrintable

    • None
    • False
    • Hide

      None

      Show
      None
    • False
    • 5
    • None
    • None
    • OTA 251

      cincinnati#314 landed version support in Cincinnati, but it's "is this a version I recognize?", which can cause an older Cincinnati to fail on newer graph-data, like:

      $ curl -s https://gcsweb-ci.apps.ci.l2s4.p1.openshiftapps.com/gcs/origin-ci-test/pr-logs/pull/openshift_cincinnati-operator/176/pull-ci-openshift-cincinnati-operator-master-operator-e2e-hypershift-local-graph-data/1722001220597452800/artifacts/operator-e2e-hypershift-local-graph-data/e2e-test/artifacts/inspect/namespaces/openshift-updateservice/pods/example-5cd78cdf8b-vqcgv/graph-builder/graph-builder/logs/current.log | tail -n3
      2023-11-07T21:50:33.646877602Z [2023-11-07T21:50:33Z TRACE cincinnati::plugins] Running next plugin 'openshift-secondary-metadata-parse'
      2023-11-07T21:50:33.657154577Z [2023-11-07T21:50:33Z ERROR graph_builder::graph] unrecognized graph-data version 1.2.0
      2023-11-07T21:50:33.657154577Z     ; supported versions: ["1.0.0", "1.1.0"]
      

      However, we want to be able to add new data to graph-data to support new functionality (like 1.2.0's signatures, OTA-949). An older Cincinnati that only understands up through 1.1.0 should still be able to consume 1.2.0 graph-data, it will just only provide the 1.1.0 features. For example, you would still have channels, edges, and conditional edges. You would not get signatures.

      Definition of done:

      • Instead of failing on unrecognized graph-data version, Cincinnati should use SemVer parsing to decide if the graph-data version is acceptable vs. the current parser's understanding. An operator that parsed 1.1.0 would be completely happy parsing 1.0.0 and 1.1.0 graph-data. It would be able to parse 1.2.0, 1.99.0, etc. graph-data, but might not support all that features that that graph-data could have backed. It would not be able to parse 2.0.0 graph-data.
      • Cincinnati should log a message explaining the graph-data support situation. E.g. graph data 1.0.0 is compatible with this 1.1.0 parser or graph data 1.99.0 is compatible with this 1.1.0 parser, but some features may not be available.
      • Discuss mechanisms for bubbling this information up to UpdateStatus so customers can easily understand why they aren't getting 1.99.0 features. Operator could scrape operand logs? Operator could scrape a new operand metric? Other? It's possible we deside to punt or defer this after discussing it.

              pratikam Pratik Mahajan
              trking W. Trevor King
              None
              None
              Jian Li Jian Li
              None
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

                Created:
                Updated:
                Resolved: