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

[Logs+] Extract custom integration creation resources in to a package #163788

Closed
Kerry350 opened this issue Aug 14, 2023 · 1 comment · Fixed by #165510
Closed

[Logs+] Extract custom integration creation resources in to a package #163788

Kerry350 opened this issue Aug 14, 2023 · 1 comment · Fixed by #165510
Assignees
Labels
Feature:Logs Onboarding Logs Onboarding feature Team:Infra Monitoring UI - DEPRECATED DEPRECATED - Label for the Infra Monitoring UI team. Use Team:obs-ux-infra_services

Comments

@Kerry350
Copy link
Contributor

Kerry350 commented Aug 14, 2023

Summary

With #163219 we introduced the creation of a basic integration to the onboarding flow. Currently, this is the only touchpoint with the custom integrations API.

This issue is to extract those resources, e.g. hooks, types etc, in to a package. We can also introduce some standalone state management with this extraction. The end result is that there should be a package that any solution within Kibana can easily use and drop in to facilitate any sort of "create an integration" flow.

ACs

  • A new package exists. This can be generated with node scripts/generate package.
  • The package should have some documentation within it's README.
  • The resources that exist within the Observability onboarding plugin should be moved to this new package. This includes things like the hook, the UI components etc.
  • The Observability Onboarding plugin should have it's current implementation swapped for this new package. The plugin itself should only have to worry about relevant callbacks etc.
@Kerry350 Kerry350 added Feature:Logs UI Logs UI feature Team:Infra Monitoring UI - DEPRECATED DEPRECATED - Label for the Infra Monitoring UI team. Use Team:obs-ux-infra_services labels Aug 14, 2023
@elasticmachine
Copy link
Contributor

Pinging @elastic/infra-monitoring-ui (Team:Infra Monitoring UI)

@Kerry350 Kerry350 self-assigned this Aug 16, 2023
Kerry350 added a commit that referenced this issue Sep 12, 2023
## Summary 

This closes #163788.

## High level overview

- Adds a new `kbn-custom-integrations` package.
- This package adds a new top level custom integrations state machine,
which manages a child create custom integration state machine. In the
future we will have additional modes (such as adding a dataset to an
existing integration, and various "uplift" flows).
- Adds connected (to the machine) components that consumers can use to
facilitate custom integration workflows.
- Adds a `kbn-xstate-utils` package (as these utils were in 2 plugins
and now 1 package).
- Replaces the integration creation inside of the onboarding wizard flow
with this package.
- At the moment this is locked down to `logs`, and one dataset, but it
can be easily extended in the future to support all types and multiple
datasets. The state machine is ready, it just needs exposed in the UI.
- Some thought has gone in to how this will work with multiple "modes",
and the foundations are there (imagining that certain types will be
unions etc), however it's worth not getting too bogged down in those
specific implementation details as I'd rather base that evolution on the
real world usage when we have it.

The Configure integration section should more or less work the same as
before.

![Screenshot 2023-09-05 at 16 24
44](https://github.com/elastic/kibana/assets/471693/8891dc0f-0ba2-48e0-83ac-99336369bc50)

## Testing

- When utilising the onboarding flow for custom logs at
`/app/observabilityOnboarding/customLogs` can you:
- Create a custom integration? (It's worth verifying the network
requests, and the assets are installed).
- If you navigate forward, then back, make a change to the integration
fields, and navigate forward again is the previously created integration
deleted?
- Is the success callout with the integration name shown on the next
wizard panel?
  - Do field validations work?
- Are errors displayed when you try to create an integration with a name
that already exists?
- Can you retry when there is a server error? (you can block network
requests to the custom integrations API to test this)

## Screenshots

![Screenshot 2023-09-06 at 10 51
35](https://github.com/elastic/kibana/assets/471693/95cd895c-02a3-482a-af35-b23f30dcba56)

![Screenshot 2023-09-06 at 10 51
57](https://github.com/elastic/kibana/assets/471693/9848dfe6-dae8-43b4-892e-bcfe199248f2)

![Screenshot 2023-09-06 at 10 49
40](https://github.com/elastic/kibana/assets/471693/2cb52e17-bba9-4901-bf77-9e12519f36a9)

![Screenshot 2023-09-06 at 10 52
21](https://github.com/elastic/kibana/assets/471693/4d871ccb-0948-46ee-a095-d1b60fb63d50)

## State machine diagram

(The top level management machine is super basic, so this is just the
create machine)

![Screenshot 2023-09-08 at 16 30
26](https://github.com/elastic/kibana/assets/471693/ccbaa270-e450-4eeb-b8cb-8ae9a41afa39)

## Followups

- Tests (the current onboarding UI implementation doesn't have tests so
whilst it's not ideal technically this coverage stays the same)
- Storybook 
- Replace other plugins' usage with xstate-utils (not urgent)

---------

Co-authored-by: kibanamachine <[email protected]>
Co-authored-by: Yngrid Coello <[email protected]>
@gbamparop gbamparop added Feature:Logs Onboarding Logs Onboarding feature and removed Feature:Logs UI Logs UI feature labels Nov 10, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Feature:Logs Onboarding Logs Onboarding feature Team:Infra Monitoring UI - DEPRECATED DEPRECATED - Label for the Infra Monitoring UI team. Use Team:obs-ux-infra_services
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants