Discover: Create app server event (#45242)

* Create app server event

* Emit create app server event
This commit is contained in:
Lisa Kim
2024-08-19 18:11:40 +00:00
committed by GitHub
parent bd0affa306
commit d9120e0935
13 changed files with 2768 additions and 2055 deletions
File diff suppressed because it is too large Load Diff
@@ -366,6 +366,13 @@ message UIDiscoverCreateNodeEvent {
DiscoverStepStatus status = 3;
}
// UIDiscoverCreateAppServerEvent is emitted when an app server is created.
message UIDiscoverCreateAppServerEvent {
DiscoverMetadata metadata = 1;
DiscoverResourceMetadata resource = 2;
DiscoverStepStatus status = 3;
}
// UIDiscoverDatabaseConfigureIAMPolicyEvent is emitted when a user is finished with the step that configures IAM policy for an RDS database.
message UIDiscoverDatabaseConfigureIAMPolicyEvent {
DiscoverMetadata metadata = 1;
@@ -739,6 +746,7 @@ message UsageEventOneOf {
DiscoveryFetchEvent discovery_fetch_event = 54;
UIDiscoverCreateDiscoveryConfigEvent ui_discover_create_discovery_config = 55;
UIDiscoverKubeEKSEnrollEvent ui_discover_kube_eks_enroll_event = 56;
UIDiscoverCreateAppServerEvent ui_discover_create_app_server_event = 57;
}
reserved 2; //UIOnboardGetStartedClickEvent
reserved "ui_onboard_get_started_click";
File diff suppressed because it is too large Load Diff
+96 -1
View File
@@ -1072,6 +1072,25 @@ export interface UIDiscoverCreateNodeEvent {
*/
status?: DiscoverStepStatus;
}
/**
* UIDiscoverCreateAppServerEvent is emitted when an app server is created.
*
* @generated from protobuf message prehog.v1alpha.UIDiscoverCreateAppServerEvent
*/
export interface UIDiscoverCreateAppServerEvent {
/**
* @generated from protobuf field: prehog.v1alpha.DiscoverMetadata metadata = 1;
*/
metadata?: DiscoverMetadata;
/**
* @generated from protobuf field: prehog.v1alpha.DiscoverResourceMetadata resource = 2;
*/
resource?: DiscoverResourceMetadata;
/**
* @generated from protobuf field: prehog.v1alpha.DiscoverStepStatus status = 3;
*/
status?: DiscoverStepStatus;
}
/**
* UIDiscoverDatabaseConfigureIAMPolicyEvent is emitted when a user is finished with the step that configures IAM policy for an RDS database.
*
@@ -2826,6 +2845,12 @@ export interface SubmitEventRequest {
* @generated from protobuf field: prehog.v1alpha.UIDiscoverKubeEKSEnrollEvent ui_discover_kube_eks_enroll_event = 84;
*/
uiDiscoverKubeEksEnrollEvent: UIDiscoverKubeEKSEnrollEvent;
} | {
oneofKind: "uiDiscoverCreateAppServerEvent";
/**
* @generated from protobuf field: prehog.v1alpha.UIDiscoverCreateAppServerEvent ui_discover_create_app_server_event = 85;
*/
uiDiscoverCreateAppServerEvent: UIDiscoverCreateAppServerEvent;
} | {
oneofKind: undefined;
};
@@ -5795,6 +5820,66 @@ class UIDiscoverCreateNodeEvent$Type extends MessageType<UIDiscoverCreateNodeEve
*/
export const UIDiscoverCreateNodeEvent = new UIDiscoverCreateNodeEvent$Type();
// @generated message type with reflection information, may provide speed optimized methods
class UIDiscoverCreateAppServerEvent$Type extends MessageType<UIDiscoverCreateAppServerEvent> {
constructor() {
super("prehog.v1alpha.UIDiscoverCreateAppServerEvent", [
{ no: 1, name: "metadata", kind: "message", T: () => DiscoverMetadata },
{ no: 2, name: "resource", kind: "message", T: () => DiscoverResourceMetadata },
{ no: 3, name: "status", kind: "message", T: () => DiscoverStepStatus }
]);
}
create(value?: PartialMessage<UIDiscoverCreateAppServerEvent>): UIDiscoverCreateAppServerEvent {
const message = globalThis.Object.create((this.messagePrototype!));
if (value !== undefined)
reflectionMergePartial<UIDiscoverCreateAppServerEvent>(this, message, value);
return message;
}
internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: UIDiscoverCreateAppServerEvent): UIDiscoverCreateAppServerEvent {
let message = target ?? this.create(), end = reader.pos + length;
while (reader.pos < end) {
let [fieldNo, wireType] = reader.tag();
switch (fieldNo) {
case /* prehog.v1alpha.DiscoverMetadata metadata */ 1:
message.metadata = DiscoverMetadata.internalBinaryRead(reader, reader.uint32(), options, message.metadata);
break;
case /* prehog.v1alpha.DiscoverResourceMetadata resource */ 2:
message.resource = DiscoverResourceMetadata.internalBinaryRead(reader, reader.uint32(), options, message.resource);
break;
case /* prehog.v1alpha.DiscoverStepStatus status */ 3:
message.status = DiscoverStepStatus.internalBinaryRead(reader, reader.uint32(), options, message.status);
break;
default:
let u = options.readUnknownField;
if (u === "throw")
throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
let d = reader.skip(wireType);
if (u !== false)
(u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
}
}
return message;
}
internalBinaryWrite(message: UIDiscoverCreateAppServerEvent, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
/* prehog.v1alpha.DiscoverMetadata metadata = 1; */
if (message.metadata)
DiscoverMetadata.internalBinaryWrite(message.metadata, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
/* prehog.v1alpha.DiscoverResourceMetadata resource = 2; */
if (message.resource)
DiscoverResourceMetadata.internalBinaryWrite(message.resource, writer.tag(2, WireType.LengthDelimited).fork(), options).join();
/* prehog.v1alpha.DiscoverStepStatus status = 3; */
if (message.status)
DiscoverStepStatus.internalBinaryWrite(message.status, writer.tag(3, WireType.LengthDelimited).fork(), options).join();
let u = options.writeUnknownFields;
if (u !== false)
(u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
return writer;
}
}
/**
* @generated MessageType for protobuf message prehog.v1alpha.UIDiscoverCreateAppServerEvent
*/
export const UIDiscoverCreateAppServerEvent = new UIDiscoverCreateAppServerEvent$Type();
// @generated message type with reflection information, may provide speed optimized methods
class UIDiscoverDatabaseConfigureIAMPolicyEvent$Type extends MessageType<UIDiscoverDatabaseConfigureIAMPolicyEvent> {
constructor() {
super("prehog.v1alpha.UIDiscoverDatabaseConfigureIAMPolicyEvent", [
@@ -8929,7 +9014,8 @@ class SubmitEventRequest$Type extends MessageType<SubmitEventRequest> {
{ no: 81, name: "database_user_created", kind: "message", oneof: "event", T: () => DatabaseUserCreatedEvent },
{ no: 82, name: "database_user_permissions_updated", kind: "message", oneof: "event", T: () => DatabaseUserPermissionsUpdateEvent },
{ no: 83, name: "ui_discover_create_discovery_config", kind: "message", oneof: "event", T: () => UIDiscoverCreateDiscoveryConfigEvent },
{ no: 84, name: "ui_discover_kube_eks_enroll_event", kind: "message", oneof: "event", T: () => UIDiscoverKubeEKSEnrollEvent }
{ no: 84, name: "ui_discover_kube_eks_enroll_event", kind: "message", oneof: "event", T: () => UIDiscoverKubeEKSEnrollEvent },
{ no: 85, name: "ui_discover_create_app_server_event", kind: "message", oneof: "event", T: () => UIDiscoverCreateAppServerEvent }
]);
}
create(value?: PartialMessage<SubmitEventRequest>): SubmitEventRequest {
@@ -9437,6 +9523,12 @@ class SubmitEventRequest$Type extends MessageType<SubmitEventRequest> {
uiDiscoverKubeEksEnrollEvent: UIDiscoverKubeEKSEnrollEvent.internalBinaryRead(reader, reader.uint32(), options, (message.event as any).uiDiscoverKubeEksEnrollEvent)
};
break;
case /* prehog.v1alpha.UIDiscoverCreateAppServerEvent ui_discover_create_app_server_event */ 85:
message.event = {
oneofKind: "uiDiscoverCreateAppServerEvent",
uiDiscoverCreateAppServerEvent: UIDiscoverCreateAppServerEvent.internalBinaryRead(reader, reader.uint32(), options, (message.event as any).uiDiscoverCreateAppServerEvent)
};
break;
default:
let u = options.readUnknownField;
if (u === "throw")
@@ -9698,6 +9790,9 @@ class SubmitEventRequest$Type extends MessageType<SubmitEventRequest> {
/* prehog.v1alpha.UIDiscoverKubeEKSEnrollEvent ui_discover_kube_eks_enroll_event = 84; */
if (message.event.oneofKind === "uiDiscoverKubeEksEnrollEvent")
UIDiscoverKubeEKSEnrollEvent.internalBinaryWrite(message.event.uiDiscoverKubeEksEnrollEvent, writer.tag(84, WireType.LengthDelimited).fork(), options).join();
/* prehog.v1alpha.UIDiscoverCreateAppServerEvent ui_discover_create_app_server_event = 85; */
if (message.event.oneofKind === "uiDiscoverCreateAppServerEvent")
UIDiscoverCreateAppServerEvent.internalBinaryWrite(message.event.uiDiscoverCreateAppServerEvent, writer.tag(85, WireType.LengthDelimited).fork(), options).join();
let u = options.writeUnknownFields;
if (u !== false)
(u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
+11
View File
@@ -1373,6 +1373,17 @@ func ConvertUsageEvent(event *usageeventsv1.UsageEventOneOf, userMD UserMetadata
return nil, trace.Wrap(err)
}
return ret, nil
case *usageeventsv1.UsageEventOneOf_UiDiscoverCreateAppServerEvent:
ret := &UIDiscoverCreateAppServerEvent{
Metadata: discoverMetadataToPrehog(e.UiDiscoverCreateAppServerEvent.Metadata, userMD),
Resource: discoverResourceToPrehog(e.UiDiscoverCreateAppServerEvent.Resource),
Status: discoverStatusToPrehog(e.UiDiscoverCreateAppServerEvent.Status),
}
if err := ret.CheckAndSetDefaults(); err != nil {
return nil, trace.Wrap(err)
}
return ret, nil
case *usageeventsv1.UsageEventOneOf_UiDiscoverDatabaseConfigureIamPolicyEvent:
ret := &UIDiscoverDatabaseConfigureIAMPolicyEvent{
@@ -466,6 +466,28 @@ func (u *UIDiscoverCreateNodeEvent) Anonymize(a utils.Anonymizer) prehogv1a.Subm
}
}
// UIDiscoverCreateAppServerEvent is emitted when the node is created in Teleport.
type UIDiscoverCreateAppServerEvent prehogv1a.UIDiscoverCreateAppServerEvent
func (u *UIDiscoverCreateAppServerEvent) CheckAndSetDefaults() error {
return trace.Wrap(validateDiscoverBaseEventFields(u.Metadata, u.Resource, u.Status))
}
func (u *UIDiscoverCreateAppServerEvent) Anonymize(a utils.Anonymizer) prehogv1a.SubmitEventRequest {
return prehogv1a.SubmitEventRequest{
Event: &prehogv1a.SubmitEventRequest_UiDiscoverCreateAppServerEvent{
UiDiscoverCreateAppServerEvent: &prehogv1a.UIDiscoverCreateAppServerEvent{
Metadata: &prehogv1a.DiscoverMetadata{
Id: u.Metadata.Id,
UserName: a.AnonymizeString(u.Metadata.UserName),
},
Resource: u.Resource,
Status: u.Status,
},
},
}
}
// UIDiscoverDatabaseConfigureIAMPolicyEvent is emitted when a user configured IAM for RDS database
// and proceeded to the next step.
type UIDiscoverDatabaseConfigureIAMPolicyEvent prehogv1a.UIDiscoverDatabaseConfigureIAMPolicyEvent
@@ -312,6 +312,29 @@ func TestConvertUsageEvent(t *testing.T) {
},
}},
},
{
name: "discover create app server event",
event: &usageeventsv1.UsageEventOneOf{Event: &usageeventsv1.UsageEventOneOf_UiDiscoverCreateAppServerEvent{
UiDiscoverCreateAppServerEvent: &usageeventsv1.UIDiscoverCreateAppServerEvent{
Metadata: &usageeventsv1.DiscoverMetadata{Id: "someid"},
Resource: &usageeventsv1.DiscoverResourceMetadata{Resource: usageeventsv1.DiscoverResource_DISCOVER_RESOURCE_APPLICATION_AWS_CONSOLE},
Status: &usageeventsv1.DiscoverStepStatus{Status: usageeventsv1.DiscoverStatus_DISCOVER_STATUS_SUCCESS},
},
}},
identityUsername: "myuser",
errCheck: require.NoError,
expected: &prehogv1a.SubmitEventRequest{Event: &prehogv1a.SubmitEventRequest_UiDiscoverCreateAppServerEvent{
UiDiscoverCreateAppServerEvent: &prehogv1a.UIDiscoverCreateAppServerEvent{
Metadata: &prehogv1a.DiscoverMetadata{
Id: "someid",
UserName: expectedAnonymizedUserString,
Sso: false,
},
Resource: &prehogv1a.DiscoverResourceMetadata{Resource: prehogv1a.DiscoverResource_DISCOVER_RESOURCE_APPLICATION_AWS_CONSOLE},
Status: &prehogv1a.DiscoverStepStatus{Status: prehogv1a.DiscoverStatus_DISCOVER_STATUS_SUCCESS},
},
}},
},
{
name: "discover deploy eice event",
event: &usageeventsv1.UsageEventOneOf{Event: &usageeventsv1.UsageEventOneOf_UiDiscoverDeployEice{
+2
View File
@@ -61,6 +61,7 @@ const (
uiDiscoverEC2InstanceSelectionEvent = "tp.ui.discover.selectedEC2Instance"
uiDiscoverDeployEICEEvent = "tp.ui.discover.deployEICE"
uiDiscoverCreateNodeEvent = "tp.ui.discover.createNode"
uiDiscoverCreateAppServerEvent = "tp.ui.discover.createAppServer"
uiDiscoverCreateDiscoveryConfigEvent = "tp.ui.discover.createDiscoveryConfig"
uiDiscoverPrincipalsConfigureEvent = "tp.ui.discover.principals.configure"
uiDiscoverTestConnectionEvent = "tp.ui.discover.testConnection"
@@ -301,6 +302,7 @@ func ConvertUserEventRequestToUsageEvent(req CreateUserEventRequest) (*usageeven
uiDiscoverEC2InstanceSelectionEvent,
uiDiscoverDeployEICEEvent,
uiDiscoverCreateNodeEvent,
uiDiscoverCreateAppServerEvent,
uiDiscoverCreateDiscoveryConfigEvent,
uiDiscoverCompletedEvent:
@@ -246,6 +246,15 @@ func (d *DiscoverEventData) ToUsageEvent(eventName string) (*usageeventsv1.Usage
},
}}, nil
case uiDiscoverCreateAppServerEvent:
return &usageeventsv1.UsageEventOneOf{Event: &usageeventsv1.UsageEventOneOf_UiDiscoverCreateAppServerEvent{
UiDiscoverCreateAppServerEvent: &usageeventsv1.UIDiscoverCreateAppServerEvent{
Metadata: metadata,
Resource: resource,
Status: status,
},
}}, nil
case uiDiscoverDatabaseConfigureIAMPolicyEvent:
return &usageeventsv1.UsageEventOneOf{Event: &usageeventsv1.UsageEventOneOf_UiDiscoverDatabaseConfigureIamPolicyEvent{
UiDiscoverDatabaseConfigureIamPolicyEvent: &usageeventsv1.UIDiscoverDatabaseConfigureIAMPolicyEvent{
@@ -164,6 +164,25 @@ func TestDiscoverEventDataToUsageEvent(t *testing.T) {
},
}},
},
{
name: uiDiscoverCreateAppServerEvent + "/success_test",
event: uiDiscoverCreateAppServerEvent,
errCheck: require.NoError,
req: DiscoverEventData{
ID: "someid",
Resource: "DISCOVER_RESOURCE_APPLICATION_AWS_CONSOLE",
StepStatus: "DISCOVER_STATUS_SUCCESS",
},
expected: &usageeventsv1.UsageEventOneOf{Event: &usageeventsv1.UsageEventOneOf_UiDiscoverCreateAppServerEvent{
UiDiscoverCreateAppServerEvent: &usageeventsv1.UIDiscoverCreateAppServerEvent{
Metadata: &usageeventsv1.DiscoverMetadata{Id: "someid"},
Resource: &usageeventsv1.DiscoverResourceMetadata{Resource: usageeventsv1.DiscoverResource_DISCOVER_RESOURCE_APPLICATION_AWS_CONSOLE},
Status: &usageeventsv1.DiscoverStepStatus{
Status: usageeventsv1.DiscoverStatus_DISCOVER_STATUS_SUCCESS,
},
},
}},
},
{
name: uiDiscoverKubeEKSEnrollEvent + "/success_test",
event: uiDiscoverKubeEKSEnrollEvent,
+9
View File
@@ -652,6 +652,13 @@ message UIDiscoverCreateNodeEvent {
DiscoverStepStatus status = 3;
}
// UIDiscoverCreateAppServerEvent is emitted when an app server is created.
message UIDiscoverCreateAppServerEvent {
DiscoverMetadata metadata = 1;
DiscoverResourceMetadata resource = 2;
DiscoverStepStatus status = 3;
}
// UIDiscoverDatabaseConfigureIAMPolicyEvent is emitted when a user is finished with the step that configures IAM policy for an RDS database.
message UIDiscoverDatabaseConfigureIAMPolicyEvent {
DiscoverMetadata metadata = 1;
@@ -1443,6 +1450,8 @@ message SubmitEventRequest {
UIDiscoverCreateDiscoveryConfigEvent ui_discover_create_discovery_config = 83;
UIDiscoverKubeEKSEnrollEvent ui_discover_kube_eks_enroll_event = 84;
UIDiscoverCreateAppServerEvent ui_discover_create_app_server_event = 85;
}
reserved 8; // UIOnboardGetStartedClickEvent
@@ -43,7 +43,7 @@ export const AwsMangementConsole: ResourceViewConfig<ResourceSpec> = {
{
title: 'Create Application Server',
component: CreateAppAccess,
// TODO(lisa) define a create application aws step
eventName: DiscoverEvent.CreateApplicationServer,
},
{
title: 'Set Up Access',
@@ -90,6 +90,7 @@ export enum DiscoverEvent {
DatabaseConfigureIAMPolicy = 'tp.ui.discover.database.configure.iampolicy',
EC2InstanceSelection = 'tp.ui.discover.selectedEC2Instance',
EC2DeployEICE = 'tp.ui.discover.deployEICE',
CreateApplicationServer = 'tp.ui.discover.createAppServer',
CreateNode = 'tp.ui.discover.createNode',
CreateDiscoveryConfig = 'tp.ui.discover.createDiscoveryConfig',
KubeEKSEnrollEvent = 'tp.ui.discover.kube.enroll.eks',