-
Notifications
You must be signed in to change notification settings - Fork 1.8k
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
web: define integration enroll step event types #51097
base: master
Are you sure you want to change the base?
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -43,9 +43,14 @@ export enum CaptureEvent { | |||||||||||||||||||||||||||||||
OnboardQuestionnaireSubmitEvent = 'tp.ui.onboard.questionnaire.submit', | ||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
/** | ||||||||||||||||||||||||||||||||
* IntegrationEnrollEvent defines integration enrollment | ||||||||||||||||||||||||||||||||
* events. | ||||||||||||||||||||||||||||||||
*/ | ||||||||||||||||||||||||||||||||
export enum IntegrationEnrollEvent { | ||||||||||||||||||||||||||||||||
Started = 'tp.ui.integrationEnroll.start', | ||||||||||||||||||||||||||||||||
Complete = 'tp.ui.integrationEnroll.complete', | ||||||||||||||||||||||||||||||||
Step = 'tp.ui.integrationEnroll.step', | ||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
// IntegrationEnrollKind represents a integration type. | ||||||||||||||||||||||||||||||||
|
@@ -76,8 +81,64 @@ export enum IntegrationEnrollKind { | |||||||||||||||||||||||||||||||
MachineIDKubernetes = 'INTEGRATION_ENROLL_KIND_MACHINE_ID_KUBERNETES', | ||||||||||||||||||||||||||||||||
EntraId = 'INTEGRATION_ENROLL_KIND_ENTRA_ID', | ||||||||||||||||||||||||||||||||
DatadogIncidentManagement = 'INTEGRATION_ENROLL_KIND_DATADOG_INCIDENT_MANAGEMENT', | ||||||||||||||||||||||||||||||||
AwsIdentityCenter = 'INTEGRATION_ENROLL_KIND_AWS_IDENTITY_CENTER', | ||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
/** | ||||||||||||||||||||||||||||||||
* IntegrationEnrollStep defines configurable steps for an integration type. | ||||||||||||||||||||||||||||||||
*/ | ||||||||||||||||||||||||||||||||
export enum IntegrationEnrollStep { | ||||||||||||||||||||||||||||||||
/** | ||||||||||||||||||||||||||||||||
* AWSIC steps defined for AWS Idenity Center plugin. | ||||||||||||||||||||||||||||||||
* Value matches with proto enums defined in the backend. | ||||||||||||||||||||||||||||||||
*/ | ||||||||||||||||||||||||||||||||
ConnectOidc = 'INTEGRATION_ENROLL_STEP_AWSIC_CONNECT_OIDC', | ||||||||||||||||||||||||||||||||
ImportResourceSetDefaultOwner = 'INTEGRATION_ENROLL_STEP_AWSIC_SET_ACCESSLIST_DEFAULT_OWNER', | ||||||||||||||||||||||||||||||||
IdentitySourceUploadSamlMetadata = 'INTEGRATION_ENROLL_STEP_AWSIC_UPLOAD_AWS_SAML_SP_METADATA', | ||||||||||||||||||||||||||||||||
ScimTestConnection = 'INTEGRATION_ENROLL_STEP_AWSIC_TEST_SCIM_CONNECTION', | ||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Wouldn't you want these to match enum values instead, as in integers? I assume the web API is going to return those integers, not string values, maybe that assumption is wrong. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I did such integer definition when I previously added events but after working in the discover components, I appreciated the shorter name by defining it this way Though the best way to do is to definitely defining exact |
||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
/** | ||||||||||||||||||||||||||||||||
* IntegrationEnrollStatusCode defines status codes for a given | ||||||||||||||||||||||||||||||||
* integration configuration step event. | ||||||||||||||||||||||||||||||||
* Value matches with proto enums defined in the backend. | ||||||||||||||||||||||||||||||||
*/ | ||||||||||||||||||||||||||||||||
export enum IntegrationEnrollStatusCode { | ||||||||||||||||||||||||||||||||
Success = 'INTEGRATION_ENROLL_STATUS_CODE_SUCCESS', | ||||||||||||||||||||||||||||||||
Skipped = 'INTEGRATION_ENROLL_STATUS_CODE_SKIPPED', | ||||||||||||||||||||||||||||||||
Error = 'INTEGRATION_ENROLL_STATUS_CODE_ERROR', | ||||||||||||||||||||||||||||||||
Aborted = 'INTEGRATION_ENROLL_STATUS_CODE_ABORTED', | ||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Same here wrt to how this is mapped to the proto enum. |
||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
/** | ||||||||||||||||||||||||||||||||
* IntegrationEnrollStepStatus defines fields for reporting | ||||||||||||||||||||||||||||||||
* integration configuration step event. | ||||||||||||||||||||||||||||||||
*/ | ||||||||||||||||||||||||||||||||
export type IntegrationEnrollStepStatus = { | ||||||||||||||||||||||||||||||||
code: IntegrationEnrollStatusCode; | ||||||||||||||||||||||||||||||||
error?: string; | ||||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What would you say for defining this type as a discriminated union?
Suggested change
This has some benefits over the optional field:
Then I'd change the export function emitEvent(
eventId: string,
step: IntegrationEnrollStep,
status: IntegrationEnrollStepStatus
) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I like it + makes the input param types stronger. Many thanks for the suggestion ade358d |
||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
/** | ||||||||||||||||||||||||||||||||
* IntegrationEnrollEventData defines integration | ||||||||||||||||||||||||||||||||
* enroll event. Use for start, complete and step events. | ||||||||||||||||||||||||||||||||
*/ | ||||||||||||||||||||||||||||||||
export type IntegrationEnrollEventData = { | ||||||||||||||||||||||||||||||||
id: string; | ||||||||||||||||||||||||||||||||
kind: IntegrationEnrollKind; | ||||||||||||||||||||||||||||||||
step?: IntegrationEnrollStep; | ||||||||||||||||||||||||||||||||
status?: IntegrationEnrollStepStatus; | ||||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
/** | ||||||||||||||||||||||||||||||||
* IntegrationEnrollEventRequest defines integration enroll | ||||||||||||||||||||||||||||||||
* event request as expected in the backend. | ||||||||||||||||||||||||||||||||
*/ | ||||||||||||||||||||||||||||||||
export type IntegrationEnrollEventRequest = { | ||||||||||||||||||||||||||||||||
event: IntegrationEnrollEvent; | ||||||||||||||||||||||||||||||||
eventData: IntegrationEnrollEventData; | ||||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
// These constants should match the constant defined in backend found in: | ||||||||||||||||||||||||||||||||
// lib/usagereporter/web/userevent.go | ||||||||||||||||||||||||||||||||
export enum DiscoverEvent { | ||||||||||||||||||||||||||||||||
|
@@ -177,16 +238,6 @@ export type EventMeta = { | |||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
export type PreUserEvent = UserEvent & EventMeta; | ||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
export type IntegrationEnrollEventData = { | ||||||||||||||||||||||||||||||||
id: string; | ||||||||||||||||||||||||||||||||
kind: IntegrationEnrollKind; | ||||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
export type IntegrationEnrollEventRequest = { | ||||||||||||||||||||||||||||||||
event: IntegrationEnrollEvent; | ||||||||||||||||||||||||||||||||
eventData: IntegrationEnrollEventData; | ||||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
export type DiscoverEventRequest = Omit<UserEvent, 'event'> & { | ||||||||||||||||||||||||||||||||
event: DiscoverEvent; | ||||||||||||||||||||||||||||||||
eventData: DiscoverEventData; | ||||||||||||||||||||||||||||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this comment should be placed in a line above.