Skip to content

[FEATURE]Integration registry - loading and filtering #1441

@YANG-DB

Description

@YANG-DB

Previous Step
Next Step

Is your feature request related to a problem?
As part of the Integration Ux workflow, once the Integration plugin is loaded it should load all the available integrations that are bundled in the integration repo.

Screenshot 2023-03-01 at 10 01 45 AM

The API needed from the backend should be as follows:
Query:

GET _integration/repository?filter=type:Logs&category:web,html

Response:

{
  "name": "nginx",
  "version": {
    "integ": "0.1.0",
    "schema": "1.0.0",
    "resource": "^1.23.0"
  },
  "description": "Nginx HTTP server collector",
  "Information":"file:///.../schema/logs/info.html",
  "identification": "instrumentationScope.attributes.identification",
  "categories": [
    "web","http"
  ],
  "collection":[
    {
      "logs": [{
        "info": "access logs",
        "input_type":"logfile",
        "dataset":"nginx.access",
        "labels" :["nginx","access"],
        "schema": "file:///.../schema/logs/access.json"
      },
        {
          "info": "error logs",
          "input_type":"logfile",
          "labels" :["nginx","error"],
          "dataset":"nginx.error",
        "schema": "file:///.../schema/logs/error.json"
        }]
    },
    {
      "metrics": [{
        "info": "status metrics",
        "input_type":"metrics",
        "dataset":"nginx.status",
        "labels" :["nginx","status"],
        "schema": "file:///.../schema/logs/status.json"
      }]
    }
  ],
  "repo": {
    "github": "https://github.com/opensearch-project/observability/tree/main/integrarions/nginx"
  }
}

The integration object schema is supported by both B/E & F/E for display & query to the correct fields
Integration config schema


The backend responsibilities :

  • scan the Integration folder (on-load)

    • In the future this can also be loaded from a remote publish location
  • load into cache each integration config file

  • allow filtering on the registry API

The frontend responsibilities :

  • enable shared info (html, images) resources in a CDN
  • allow filtering for the integrations

Screenshot 2023-03-01 at 10 13 41 AM

In addition the following API is also supported

GET _integration/repository/$name

This call results in returning the cached integration config json object
It would be used for display and route the F/E for fetching the relevant page assets

Screenshot 2023-03-01 at 10 13 58 AM

Once an integration was selected

Screenshot 2023-03-01 at 10 38 50 AM

This page will require the F/E to fetch multiple assets from different locations

  • images
  • repository url
  • license url
  • html
  • json schema objects for that integration content

What solution would you like?
implement B/E :

  • registry loading & cache mechanism
  • registry API
  • registry filter API

implement F/E :

  • integrations list display
  • integrations filter display
  • integration panel display

Flow Diagram
Screenshot 2023-03-01 at 7 00 50 PM

What alternatives have you considered?
N/A

Do you have any additional context?

The UX full happy flow for loading an integration
nginx-integration-ui-mock

Metadata

Metadata

Assignees

No one assigned

    Labels

    designdocumentationImprovements or additions to documentationenhancementNew feature or requestintegrationIntegration project

    Type

    No type

    Projects

    Status

    Done

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions