Skip to content

[FEATURE] Refactor integration setup process #1444

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

Closed
Swiddis opened this issue Feb 15, 2024 · 2 comments · Fixed by #1498
Closed

[FEATURE] Refactor integration setup process #1444

Swiddis opened this issue Feb 15, 2024 · 2 comments · Fixed by #1498
Labels
enhancement New feature or request integrations Used to denote items related to the Integrations project

Comments

@Swiddis
Copy link
Collaborator

Swiddis commented Feb 15, 2024

Is your feature request related to a problem?

A critical part of the integration building process is setting up external assets, which define the ways that integrations can read and process data. Currently, assets are stored as references in the config, split by the type of asset (today: saved objects and queries).

As part of the setup process, we go through all of these assets and follow hardcoded steps to install each category of assets. Queries are sent to the asynchronous Flint API, saved objects are sent through a high-level client in-code. This has worked reasonably well so far, as it makes adding more asset types as easy as adding a definition to the assets field, and integrating it with the existing setup process.

But with growing feature demand, this approach is proving insufficient. There are issues like #1442 demanding being able to set up assets associated with arbitrary OpenSearch APIs, and in-progress features for supporting multiple installation flows1 within one integration that would require configuring which assets are installed. Furthermore, splitting the assets into distinct entities like this complicates serialization and bundling. A different approach is needed.

What solution would you like?

Currently, the assets field of integrations looks like this:

"assets": {
  "savedObjects": {
    "name": "dashboards",
    "version": "1.0.0"
  },
  "queries": [
    {
      "name": "create_table",
      "version": "1.0.0",
      "language": "sql"
    },
    {
      "name": "create_mv",
      "version": "1.0.0",
      "language": "sql"
    }
  ]
},

I propose updating the format to look like this:

"assets": [
  {
    "name": "create_table",
    "version": "1.0.0",
    "extension": "sql",
    "type": "query"
  },
  {
    "name": "create_mv",
    "version": "1.0.0",
    "extension": "sql",
    "type": "query"
  },
  {
    "name": "dashboards",
    "version": "1.0.0",
    "extension": "ndjson",
    "type": "savedObjectBundle"
  }
],

By unifying the categories, serialization switches from handling each case to writing one main handler. This also allows more flexible installation ordering: if there are queries to run after installing a saved object bundle, that's trivially addable. The install logic will remain case-by-case, but it's somewhat unavoidable if different objects require fundamentally different interfaces to install, and it lets us rework the type-by-type logic to something like for (const asset of assets) { install(asset); }2.

One concern is backwards compatibility: since dynamic catalogs was released with the old serialization, at least the OS integrations plugin should be robust to both versions. This can be added on-read by having a validation check which automatically converts the old format to the new format, but there are still some details with how to make migrations work with e.g. the .kibana type mapping.

What alternatives have you considered?

We can continue adding case-by-case steps, which has the drawbacks mentioned above, and is better for backwards compatibility. To implement ordering we could add a field to each type like order, where steps run sorted by order (default: 0, and support negative values). I worry this will continue to get worse as we add more asset types, but is minimal work upfront.

We could also provide some sort of helper method which takes the current format and converts it to this new format. That method can be relatively robust, and simplify a lot of operations on the asset list without requiring a change to the serialization format.

Do you have any additional context?

Also related: workflow integrations with opensearch-project/observability#1805. Additionally, the already-cited request for arbitrary API calls #1442.

Footnotes

  1. To support distinct installation paths, a further flows?: string[] field can be introduced (default: all flows), which specifies when a step should be run. If dashboards in the above assets are only installed for a full installation, a user can add the entry "flows": ["full"]. There may need to be more work to determine how to fully support installation flows, I'll leave that for another issue.

  2. A sophisticated implementation might include dependency logic and run steps in parallel, but this is unlikely to be necessary for the amount of effort it would add.

@Swiddis Swiddis added enhancement New feature or request untriaged integrations Used to denote items related to the Integrations project labels Feb 15, 2024
@YANG-DB
Copy link
Member

YANG-DB commented Feb 15, 2024

Nice 👍

  1. How would the actual asset define the API call - for example I would like to call the _reindex API as part of the Integration's elements - can u plz give an example for these type of assets ?
  2. How would the order of assets be installed ? can they be depended on one another - meaning if one failed the other will not attempt ?

@Swiddis
Copy link
Collaborator Author

Swiddis commented Feb 15, 2024

  1. Not sure which is better: adding extra fields under certain types of assets that let you add that info ("url": "...", "body": "...", "method": "..."), or putting the request in another file with a well-defined format (e.g. Hurl) and loading+running that. My instinct is to use the file solution -- adding a library to handle parsing it increases our dependency footprint but we get a lot of functionality in exchange.
  2. I'm thinking we should just start by running the list top-to-bottom where any failure cancels the installation. In a footnote I mention running steps in parallel, but it seems like premature optimization at this stage. (How to/whether to rollback steps is still an open question...)

@Swiddis Swiddis removed the untriaged label Feb 21, 2024
RyanL1997 pushed a commit to RyanL1997/dashboards-observability that referenced this issue Apr 18, 2024
…ect#1450) (opensearch-project#1477)

* Replace legacy template with index template (opensearch-project#1359)

Signed-off-by: Chang Liu <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* added loginEndPointWithPath (opensearch-project#1358)

* added loginEndPointWithPath
Signed-off-by: Mattijs Vanhaverbeke <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Add release notes for 1.3.9 (opensearch-project#1379)

Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* No blank backend role before adding a new one in Create User page (opensearch-project#1384)

* Add last backend role empty check

Signed-off-by: nursaadat <[email protected]>
Signed-off-by: Saadat Nursultan <[email protected]>

* Add backend role empty check

Signed-off-by: nursaadat <[email protected]>
Signed-off-by: Saadat Nursultan <[email protected]>

* Add strict comparison

Signed-off-by: nursaadat <[email protected]>
Signed-off-by: Saadat Nursultan <[email protected]>

* Fix lint errors

Signed-off-by: nursaadat <[email protected]>
Signed-off-by: Saadat Nursultan <[email protected]>

* Add tests for backend role panel

Signed-off-by: Saadat Nursultan <[email protected]>

* Fix lint errors

Signed-off-by: Saadat Nursultan <[email protected]>

---------

Signed-off-by: nursaadat <[email protected]>
Signed-off-by: Saadat Nursultan <[email protected]>
Co-authored-by: nursaadat <[email protected]>
Co-authored-by: Saadat Nursultan <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Fix script for Windows (opensearch-project#1393)

* Fix script for Windows

Signed-off-by: nurbqq <[email protected]>
Signed-off-by: nurbqq <[email protected]>
Co-authored-by: Stephen Crawford <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Adding new actions for ppl and datasource apis (opensearch-project#1395)

* Adding new actions for ppl and datasource apis

Signed-off-by: vamsi-amazon <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Fix "Get started" image is not adaptive to the browser window size. (opensearch-project#1396)

* Fixed get-started page image not adapting to the browser window size

Signed-off-by: Sirazh Gabdullin <[email protected]>

* Update fix by applying suggested changes

Signed-off-by: Sirazh Gabdullin <[email protected]>

* Update unit tests snapshot

Signed-off-by: Sirazh Gabdullin <[email protected]>

---------

Signed-off-by: Sirazh Gabdullin <[email protected]>
Co-authored-by: Stephen Crawford <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Split up a value into multiple cookie payloads (opensearch-project#1352)

* PoC for splitting up a value into multiple cookie payloads

Signed-off-by: Jochen Kressin <[email protected]>

* Cookie splitting for OpenId and SAML

Signed-off-by: Jochen Kressin <[email protected]>

* Changes after review comments

Signed-off-by: Jochen Kressin <[email protected]>

* WIP: First unit tests

Signed-off-by: Jochen Kressin <[email protected]>

* More unit tests

Signed-off-by: Jochen Kressin <[email protected]>

* Fix for multi auth, request argument was missing

Signed-off-by: Jochen Kressin <[email protected]>

* Fixed linting errors

Signed-off-by: Jochen Kressin <[email protected]>

* Added one additional cookie for the SAML integration tests

Signed-off-by: Jochen Kressin <[email protected]>

---------

Signed-off-by: Jochen Kressin <[email protected]>
Co-authored-by: Stephen Crawford <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Dynamic tenancy configurations (opensearch-project#1394)

* Dynamic multitenancy feature.

Signed-off-by: Abhi Kalra <[email protected]>

* Dynamic multitenancy feature -PR feedback

Signed-off-by: Abhi Kalra <[email protected]>

---------

Signed-off-by: Abhi Kalra <[email protected]>
Co-authored-by: Abhi Kalra <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Add release notes for 2.7.0 (opensearch-project#1407)

* Add release notes for 2.7.0

Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Removes tiny.amazon.com links (opensearch-project#1420)

Signed-off-by: Darshit Chanpura <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Fixing dynamic tenancy changes for issues 1412 (opensearch-project#1419)

* Fixing dynamic tenancy changes for opensearchdasbhoard.yaml

Signed-off-by: Abhi Kalra <[email protected]>
Co-authored-by: Abhi Kalra <[email protected]>
Co-authored-by: Stephen Crawford <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Change the testuser's password in some integration test cases into a stronger password (opensearch-project#1428)

* Change the testuser's password into a stronger password

Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Increment version to 3.0.0.0 (opensearch-project#1414)

Signed-off-by: opensearch-ci-bot <[email protected]>
Co-authored-by: opensearch-ci-bot <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Adds the newly created admin api permissions to the static dropdown list (opensearch-project#1426)

* Adds the newly created admin api permissions to the static dropdown of permissions displayed when creating/modifying a role

---------

Signed-off-by: Darshit Chanpura <[email protected]>
Co-authored-by: Ryan Liang <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Update account-nav-button.tsx

Fix added to set the window.location to the pathname, rather than just reload & clear lastURL as it would be from the previous tenant.

Signed-off-by: Leanne Lacey-Byrne <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Update account-nav-button.tsx

Adding comments to explain changes

Signed-off-by: Leanne Lacey-Byrne <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* add new cluster permissions constants for lron (opensearch-project#1444)

Signed-off-by: zhichao-aws <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* removing whitespace due to linting fix

Signed-off-by: Leanne Lacey-Byrne <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Adding tests for account-nav-button wip

Signed-off-by: leanneeliatra <[email protected]>

* put commented code to original state

Signed-off-by: leanneeliatra <[email protected]>

* Skip flaky SAML test as it awaits a fix (opensearch-project#1453)

Signed-off-by: Craig Perkins <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Removing Prerequisite Checks Workflow (opensearch-project#1456)

Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Removing Prerequisite Checks Workflow (opensearch-project#1456)

Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Removing Prerequisite Checks Workflow (opensearch-project#1456)

Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Use version from package.json for integration tests (opensearch-project#1463)

* Use version from package.json for integration tests

Signed-off-by: Craig Perkins <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Adds 2.8 release notes (opensearch-project#1464)

Signed-off-by: Darshit Chanpura <[email protected]>
Co-authored-by: Ryan Liang <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Adding tests to jest test for tenant switch. Putting test in correct folder and renaming function.
Signed-off-by: leanneeliatra <[email protected]>

Signed-off-by: leanneeliatra <[email protected]>

* handle switch calling correct function

Signed-off-by: Leanne Lacey-Byrne <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* checking for session storage
Signed-off-by: leanneeliatra <[email protected]>

Signed-off-by: leanneeliatra <[email protected]>

* adding window to make sessionStorage more explicit

Signed-off-by: leanneeliatra <[email protected]>

* Moved the test into account-nav-button.test.tsx

Signed-off-by: leanneeliatra <[email protected]>

* Removing additional files.

Signed-off-by: leanneeliatra <[email protected]>

* Declared session storage as a constant

Signed-off-by: leanneeliatra <[email protected]>

* Removing Prerequisite Checks Workflow (opensearch-project#1456)

Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Removing Prerequisite Checks Workflow (opensearch-project#1456)

Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Update account-nav-button.tsx

Fix added to set the window.location to the pathname, rather than just reload & clear lastURL as it would be from the previous tenant.

Signed-off-by: Leanne Lacey-Byrne <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Update account-nav-button.tsx

Adding comments to explain changes

Signed-off-by: Leanne Lacey-Byrne <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* removing whitespace due to linting fix

Signed-off-by: Leanne Lacey-Byrne <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Adding tests for account-nav-button wip

Signed-off-by: leanneeliatra <[email protected]>

* put commented code to original state

Signed-off-by: leanneeliatra <[email protected]>

* Removing Prerequisite Checks Workflow (opensearch-project#1456)

Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Removing Prerequisite Checks Workflow (opensearch-project#1456)

Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Adding tests to jest test for tenant switch. Putting test in correct folder and renaming function.
Signed-off-by: leanneeliatra <[email protected]>

Signed-off-by: leanneeliatra <[email protected]>

* handle switch calling correct function

Signed-off-by: Leanne Lacey-Byrne <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Removing additional files.

Signed-off-by: leanneeliatra <[email protected]>

* Fix unwanted changes

Signed-off-by: Darshit Chanpura <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Removing Prerequisite Checks Workflow (opensearch-project#1456)

Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Removing Prerequisite Checks Workflow (opensearch-project#1456)

Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Removing Prerequisite Checks Workflow (opensearch-project#1456)

Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Removing Prerequisite Checks Workflow (opensearch-project#1456)

Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Update account-nav-button.tsx

Fix added to set the window.location to the pathname, rather than just reload & clear lastURL as it would be from the previous tenant.

Signed-off-by: Leanne Lacey-Byrne <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Adding tests for account-nav-button wip

Signed-off-by: leanneeliatra <[email protected]>

* Removing Prerequisite Checks Workflow (opensearch-project#1456)

Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Removing Prerequisite Checks Workflow (opensearch-project#1456)

Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Adding tests to jest test for tenant switch. Putting test in correct folder and renaming function.
Signed-off-by: leanneeliatra <[email protected]>

Signed-off-by: leanneeliatra <[email protected]>

* checking for session storage
Signed-off-by: leanneeliatra <[email protected]>

Signed-off-by: leanneeliatra <[email protected]>

* Declared session storage as a constant

Signed-off-by: leanneeliatra <[email protected]>

* Removing Prerequisite Checks Workflow (opensearch-project#1456)

Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Removing Prerequisite Checks Workflow (opensearch-project#1456)

Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Removing Prerequisite Checks Workflow (opensearch-project#1456)

Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Removing Prerequisite Checks Workflow (opensearch-project#1456)

Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Adding tests for account-nav-button wip

Signed-off-by: leanneeliatra <[email protected]>

* Removing Prerequisite Checks Workflow (opensearch-project#1456)

Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Removing Prerequisite Checks Workflow (opensearch-project#1456)

Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Adding tests to jest test for tenant switch. Putting test in correct folder and renaming function.
Signed-off-by: leanneeliatra <[email protected]>

Signed-off-by: leanneeliatra <[email protected]>

* Moved the test into account-nav-button.test.tsx

Signed-off-by: leanneeliatra <[email protected]>

* Removing Prerequisite Checks Workflow (opensearch-project#1456)

Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Removing Prerequisite Checks Workflow (opensearch-project#1456)

Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Removing Prerequisite Checks Workflow (opensearch-project#1456)

Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Removing Prerequisite Checks Workflow (opensearch-project#1456)

Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Removing Prerequisite Checks Workflow (opensearch-project#1456)

Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Removing Prerequisite Checks Workflow (opensearch-project#1456)

Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Dynamic tenancy configurations (opensearch-project#1394)

* Dynamic multitenancy feature.

Signed-off-by: Abhi Kalra <[email protected]>

* Dynamic multitenancy feature -PR feedback

Signed-off-by: Abhi Kalra <[email protected]>

---------

Signed-off-by: Abhi Kalra <[email protected]>
Co-authored-by: Abhi Kalra <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Fixing dynamic tenancy changes for issues 1412 (opensearch-project#1419)

* Fixing dynamic tenancy changes for opensearchdasbhoard.yaml

Signed-off-by: Abhi Kalra <[email protected]>
Co-authored-by: Abhi Kalra <[email protected]>
Co-authored-by: Stephen Crawford <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Removing Prerequisite Checks Workflow (opensearch-project#1456)

Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Removing Prerequisite Checks Workflow (opensearch-project#1456)

Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Use version from package.json for integration tests (opensearch-project#1463)

* Use version from package.json for integration tests

Signed-off-by: Craig Perkins <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>

* Removing unneded file

Signed-off-by: leanneeliatra <[email protected]>

---------

Signed-off-by: Chang Liu <[email protected]>
Signed-off-by: leanneeliatra <[email protected]>
Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: nursaadat <[email protected]>
Signed-off-by: Saadat Nursultan <[email protected]>
Signed-off-by: nurbqq <[email protected]>
Signed-off-by: nurbqq <[email protected]>
Signed-off-by: vamsi-amazon <[email protected]>
Signed-off-by: Sirazh Gabdullin <[email protected]>
Signed-off-by: Jochen Kressin <[email protected]>
Signed-off-by: Abhi Kalra <[email protected]>
Signed-off-by: Darshit Chanpura <[email protected]>
Signed-off-by: opensearch-ci-bot <[email protected]>
Signed-off-by: Leanne Lacey-Byrne <[email protected]>
Signed-off-by: zhichao-aws <[email protected]>
Signed-off-by: Craig Perkins <[email protected]>
Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: Craig Perkins <[email protected]>
Co-authored-by: Chang Liu <[email protected]>
Co-authored-by: mattieserver <[email protected]>
Co-authored-by: Ryan Liang <[email protected]>
Co-authored-by: Saadat Nursultan <[email protected]>
Co-authored-by: nursaadat <[email protected]>
Co-authored-by: Saadat Nursultan <[email protected]>
Co-authored-by: Nurbakhyt Sembayev <[email protected]>
Co-authored-by: Stephen Crawford <[email protected]>
Co-authored-by: Vamsi Manohar <[email protected]>
Co-authored-by: Sirazh Gabdullin <[email protected]>
Co-authored-by: Jochen Kressin <[email protected]>
Co-authored-by: Abhi Kalra <[email protected]>
Co-authored-by: Abhi Kalra <[email protected]>
Co-authored-by: Darshit Chanpura <[email protected]>
Co-authored-by: opensearch-trigger-bot[bot] <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com>
Co-authored-by: opensearch-ci-bot <[email protected]>
Co-authored-by: zhichao-aws <[email protected]>
Co-authored-by: Craig Perkins <[email protected]>
Co-authored-by: Darshit Chanpura <[email protected]>
(cherry picked from commit 7f4e0f29f11668b09c5343da2cbc97ac1d6d0acf)

Co-authored-by: leanneeliatra <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request integrations Used to denote items related to the Integrations project
Projects
None yet
2 participants