Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,418 changes: 1,164 additions & 254 deletions api/gen/proto/go/usageevents/v1/usageevents.pb.go

Large diffs are not rendered by default.

42 changes: 42 additions & 0 deletions api/proto/teleport/usageevents/v1/usageevents.proto
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,28 @@ enum DiscoverResource {
DISCOVER_RESOURCE_DATABASE_POSTGRES_GCP = 15;
DISCOVER_RESOURCE_DATABASE_MYSQL_GCP = 16;
DISCOVER_RESOURCE_DATABASE_SQLSERVER_GCP = 17;

DISCOVER_RESOURCE_DATABASE_POSTGRES_REDSHIFT_SERVERLESS = 18;
DISCOVER_RESOURCE_DATABASE_POSTGRES_AZURE = 19;
DISCOVER_RESOURCE_DATABASE_DYNAMODB = 20;
DISCOVER_RESOURCE_DATABASE_CASSANDRA_KEYSPACES = 21;
DISCOVER_RESOURCE_DATABASE_CASSANDRA_SELF_HOSTED = 22; // Cassandra & ScyllaDb
DISCOVER_RESOURCE_DATABASE_ELASTICSEARCH_SELF_HOSTED = 23;
DISCOVER_RESOURCE_DATABASE_REDIS_ELASTICACHE = 24; // Elasticache & MemoryDb
DISCOVER_RESOURCE_DATABASE_REDIS_MEMORYDB = 25;
DISCOVER_RESOURCE_DATABASE_REDIS_AZURE_CACHE = 26;
DISCOVER_RESOURCE_DATABASE_REDIS_CLUSTER_SELF_HOSTED = 27;

DISCOVER_RESOURCE_DATABASE_MYSQL_AZURE = 28;
DISCOVER_RESOURCE_DATABASE_SQLSERVER_AZURE = 29;
DISCOVER_RESOURCE_DATABASE_SQLSERVER_MICROSOFT = 30;
DISCOVER_RESOURCE_DATABASE_COCKROACHDB_SELF_HOSTED = 31;
DISCOVER_RESOURCE_DATABASE_MONGODB_ATLAS = 32;
DISCOVER_RESOURCE_DATABASE_SNOWFLAKE = 33;

DISCOVER_RESOURCE_DOC_DATABASE_RDS_PROXY = 34;
DISCOVER_RESOURCE_DOC_DATABASE_HIGH_AVAILABILITY = 35;
DISCOVER_RESOURCE_DOC_DATABASE_DYNAMIC_REGISTRATION = 36;
}

// DiscoverResourceMetadata contains common metadata identifying resource type being added.
Expand Down Expand Up @@ -154,6 +176,24 @@ message UIDiscoverResourceSelectionEvent {
DiscoverStepStatus status = 3;
}

// UIDiscoverIntegrationAWSOIDCConnectEvent is emitted when a user is finished with the step
// that asks user to setup aws integration or select from a list of existing
// aws integrations.
message UIDiscoverIntegrationAWSOIDCConnectEvent {
DiscoverMetadata metadata = 1;
DiscoverResourceMetadata resource = 2;
DiscoverStepStatus status = 3;
}

// UIDiscoverDatabaseRDSEnrollEvent is emitted when a user is finished with
// the step that asks user to select from a list of RDS databases.
message UIDiscoverDatabaseRDSEnrollEvent {
DiscoverMetadata metadata = 1;
DiscoverResourceMetadata resource = 2;
DiscoverStepStatus status = 3;
int64 selected_resources_count = 4;
}

// UIDiscoverDeployServiceEvent is emitted after the user installs a Teleport Agent.
// For SSH this is the Teleport 'install-node' script.
//
Expand Down Expand Up @@ -274,6 +314,8 @@ message UsageEventOneOf {
UICreateNewRoleSaveClickEvent ui_create_new_role_save_click = 24;
UICreateNewRoleCancelClickEvent ui_create_new_role_cancel_click = 25;
UICreateNewRoleViewDocumentationClickEvent ui_create_new_role_view_documentation_click = 26;
UIDiscoverIntegrationAWSOIDCConnectEvent ui_discover_integration_aws_oidc_connect_event = 27;
UIDiscoverDatabaseRDSEnrollEvent ui_discover_database_rds_enroll_event = 28;
}
reserved 2; //UIOnboardGetStartedClickEvent
reserved "ui_onboard_get_started_click";
Expand Down
23 changes: 23 additions & 0 deletions lib/usagereporter/teleport/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -500,6 +500,29 @@ func ConvertUsageEvent(event *usageeventsv1.UsageEventOneOf, userMD UserMetadata
return nil, trace.Wrap(err)
}

return ret, nil
case *usageeventsv1.UsageEventOneOf_UiDiscoverIntegrationAwsOidcConnectEvent:
ret := &UIDiscoverIntegrationAWSOIDCConnectEvent{
Metadata: discoverMetadataToPrehog(e.UiDiscoverIntegrationAwsOidcConnectEvent.Metadata, userMD),
Resource: discoverResourceToPrehog(e.UiDiscoverIntegrationAwsOidcConnectEvent.Resource),
Status: discoverStatusToPrehog(e.UiDiscoverIntegrationAwsOidcConnectEvent.Status),
}
if err := ret.CheckAndSetDefaults(); err != nil {
return nil, trace.Wrap(err)
}

return ret, nil
case *usageeventsv1.UsageEventOneOf_UiDiscoverDatabaseRdsEnrollEvent:
ret := &UIDiscoverDatabaseRDSEnrollEvent{
Metadata: discoverMetadataToPrehog(e.UiDiscoverDatabaseRdsEnrollEvent.Metadata, userMD),
Resource: discoverResourceToPrehog(e.UiDiscoverDatabaseRdsEnrollEvent.Resource),
Status: discoverStatusToPrehog(e.UiDiscoverDatabaseRdsEnrollEvent.Status),
SelectedResourcesCount: e.UiDiscoverDatabaseRdsEnrollEvent.SelectedResourcesCount,
}
if err := ret.CheckAndSetDefaults(); err != nil {
return nil, trace.Wrap(err)
}

return ret, nil
case *usageeventsv1.UsageEventOneOf_UiDiscoverDeployServiceEvent:
ret := &UIDiscoverDeployServiceEvent{
Expand Down
51 changes: 51 additions & 0 deletions lib/usagereporter/teleport/types_discover.go
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,57 @@ func (u *UIDiscoverResourceSelectionEvent) Anonymize(a utils.Anonymizer) prehogv
}
}

// UIDiscoverIntegrationAWSOIDCConnectEvent is emitted when a user is finished with the step
// that asks user to setup aws integration or select from a list of existing
// aws integrations.
type UIDiscoverIntegrationAWSOIDCConnectEvent prehogv1a.UIDiscoverIntegrationAWSOIDCConnectEvent

func (u *UIDiscoverIntegrationAWSOIDCConnectEvent) CheckAndSetDefaults() error {
return trace.Wrap(validateDiscoverBaseEventFields(u.Metadata, u.Resource, u.Status))
}

func (u *UIDiscoverIntegrationAWSOIDCConnectEvent) Anonymize(a utils.Anonymizer) prehogv1a.SubmitEventRequest {
return prehogv1a.SubmitEventRequest{
Event: &prehogv1a.SubmitEventRequest_UiDiscoverIntegrationAwsOidcConnectEvent{
UiDiscoverIntegrationAwsOidcConnectEvent: &prehogv1a.UIDiscoverIntegrationAWSOIDCConnectEvent{
Metadata: &prehogv1a.DiscoverMetadata{
Id: u.Metadata.Id,
UserName: a.AnonymizeString(u.Metadata.UserName),
},
Resource: u.Resource,
Status: u.Status,
},
},
}
}

// UIDiscoverDatabaseRDSEnrollEvent is emitted when a user is finished with
// the step that asks user to select from a list of RDS databases.
type UIDiscoverDatabaseRDSEnrollEvent prehogv1a.UIDiscoverDatabaseRDSEnrollEvent

func (u *UIDiscoverDatabaseRDSEnrollEvent) CheckAndSetDefaults() error {
if u.SelectedResourcesCount <= 0 {
return trace.BadParameter("selected resources count must be 1 or more")
}
return trace.Wrap(validateDiscoverBaseEventFields(u.Metadata, u.Resource, u.Status))
}

func (u *UIDiscoverDatabaseRDSEnrollEvent) Anonymize(a utils.Anonymizer) prehogv1a.SubmitEventRequest {
return prehogv1a.SubmitEventRequest{
Event: &prehogv1a.SubmitEventRequest_UiDiscoverDatabaseRdsEnrollEvent{
UiDiscoverDatabaseRdsEnrollEvent: &prehogv1a.UIDiscoverDatabaseRDSEnrollEvent{
Metadata: &prehogv1a.DiscoverMetadata{
Id: u.Metadata.Id,
UserName: a.AnonymizeString(u.Metadata.UserName),
},
Resource: u.Resource,
Status: u.Status,
SelectedResourcesCount: u.SelectedResourcesCount,
},
},
}
}

// UIDiscoverDeployServiceEvent is emitted after the user installs a Teleport Agent.
// For SSH this is the Teleport 'install-node' script.
//
Expand Down
4 changes: 4 additions & 0 deletions lib/usagereporter/web/userevent.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ const (

uiDiscoverStartedEvent = "tp.ui.discover.started"
uiDiscoverResourceSelectionEvent = "tp.ui.discover.resourceSelection"
uiDiscoverIntegrationAWSOIDCConnectEvent = "tp.ui.discover.integration.awsoidc.connect"
uiDiscoverDatabaseRDSEnrollEvent = "tp.ui.discover.database.enroll.rds"
uiDiscoverDeployServiceEvent = "tp.ui.discover.deployService"
uiDiscoverDatabaseRegisterEvent = "tp.ui.discover.database.register"
uiDiscoverDatabaseConfigureMTLSEvent = "tp.ui.discover.database.configure.mtls"
Expand Down Expand Up @@ -209,6 +211,8 @@ func ConvertUserEventRequestToUsageEvent(req CreateUserEventRequest) (*usageeven

case uiDiscoverStartedEvent,
uiDiscoverResourceSelectionEvent,
uiDiscoverIntegrationAWSOIDCConnectEvent,
uiDiscoverDatabaseRDSEnrollEvent,
uiDiscoverDeployServiceEvent,
uiDiscoverDatabaseRegisterEvent,
uiDiscoverDatabaseConfigureMTLSEvent,
Expand Down
24 changes: 24 additions & 0 deletions lib/usagereporter/web/userevent_discover.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,11 @@ type DiscoverEventData struct {
// This value is only considered for the 'tp.ui.discover.autoDiscoveredResources'.
AutoDiscoverResourcesCount int `json:"autoDiscoverResourcesCount,omitempty"`

// SelectedResourcesCount is the number of resources that a user has selected
// eg: number of RDS databases selected in the RDS enrollment screen for the
// event tp.ui.discover.database.enroll.rds
SelectedResourcesCount int `json:"selectedResourcesCount,omitempty"`

// StepStatus is the Wizard step status result.
// Its possible values are the usageevents.DiscoverStepStatus proto enum values.
// Example: "DISCOVER_STATUS_SUCCESS"
Expand Down Expand Up @@ -91,6 +96,25 @@ func (d *DiscoverEventData) ToUsageEvent(eventName string) (*usageeventsv1.Usage
},
}}, nil

case uiDiscoverIntegrationAWSOIDCConnectEvent:
return &usageeventsv1.UsageEventOneOf{Event: &usageeventsv1.UsageEventOneOf_UiDiscoverIntegrationAwsOidcConnectEvent{
UiDiscoverIntegrationAwsOidcConnectEvent: &usageeventsv1.UIDiscoverIntegrationAWSOIDCConnectEvent{
Metadata: metadata,
Resource: resource,
Status: status,
},
}}, nil

case uiDiscoverDatabaseRDSEnrollEvent:
return &usageeventsv1.UsageEventOneOf{Event: &usageeventsv1.UsageEventOneOf_UiDiscoverDatabaseRdsEnrollEvent{
UiDiscoverDatabaseRdsEnrollEvent: &usageeventsv1.UIDiscoverDatabaseRDSEnrollEvent{
Metadata: metadata,
Resource: resource,
Status: status,
SelectedResourcesCount: int64(d.SelectedResourcesCount),
},
}}, nil

case uiDiscoverDeployServiceEvent:
return &usageeventsv1.UsageEventOneOf{Event: &usageeventsv1.UsageEventOneOf_UiDiscoverDeployServiceEvent{
UiDiscoverDeployServiceEvent: &usageeventsv1.UIDiscoverDeployServiceEvent{
Expand Down
11 changes: 10 additions & 1 deletion web/packages/teleport/src/services/userEvent/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ export enum CaptureEvent {
export enum DiscoverEvent {
Started = 'tp.ui.discover.started',
ResourceSelection = 'tp.ui.discover.resourceSelection',
IntegrationAWSOIDCConnectEvent = 'tp.ui.discover.integration.awsoidc.connect',
DatabaseRDSEnrollEvent = 'tp.ui.discover.database.enroll.rds',
DeployService = 'tp.ui.discover.deployService',
DatabaseRegister = 'tp.ui.discover.database.register',
DatabaseConfigureMTLS = 'tp.ui.discover.database.configure.mtls',
Expand Down Expand Up @@ -107,10 +109,17 @@ export type DiscoverEventRequest = Omit<UserEvent, 'event'> & {
export type DiscoverEventData = DiscoverEventStepStatus & {
id: string;
resource: DiscoverEventResource;
// AutoDiscoverResourcesCount is the number of
// autoDiscoverResourcesCount is the number of
// auto-discovered resources in the Auto Discovering resources screen.
// This value is only considered for the 'tp.ui.discover.autoDiscoveredResources'.
autoDiscoverResourcesCount?: number;
// selectedResourcesCount is the number of
// resources that a user has selected
//
// eg: number of RDS databases selected
// in the RDS enrollment screen for event
// tp.ui.discover.database.enroll.rds
selectedResourcesCount?: number;
};

export type DiscoverEventStepStatus = {
Expand Down