From 81dd2953b95203a947f49f80d831783983e06cfb Mon Sep 17 00:00:00 2001 From: peterxcli Date: Thu, 28 Nov 2024 01:20:36 +0800 Subject: [PATCH 1/5] feat: add `template` field in three Notification message proto Signed-off-by: peterxcli --- flyteidl/protos/flyteidl/admin/common.proto | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/flyteidl/protos/flyteidl/admin/common.proto b/flyteidl/protos/flyteidl/admin/common.proto index 58eda8e491..86f64155b5 100644 --- a/flyteidl/protos/flyteidl/admin/common.proto +++ b/flyteidl/protos/flyteidl/admin/common.proto @@ -229,6 +229,9 @@ message EmailNotification { // The list of email addresses recipients for this notification. // +required repeated string recipients_email = 1; + // The template to use for this notification. + // +optional + string template = 2; } // Defines a pager duty notification specification. @@ -236,6 +239,9 @@ message PagerDutyNotification { // Currently, PagerDuty notifications leverage email to trigger a notification. // +required repeated string recipients_email = 1; + // The template to use for this notification. + // +optional + string template = 2; } // Defines a slack notification specification. @@ -243,6 +249,9 @@ message SlackNotification { // Currently, Slack notifications leverage email to trigger a notification. // +required repeated string recipients_email = 1; + // The template to use for this notification. + // +optional + string template = 2; } // Represents a structure for notifications based on execution status. From 8b73c47643bc18fbcdd5f986848ff66a97269803 Mon Sep 17 00:00:00 2001 From: peterxcli Date: Thu, 28 Nov 2024 01:20:57 +0800 Subject: [PATCH 2/5] feat: add support for custom email templates in email notifications Signed-off-by: peterxcli --- flyteadmin/pkg/async/notifications/email.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/flyteadmin/pkg/async/notifications/email.go b/flyteadmin/pkg/async/notifications/email.go index e23806cc12..b60c898934 100644 --- a/flyteadmin/pkg/async/notifications/email.go +++ b/flyteadmin/pkg/async/notifications/email.go @@ -116,10 +116,17 @@ func ToEmailMessageFromWorkflowExecutionEvent( request *admin.WorkflowExecutionEventRequest, execution *admin.Execution) *admin.EmailMessage { + var emailBody string + if emailNotification.Template != "" { + emailBody = emailNotification.Template + } else { + emailBody = config.NotificationsEmailerConfig.Body + } + return &admin.EmailMessage{ SubjectLine: substituteEmailParameters(config.NotificationsEmailerConfig.Subject, request, execution), SenderEmail: config.NotificationsEmailerConfig.Sender, RecipientsEmail: emailNotification.GetRecipientsEmail(), - Body: substituteEmailParameters(config.NotificationsEmailerConfig.Body, request, execution), + Body: substituteEmailParameters(emailBody, request, execution), } } From aad14c9f674fec8e10603d47d64dba1b025b1cd8 Mon Sep 17 00:00:00 2001 From: peterxcli Date: Thu, 28 Nov 2024 01:21:15 +0800 Subject: [PATCH 3/5] chore: codegen Signed-off-by: peterxcli --- flyteidl/clients/go/assets/admin.swagger.json | 12 ++ .../gen/pb-es/flyteidl/admin/common_pb.ts | 27 +++ .../gen/pb-go/flyteidl/admin/common.pb.go | 203 ++++++++++-------- .../flyteidl/service/admin.swagger.json | 12 ++ flyteidl/gen/pb-js/flyteidl.d.ts | 18 ++ flyteidl/gen/pb-js/flyteidl.js | 51 +++++ .../pb_python/flyteidl/admin/common_pb2.py | 56 ++--- .../pb_python/flyteidl/admin/common_pb2.pyi | 18 +- flyteidl/gen/pb_rust/flyteidl.admin.rs | 12 ++ 9 files changed, 291 insertions(+), 118 deletions(-) diff --git a/flyteidl/clients/go/assets/admin.swagger.json b/flyteidl/clients/go/assets/admin.swagger.json index f8a50f0f15..cd867ec31e 100644 --- a/flyteidl/clients/go/assets/admin.swagger.json +++ b/flyteidl/clients/go/assets/admin.swagger.json @@ -4697,6 +4697,10 @@ "type": "string" }, "title": "The list of email addresses recipients for this notification.\n+required" + }, + "template": { + "type": "string", + "title": "The template to use for this notification.\n+optional" } }, "description": "Defines an email notification specification." @@ -5756,6 +5760,10 @@ "type": "string" }, "title": "Currently, PagerDuty notifications leverage email to trigger a notification.\n+required" + }, + "template": { + "type": "string", + "title": "The template to use for this notification.\n+optional" } }, "description": "Defines a pager duty notification specification." @@ -5989,6 +5997,10 @@ "type": "string" }, "title": "Currently, Slack notifications leverage email to trigger a notification.\n+required" + }, + "template": { + "type": "string", + "title": "The template to use for this notification.\n+optional" } }, "description": "Defines a slack notification specification." diff --git a/flyteidl/gen/pb-es/flyteidl/admin/common_pb.ts b/flyteidl/gen/pb-es/flyteidl/admin/common_pb.ts index 52ee165d36..0f15fe1d72 100644 --- a/flyteidl/gen/pb-es/flyteidl/admin/common_pb.ts +++ b/flyteidl/gen/pb-es/flyteidl/admin/common_pb.ts @@ -876,6 +876,14 @@ export class EmailNotification extends Message { */ recipientsEmail: string[] = []; + /** + * The template to use for this notification. + * +optional + * + * @generated from field: string template = 2; + */ + template = ""; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -885,6 +893,7 @@ export class EmailNotification extends Message { static readonly typeName = "flyteidl.admin.EmailNotification"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "recipients_email", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, + { no: 2, name: "template", kind: "scalar", T: 9 /* ScalarType.STRING */ }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): EmailNotification { @@ -918,6 +927,14 @@ export class PagerDutyNotification extends Message { */ recipientsEmail: string[] = []; + /** + * The template to use for this notification. + * +optional + * + * @generated from field: string template = 2; + */ + template = ""; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -927,6 +944,7 @@ export class PagerDutyNotification extends Message { static readonly typeName = "flyteidl.admin.PagerDutyNotification"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "recipients_email", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, + { no: 2, name: "template", kind: "scalar", T: 9 /* ScalarType.STRING */ }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): PagerDutyNotification { @@ -960,6 +978,14 @@ export class SlackNotification extends Message { */ recipientsEmail: string[] = []; + /** + * The template to use for this notification. + * +optional + * + * @generated from field: string template = 2; + */ + template = ""; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -969,6 +995,7 @@ export class SlackNotification extends Message { static readonly typeName = "flyteidl.admin.SlackNotification"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "recipients_email", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, + { no: 2, name: "template", kind: "scalar", T: 9 /* ScalarType.STRING */ }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): SlackNotification { diff --git a/flyteidl/gen/pb-go/flyteidl/admin/common.pb.go b/flyteidl/gen/pb-go/flyteidl/admin/common.pb.go index 94889d196c..ee9075bc53 100644 --- a/flyteidl/gen/pb-go/flyteidl/admin/common.pb.go +++ b/flyteidl/gen/pb-go/flyteidl/admin/common.pb.go @@ -1060,6 +1060,9 @@ type EmailNotification struct { // The list of email addresses recipients for this notification. // +required RecipientsEmail []string `protobuf:"bytes,1,rep,name=recipients_email,json=recipientsEmail,proto3" json:"recipients_email,omitempty"` + // The template to use for this notification. + // +optional + Template string `protobuf:"bytes,2,opt,name=template,proto3" json:"template,omitempty"` } func (x *EmailNotification) Reset() { @@ -1101,6 +1104,13 @@ func (x *EmailNotification) GetRecipientsEmail() []string { return nil } +func (x *EmailNotification) GetTemplate() string { + if x != nil { + return x.Template + } + return "" +} + // Defines a pager duty notification specification. type PagerDutyNotification struct { state protoimpl.MessageState @@ -1110,6 +1120,9 @@ type PagerDutyNotification struct { // Currently, PagerDuty notifications leverage email to trigger a notification. // +required RecipientsEmail []string `protobuf:"bytes,1,rep,name=recipients_email,json=recipientsEmail,proto3" json:"recipients_email,omitempty"` + // The template to use for this notification. + // +optional + Template string `protobuf:"bytes,2,opt,name=template,proto3" json:"template,omitempty"` } func (x *PagerDutyNotification) Reset() { @@ -1151,6 +1164,13 @@ func (x *PagerDutyNotification) GetRecipientsEmail() []string { return nil } +func (x *PagerDutyNotification) GetTemplate() string { + if x != nil { + return x.Template + } + return "" +} + // Defines a slack notification specification. type SlackNotification struct { state protoimpl.MessageState @@ -1160,6 +1180,9 @@ type SlackNotification struct { // Currently, Slack notifications leverage email to trigger a notification. // +required RecipientsEmail []string `protobuf:"bytes,1,rep,name=recipients_email,json=recipientsEmail,proto3" json:"recipients_email,omitempty"` + // The template to use for this notification. + // +optional + Template string `protobuf:"bytes,2,opt,name=template,proto3" json:"template,omitempty"` } func (x *SlackNotification) Reset() { @@ -1201,6 +1224,13 @@ func (x *SlackNotification) GetRecipientsEmail() []string { return nil } +func (x *SlackNotification) GetTemplate() string { + if x != nil { + return x.Template + } + return "" +} + // Represents a structure for notifications based on execution status. // The notification content is configured within flyte admin but can be templatized. // Future iterations could expose configuring notifications with custom content. @@ -1836,97 +1866,102 @@ var file_flyteidl_admin_common_proto_rawDesc = []byte{ 0x65, 0x72, 0x73, 0x12, 0x2d, 0x0a, 0x07, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x52, 0x06, 0x73, 0x6f, 0x72, 0x74, - 0x42, 0x79, 0x22, 0x3e, 0x0a, 0x11, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x4e, 0x6f, 0x74, 0x69, 0x66, + 0x42, 0x79, 0x22, 0x5a, 0x0a, 0x11, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x4e, 0x6f, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x63, 0x69, 0x70, + 0x69, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x0f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6d, 0x61, + 0x69, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0x5e, + 0x0a, 0x15, 0x50, 0x61, 0x67, 0x65, 0x72, 0x44, 0x75, 0x74, 0x79, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6d, 0x61, - 0x69, 0x6c, 0x22, 0x42, 0x0a, 0x15, 0x50, 0x61, 0x67, 0x65, 0x72, 0x44, 0x75, 0x74, 0x79, 0x4e, - 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x72, - 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, - 0x73, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x3e, 0x0a, 0x11, 0x53, 0x6c, 0x61, 0x63, 0x6b, 0x4e, - 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x72, - 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, - 0x73, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x94, 0x02, 0x0a, 0x0c, 0x4e, 0x6f, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x06, 0x70, 0x68, 0x61, 0x73, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, - 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x68, 0x61, 0x73, 0x65, 0x52, - 0x06, 0x70, 0x68, 0x61, 0x73, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x4e, 0x6f, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x65, 0x6d, 0x61, - 0x69, 0x6c, 0x12, 0x46, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x72, 0x5f, 0x64, 0x75, 0x74, 0x79, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x72, 0x44, 0x75, 0x74, - 0x79, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, - 0x09, 0x70, 0x61, 0x67, 0x65, 0x72, 0x44, 0x75, 0x74, 0x79, 0x12, 0x39, 0x0a, 0x05, 0x73, 0x6c, - 0x61, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x6c, 0x61, 0x63, 0x6b, - 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x05, - 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x35, 0x0a, - 0x07, 0x55, 0x72, 0x6c, 0x42, 0x6c, 0x6f, 0x62, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x79, - 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, - 0x3a, 0x02, 0x18, 0x01, 0x22, 0x7f, 0x0a, 0x06, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x3a, - 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, - 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x45, 0x6e, 0x74, + 0x69, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0x5a, + 0x0a, 0x11, 0x53, 0x6c, 0x61, 0x63, 0x6b, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, + 0x73, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x72, + 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1a, + 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0x94, 0x02, 0x0a, 0x0c, 0x4e, + 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x06, 0x70, + 0x68, 0x61, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x66, 0x6c, + 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, + 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x68, + 0x61, 0x73, 0x65, 0x52, 0x06, 0x70, 0x68, 0x61, 0x73, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x05, 0x65, + 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x45, 0x6d, 0x61, 0x69, + 0x6c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, + 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x46, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x72, 0x5f, + 0x64, 0x75, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x61, 0x67, 0x65, + 0x72, 0x44, 0x75, 0x74, 0x79, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x48, 0x00, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x72, 0x44, 0x75, 0x74, 0x79, 0x12, 0x39, + 0x0a, 0x05, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, + 0x6c, 0x61, 0x63, 0x6b, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x48, 0x00, 0x52, 0x05, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x22, 0x35, 0x0a, 0x07, 0x55, 0x72, 0x6c, 0x42, 0x6c, 0x6f, 0x62, 0x12, 0x10, 0x0a, 0x03, + 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x14, + 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x62, + 0x79, 0x74, 0x65, 0x73, 0x3a, 0x02, 0x18, 0x01, 0x22, 0x7f, 0x0a, 0x06, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x12, 0x3a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a, 0x39, + 0x0a, 0x0b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x89, 0x01, 0x0a, 0x0b, 0x41, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3f, 0x0a, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, + 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x89, 0x01, 0x0a, 0x0b, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3f, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x22, 0x3b, 0x0a, 0x04, 0x45, 0x6e, 0x76, 0x73, 0x12, 0x33, 0x0a, 0x06, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x66, 0x6c, 0x79, 0x74, - 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x7a, - 0x0a, 0x08, 0x41, 0x75, 0x74, 0x68, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x61, 0x73, - 0x73, 0x75, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x61, 0x6d, 0x5f, 0x72, 0x6f, 0x6c, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, 0x73, 0x73, 0x75, 0x6d, 0x61, 0x62, 0x6c, - 0x65, 0x49, 0x61, 0x6d, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x3c, 0x0a, 0x1a, 0x6b, 0x75, 0x62, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x6b, 0x75, - 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x3a, 0x02, 0x18, 0x01, 0x22, 0x4b, 0x0a, 0x13, 0x52, 0x61, - 0x77, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x34, 0x0a, 0x16, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x14, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x22, 0x51, 0x0a, 0x09, 0x46, 0x6c, 0x79, 0x74, 0x65, - 0x55, 0x52, 0x4c, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, - 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x63, 0x6b, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x63, 0x6b, 0x2a, 0x68, 0x0a, 0x10, 0x4e, 0x61, - 0x6d, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x17, - 0x0a, 0x13, 0x4e, 0x41, 0x4d, 0x45, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x41, - 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x4e, 0x41, 0x4d, 0x45, 0x44, - 0x5f, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x44, - 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x47, 0x45, 0x4e, - 0x45, 0x52, 0x41, 0x54, 0x45, 0x44, 0x10, 0x02, 0x22, 0x04, 0x08, 0x03, 0x10, 0x03, 0x22, 0x04, - 0x08, 0x04, 0x10, 0x04, 0x42, 0xb7, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x66, 0x6c, 0x79, - 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x42, 0x0b, 0x43, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3b, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x6f, 0x72, 0x67, 0x2f, - 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x67, - 0x65, 0x6e, 0x2f, 0x70, 0x62, 0x2d, 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, - 0x6c, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0xa2, 0x02, 0x03, 0x46, 0x41, 0x58, 0xaa, 0x02, 0x0e, - 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0xca, 0x02, - 0x0e, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0xe2, - 0x02, 0x1a, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x41, 0x64, 0x6d, 0x69, 0x6e, - 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, 0x46, - 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x3a, 0x3a, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3b, 0x0a, 0x04, 0x45, 0x6e, 0x76, 0x73, 0x12, 0x33, 0x0a, + 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4b, 0x65, + 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x22, 0x7a, 0x0a, 0x08, 0x41, 0x75, 0x74, 0x68, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x2c, + 0x0a, 0x12, 0x61, 0x73, 0x73, 0x75, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x61, 0x6d, 0x5f, + 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, 0x73, 0x73, 0x75, + 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x61, 0x6d, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x3c, 0x0a, 0x1a, + 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x18, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x3a, 0x02, 0x18, 0x01, 0x22, 0x4b, + 0x0a, 0x13, 0x52, 0x61, 0x77, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x34, 0x0a, 0x16, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x22, 0x51, 0x0a, 0x09, 0x46, + 0x6c, 0x79, 0x74, 0x65, 0x55, 0x52, 0x4c, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, + 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, + 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x63, 0x6b, 0x2a, 0x68, + 0x0a, 0x10, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x4e, 0x41, 0x4d, 0x45, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x49, + 0x54, 0x59, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x4e, + 0x41, 0x4d, 0x45, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x41, 0x52, 0x43, 0x48, + 0x49, 0x56, 0x45, 0x44, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, + 0x5f, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x41, 0x54, 0x45, 0x44, 0x10, 0x02, 0x22, 0x04, 0x08, 0x03, + 0x10, 0x03, 0x22, 0x04, 0x08, 0x04, 0x10, 0x04, 0x42, 0xb7, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, + 0x2e, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x42, + 0x0b, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3b, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, + 0x6f, 0x72, 0x67, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x2f, 0x66, 0x6c, 0x79, 0x74, 0x65, 0x69, + 0x64, 0x6c, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x62, 0x2d, 0x67, 0x6f, 0x2f, 0x66, 0x6c, 0x79, + 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0xa2, 0x02, 0x03, 0x46, 0x41, + 0x58, 0xaa, 0x02, 0x0e, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x2e, 0x41, 0x64, 0x6d, + 0x69, 0x6e, 0xca, 0x02, 0x0e, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x41, 0x64, + 0x6d, 0x69, 0x6e, 0xe2, 0x02, 0x1a, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x5c, 0x41, + 0x64, 0x6d, 0x69, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0xea, 0x02, 0x0f, 0x46, 0x6c, 0x79, 0x74, 0x65, 0x69, 0x64, 0x6c, 0x3a, 0x3a, 0x41, 0x64, 0x6d, + 0x69, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json b/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json index f8a50f0f15..cd867ec31e 100644 --- a/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json +++ b/flyteidl/gen/pb-go/gateway/flyteidl/service/admin.swagger.json @@ -4697,6 +4697,10 @@ "type": "string" }, "title": "The list of email addresses recipients for this notification.\n+required" + }, + "template": { + "type": "string", + "title": "The template to use for this notification.\n+optional" } }, "description": "Defines an email notification specification." @@ -5756,6 +5760,10 @@ "type": "string" }, "title": "Currently, PagerDuty notifications leverage email to trigger a notification.\n+required" + }, + "template": { + "type": "string", + "title": "The template to use for this notification.\n+optional" } }, "description": "Defines a pager duty notification specification." @@ -5989,6 +5997,10 @@ "type": "string" }, "title": "Currently, Slack notifications leverage email to trigger a notification.\n+required" + }, + "template": { + "type": "string", + "title": "The template to use for this notification.\n+optional" } }, "description": "Defines a slack notification specification." diff --git a/flyteidl/gen/pb-js/flyteidl.d.ts b/flyteidl/gen/pb-js/flyteidl.d.ts index 4470cb2481..b4400410a0 100644 --- a/flyteidl/gen/pb-js/flyteidl.d.ts +++ b/flyteidl/gen/pb-js/flyteidl.d.ts @@ -11907,6 +11907,9 @@ export namespace flyteidl { /** EmailNotification recipientsEmail */ recipientsEmail?: (string[]|null); + + /** EmailNotification template */ + template?: (string|null); } /** Represents an EmailNotification. */ @@ -11921,6 +11924,9 @@ export namespace flyteidl { /** EmailNotification recipientsEmail. */ public recipientsEmail: string[]; + /** EmailNotification template. */ + public template: string; + /** * Creates a new EmailNotification instance using the specified properties. * @param [properties] Properties to set @@ -11959,6 +11965,9 @@ export namespace flyteidl { /** PagerDutyNotification recipientsEmail */ recipientsEmail?: (string[]|null); + + /** PagerDutyNotification template */ + template?: (string|null); } /** Represents a PagerDutyNotification. */ @@ -11973,6 +11982,9 @@ export namespace flyteidl { /** PagerDutyNotification recipientsEmail. */ public recipientsEmail: string[]; + /** PagerDutyNotification template. */ + public template: string; + /** * Creates a new PagerDutyNotification instance using the specified properties. * @param [properties] Properties to set @@ -12011,6 +12023,9 @@ export namespace flyteidl { /** SlackNotification recipientsEmail */ recipientsEmail?: (string[]|null); + + /** SlackNotification template */ + template?: (string|null); } /** Represents a SlackNotification. */ @@ -12025,6 +12040,9 @@ export namespace flyteidl { /** SlackNotification recipientsEmail. */ public recipientsEmail: string[]; + /** SlackNotification template. */ + public template: string; + /** * Creates a new SlackNotification instance using the specified properties. * @param [properties] Properties to set diff --git a/flyteidl/gen/pb-js/flyteidl.js b/flyteidl/gen/pb-js/flyteidl.js index 3c31719655..e4168c5574 100644 --- a/flyteidl/gen/pb-js/flyteidl.js +++ b/flyteidl/gen/pb-js/flyteidl.js @@ -29009,6 +29009,7 @@ * @memberof flyteidl.admin * @interface IEmailNotification * @property {Array.|null} [recipientsEmail] EmailNotification recipientsEmail + * @property {string|null} [template] EmailNotification template */ /** @@ -29035,6 +29036,14 @@ */ EmailNotification.prototype.recipientsEmail = $util.emptyArray; + /** + * EmailNotification template. + * @member {string} template + * @memberof flyteidl.admin.EmailNotification + * @instance + */ + EmailNotification.prototype.template = ""; + /** * Creates a new EmailNotification instance using the specified properties. * @function create @@ -29062,6 +29071,8 @@ if (message.recipientsEmail != null && message.recipientsEmail.length) for (var i = 0; i < message.recipientsEmail.length; ++i) writer.uint32(/* id 1, wireType 2 =*/10).string(message.recipientsEmail[i]); + if (message.template != null && message.hasOwnProperty("template")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.template); return writer; }; @@ -29088,6 +29099,9 @@ message.recipientsEmail = []; message.recipientsEmail.push(reader.string()); break; + case 2: + message.template = reader.string(); + break; default: reader.skipType(tag & 7); break; @@ -29114,6 +29128,9 @@ if (!$util.isString(message.recipientsEmail[i])) return "recipientsEmail: string[] expected"; } + if (message.template != null && message.hasOwnProperty("template")) + if (!$util.isString(message.template)) + return "template: string expected"; return null; }; @@ -29127,6 +29144,7 @@ * @memberof flyteidl.admin * @interface IPagerDutyNotification * @property {Array.|null} [recipientsEmail] PagerDutyNotification recipientsEmail + * @property {string|null} [template] PagerDutyNotification template */ /** @@ -29153,6 +29171,14 @@ */ PagerDutyNotification.prototype.recipientsEmail = $util.emptyArray; + /** + * PagerDutyNotification template. + * @member {string} template + * @memberof flyteidl.admin.PagerDutyNotification + * @instance + */ + PagerDutyNotification.prototype.template = ""; + /** * Creates a new PagerDutyNotification instance using the specified properties. * @function create @@ -29180,6 +29206,8 @@ if (message.recipientsEmail != null && message.recipientsEmail.length) for (var i = 0; i < message.recipientsEmail.length; ++i) writer.uint32(/* id 1, wireType 2 =*/10).string(message.recipientsEmail[i]); + if (message.template != null && message.hasOwnProperty("template")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.template); return writer; }; @@ -29206,6 +29234,9 @@ message.recipientsEmail = []; message.recipientsEmail.push(reader.string()); break; + case 2: + message.template = reader.string(); + break; default: reader.skipType(tag & 7); break; @@ -29232,6 +29263,9 @@ if (!$util.isString(message.recipientsEmail[i])) return "recipientsEmail: string[] expected"; } + if (message.template != null && message.hasOwnProperty("template")) + if (!$util.isString(message.template)) + return "template: string expected"; return null; }; @@ -29245,6 +29279,7 @@ * @memberof flyteidl.admin * @interface ISlackNotification * @property {Array.|null} [recipientsEmail] SlackNotification recipientsEmail + * @property {string|null} [template] SlackNotification template */ /** @@ -29271,6 +29306,14 @@ */ SlackNotification.prototype.recipientsEmail = $util.emptyArray; + /** + * SlackNotification template. + * @member {string} template + * @memberof flyteidl.admin.SlackNotification + * @instance + */ + SlackNotification.prototype.template = ""; + /** * Creates a new SlackNotification instance using the specified properties. * @function create @@ -29298,6 +29341,8 @@ if (message.recipientsEmail != null && message.recipientsEmail.length) for (var i = 0; i < message.recipientsEmail.length; ++i) writer.uint32(/* id 1, wireType 2 =*/10).string(message.recipientsEmail[i]); + if (message.template != null && message.hasOwnProperty("template")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.template); return writer; }; @@ -29324,6 +29369,9 @@ message.recipientsEmail = []; message.recipientsEmail.push(reader.string()); break; + case 2: + message.template = reader.string(); + break; default: reader.skipType(tag & 7); break; @@ -29350,6 +29398,9 @@ if (!$util.isString(message.recipientsEmail[i])) return "recipientsEmail: string[] expected"; } + if (message.template != null && message.hasOwnProperty("template")) + if (!$util.isString(message.template)) + return "template: string expected"; return null; }; diff --git a/flyteidl/gen/pb_python/flyteidl/admin/common_pb2.py b/flyteidl/gen/pb_python/flyteidl/admin/common_pb2.py index dc3a3ded92..33e86b9768 100644 --- a/flyteidl/gen/pb_python/flyteidl/admin/common_pb2.py +++ b/flyteidl/gen/pb_python/flyteidl/admin/common_pb2.py @@ -17,7 +17,7 @@ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1b\x66lyteidl/admin/common.proto\x12\x0e\x66lyteidl.admin\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"o\n\x15NamedEntityIdentifier\x12\x18\n\x07project\x18\x01 \x01(\tR\x07project\x12\x16\n\x06\x64omain\x18\x02 \x01(\tR\x06\x64omain\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x10\n\x03org\x18\x04 \x01(\tR\x03org\"o\n\x13NamedEntityMetadata\x12 \n\x0b\x64\x65scription\x18\x01 \x01(\tR\x0b\x64\x65scription\x12\x36\n\x05state\x18\x02 \x01(\x0e\x32 .flyteidl.admin.NamedEntityStateR\x05state\"\xc7\x01\n\x0bNamedEntity\x12@\n\rresource_type\x18\x01 \x01(\x0e\x32\x1b.flyteidl.core.ResourceTypeR\x0cresourceType\x12\x35\n\x02id\x18\x02 \x01(\x0b\x32%.flyteidl.admin.NamedEntityIdentifierR\x02id\x12?\n\x08metadata\x18\x03 \x01(\x0b\x32#.flyteidl.admin.NamedEntityMetadataR\x08metadata\"\x82\x01\n\x04Sort\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12<\n\tdirection\x18\x02 \x01(\x0e\x32\x1e.flyteidl.admin.Sort.DirectionR\tdirection\"*\n\tDirection\x12\x0e\n\nDESCENDING\x10\x00\x12\r\n\tASCENDING\x10\x01\"\xdb\x01\n NamedEntityIdentifierListRequest\x12\x18\n\x07project\x18\x01 \x01(\tR\x07project\x12\x16\n\x06\x64omain\x18\x02 \x01(\tR\x06\x64omain\x12\x14\n\x05limit\x18\x03 \x01(\rR\x05limit\x12\x14\n\x05token\x18\x04 \x01(\tR\x05token\x12-\n\x07sort_by\x18\x05 \x01(\x0b\x32\x14.flyteidl.admin.SortR\x06sortBy\x12\x18\n\x07\x66ilters\x18\x06 \x01(\tR\x07\x66ilters\x12\x10\n\x03org\x18\x07 \x01(\tR\x03org\"\x93\x02\n\x16NamedEntityListRequest\x12@\n\rresource_type\x18\x01 \x01(\x0e\x32\x1b.flyteidl.core.ResourceTypeR\x0cresourceType\x12\x18\n\x07project\x18\x02 \x01(\tR\x07project\x12\x16\n\x06\x64omain\x18\x03 \x01(\tR\x06\x64omain\x12\x14\n\x05limit\x18\x04 \x01(\rR\x05limit\x12\x14\n\x05token\x18\x05 \x01(\tR\x05token\x12-\n\x07sort_by\x18\x06 \x01(\x0b\x32\x14.flyteidl.admin.SortR\x06sortBy\x12\x18\n\x07\x66ilters\x18\x07 \x01(\tR\x07\x66ilters\x12\x10\n\x03org\x18\x08 \x01(\tR\x03org\"t\n\x19NamedEntityIdentifierList\x12\x41\n\x08\x65ntities\x18\x01 \x03(\x0b\x32%.flyteidl.admin.NamedEntityIdentifierR\x08\x65ntities\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"`\n\x0fNamedEntityList\x12\x37\n\x08\x65ntities\x18\x01 \x03(\x0b\x32\x1b.flyteidl.admin.NamedEntityR\x08\x65ntities\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"\x90\x01\n\x15NamedEntityGetRequest\x12@\n\rresource_type\x18\x01 \x01(\x0e\x32\x1b.flyteidl.core.ResourceTypeR\x0cresourceType\x12\x35\n\x02id\x18\x02 \x01(\x0b\x32%.flyteidl.admin.NamedEntityIdentifierR\x02id\"\xd4\x01\n\x18NamedEntityUpdateRequest\x12@\n\rresource_type\x18\x01 \x01(\x0e\x32\x1b.flyteidl.core.ResourceTypeR\x0cresourceType\x12\x35\n\x02id\x18\x02 \x01(\x0b\x32%.flyteidl.admin.NamedEntityIdentifierR\x02id\x12?\n\x08metadata\x18\x03 \x01(\x0b\x32#.flyteidl.admin.NamedEntityMetadataR\x08metadata\"\x1b\n\x19NamedEntityUpdateResponse\"=\n\x10ObjectGetRequest\x12)\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x02id\"\xc1\x01\n\x13ResourceListRequest\x12\x35\n\x02id\x18\x01 \x01(\x0b\x32%.flyteidl.admin.NamedEntityIdentifierR\x02id\x12\x14\n\x05limit\x18\x02 \x01(\rR\x05limit\x12\x14\n\x05token\x18\x03 \x01(\tR\x05token\x12\x18\n\x07\x66ilters\x18\x04 \x01(\tR\x07\x66ilters\x12-\n\x07sort_by\x18\x05 \x01(\x0b\x32\x14.flyteidl.admin.SortR\x06sortBy\">\n\x11\x45mailNotification\x12)\n\x10recipients_email\x18\x01 \x03(\tR\x0frecipientsEmail\"B\n\x15PagerDutyNotification\x12)\n\x10recipients_email\x18\x01 \x03(\tR\x0frecipientsEmail\">\n\x11SlackNotification\x12)\n\x10recipients_email\x18\x01 \x03(\tR\x0frecipientsEmail\"\x94\x02\n\x0cNotification\x12>\n\x06phases\x18\x01 \x03(\x0e\x32&.flyteidl.core.WorkflowExecution.PhaseR\x06phases\x12\x39\n\x05\x65mail\x18\x02 \x01(\x0b\x32!.flyteidl.admin.EmailNotificationH\x00R\x05\x65mail\x12\x46\n\npager_duty\x18\x03 \x01(\x0b\x32%.flyteidl.admin.PagerDutyNotificationH\x00R\tpagerDuty\x12\x39\n\x05slack\x18\x04 \x01(\x0b\x32!.flyteidl.admin.SlackNotificationH\x00R\x05slackB\x06\n\x04type\"5\n\x07UrlBlob\x12\x10\n\x03url\x18\x01 \x01(\tR\x03url\x12\x14\n\x05\x62ytes\x18\x02 \x01(\x03R\x05\x62ytes:\x02\x18\x01\"\x7f\n\x06Labels\x12:\n\x06values\x18\x01 \x03(\x0b\x32\".flyteidl.admin.Labels.ValuesEntryR\x06values\x1a\x39\n\x0bValuesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\x89\x01\n\x0b\x41nnotations\x12?\n\x06values\x18\x01 \x03(\x0b\x32\'.flyteidl.admin.Annotations.ValuesEntryR\x06values\x1a\x39\n\x0bValuesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\";\n\x04\x45nvs\x12\x33\n\x06values\x18\x01 \x03(\x0b\x32\x1b.flyteidl.core.KeyValuePairR\x06values\"z\n\x08\x41uthRole\x12,\n\x12\x61ssumable_iam_role\x18\x01 \x01(\tR\x10\x61ssumableIamRole\x12<\n\x1akubernetes_service_account\x18\x02 \x01(\tR\x18kubernetesServiceAccount:\x02\x18\x01\"K\n\x13RawOutputDataConfig\x12\x34\n\x16output_location_prefix\x18\x01 \x01(\tR\x14outputLocationPrefix\"Q\n\tFlyteURLs\x12\x16\n\x06inputs\x18\x01 \x01(\tR\x06inputs\x12\x18\n\x07outputs\x18\x02 \x01(\tR\x07outputs\x12\x12\n\x04\x64\x65\x63k\x18\x03 \x01(\tR\x04\x64\x65\x63k*h\n\x10NamedEntityState\x12\x17\n\x13NAMED_ENTITY_ACTIVE\x10\x00\x12\x19\n\x15NAMED_ENTITY_ARCHIVED\x10\x01\x12\x14\n\x10SYSTEM_GENERATED\x10\x02\"\x04\x08\x03\x10\x03\"\x04\x08\x04\x10\x04\x42\xb7\x01\n\x12\x63om.flyteidl.adminB\x0b\x43ommonProtoP\x01Z;github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin\xa2\x02\x03\x46\x41X\xaa\x02\x0e\x46lyteidl.Admin\xca\x02\x0e\x46lyteidl\\Admin\xe2\x02\x1a\x46lyteidl\\Admin\\GPBMetadata\xea\x02\x0f\x46lyteidl::Adminb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1b\x66lyteidl/admin/common.proto\x12\x0e\x66lyteidl.admin\x1a\x1d\x66lyteidl/core/execution.proto\x1a\x1e\x66lyteidl/core/identifier.proto\x1a\x1c\x66lyteidl/core/literals.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"o\n\x15NamedEntityIdentifier\x12\x18\n\x07project\x18\x01 \x01(\tR\x07project\x12\x16\n\x06\x64omain\x18\x02 \x01(\tR\x06\x64omain\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x10\n\x03org\x18\x04 \x01(\tR\x03org\"o\n\x13NamedEntityMetadata\x12 \n\x0b\x64\x65scription\x18\x01 \x01(\tR\x0b\x64\x65scription\x12\x36\n\x05state\x18\x02 \x01(\x0e\x32 .flyteidl.admin.NamedEntityStateR\x05state\"\xc7\x01\n\x0bNamedEntity\x12@\n\rresource_type\x18\x01 \x01(\x0e\x32\x1b.flyteidl.core.ResourceTypeR\x0cresourceType\x12\x35\n\x02id\x18\x02 \x01(\x0b\x32%.flyteidl.admin.NamedEntityIdentifierR\x02id\x12?\n\x08metadata\x18\x03 \x01(\x0b\x32#.flyteidl.admin.NamedEntityMetadataR\x08metadata\"\x82\x01\n\x04Sort\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12<\n\tdirection\x18\x02 \x01(\x0e\x32\x1e.flyteidl.admin.Sort.DirectionR\tdirection\"*\n\tDirection\x12\x0e\n\nDESCENDING\x10\x00\x12\r\n\tASCENDING\x10\x01\"\xdb\x01\n NamedEntityIdentifierListRequest\x12\x18\n\x07project\x18\x01 \x01(\tR\x07project\x12\x16\n\x06\x64omain\x18\x02 \x01(\tR\x06\x64omain\x12\x14\n\x05limit\x18\x03 \x01(\rR\x05limit\x12\x14\n\x05token\x18\x04 \x01(\tR\x05token\x12-\n\x07sort_by\x18\x05 \x01(\x0b\x32\x14.flyteidl.admin.SortR\x06sortBy\x12\x18\n\x07\x66ilters\x18\x06 \x01(\tR\x07\x66ilters\x12\x10\n\x03org\x18\x07 \x01(\tR\x03org\"\x93\x02\n\x16NamedEntityListRequest\x12@\n\rresource_type\x18\x01 \x01(\x0e\x32\x1b.flyteidl.core.ResourceTypeR\x0cresourceType\x12\x18\n\x07project\x18\x02 \x01(\tR\x07project\x12\x16\n\x06\x64omain\x18\x03 \x01(\tR\x06\x64omain\x12\x14\n\x05limit\x18\x04 \x01(\rR\x05limit\x12\x14\n\x05token\x18\x05 \x01(\tR\x05token\x12-\n\x07sort_by\x18\x06 \x01(\x0b\x32\x14.flyteidl.admin.SortR\x06sortBy\x12\x18\n\x07\x66ilters\x18\x07 \x01(\tR\x07\x66ilters\x12\x10\n\x03org\x18\x08 \x01(\tR\x03org\"t\n\x19NamedEntityIdentifierList\x12\x41\n\x08\x65ntities\x18\x01 \x03(\x0b\x32%.flyteidl.admin.NamedEntityIdentifierR\x08\x65ntities\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"`\n\x0fNamedEntityList\x12\x37\n\x08\x65ntities\x18\x01 \x03(\x0b\x32\x1b.flyteidl.admin.NamedEntityR\x08\x65ntities\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"\x90\x01\n\x15NamedEntityGetRequest\x12@\n\rresource_type\x18\x01 \x01(\x0e\x32\x1b.flyteidl.core.ResourceTypeR\x0cresourceType\x12\x35\n\x02id\x18\x02 \x01(\x0b\x32%.flyteidl.admin.NamedEntityIdentifierR\x02id\"\xd4\x01\n\x18NamedEntityUpdateRequest\x12@\n\rresource_type\x18\x01 \x01(\x0e\x32\x1b.flyteidl.core.ResourceTypeR\x0cresourceType\x12\x35\n\x02id\x18\x02 \x01(\x0b\x32%.flyteidl.admin.NamedEntityIdentifierR\x02id\x12?\n\x08metadata\x18\x03 \x01(\x0b\x32#.flyteidl.admin.NamedEntityMetadataR\x08metadata\"\x1b\n\x19NamedEntityUpdateResponse\"=\n\x10ObjectGetRequest\x12)\n\x02id\x18\x01 \x01(\x0b\x32\x19.flyteidl.core.IdentifierR\x02id\"\xc1\x01\n\x13ResourceListRequest\x12\x35\n\x02id\x18\x01 \x01(\x0b\x32%.flyteidl.admin.NamedEntityIdentifierR\x02id\x12\x14\n\x05limit\x18\x02 \x01(\rR\x05limit\x12\x14\n\x05token\x18\x03 \x01(\tR\x05token\x12\x18\n\x07\x66ilters\x18\x04 \x01(\tR\x07\x66ilters\x12-\n\x07sort_by\x18\x05 \x01(\x0b\x32\x14.flyteidl.admin.SortR\x06sortBy\"Z\n\x11\x45mailNotification\x12)\n\x10recipients_email\x18\x01 \x03(\tR\x0frecipientsEmail\x12\x1a\n\x08template\x18\x02 \x01(\tR\x08template\"^\n\x15PagerDutyNotification\x12)\n\x10recipients_email\x18\x01 \x03(\tR\x0frecipientsEmail\x12\x1a\n\x08template\x18\x02 \x01(\tR\x08template\"Z\n\x11SlackNotification\x12)\n\x10recipients_email\x18\x01 \x03(\tR\x0frecipientsEmail\x12\x1a\n\x08template\x18\x02 \x01(\tR\x08template\"\x94\x02\n\x0cNotification\x12>\n\x06phases\x18\x01 \x03(\x0e\x32&.flyteidl.core.WorkflowExecution.PhaseR\x06phases\x12\x39\n\x05\x65mail\x18\x02 \x01(\x0b\x32!.flyteidl.admin.EmailNotificationH\x00R\x05\x65mail\x12\x46\n\npager_duty\x18\x03 \x01(\x0b\x32%.flyteidl.admin.PagerDutyNotificationH\x00R\tpagerDuty\x12\x39\n\x05slack\x18\x04 \x01(\x0b\x32!.flyteidl.admin.SlackNotificationH\x00R\x05slackB\x06\n\x04type\"5\n\x07UrlBlob\x12\x10\n\x03url\x18\x01 \x01(\tR\x03url\x12\x14\n\x05\x62ytes\x18\x02 \x01(\x03R\x05\x62ytes:\x02\x18\x01\"\x7f\n\x06Labels\x12:\n\x06values\x18\x01 \x03(\x0b\x32\".flyteidl.admin.Labels.ValuesEntryR\x06values\x1a\x39\n\x0bValuesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\x89\x01\n\x0b\x41nnotations\x12?\n\x06values\x18\x01 \x03(\x0b\x32\'.flyteidl.admin.Annotations.ValuesEntryR\x06values\x1a\x39\n\x0bValuesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\";\n\x04\x45nvs\x12\x33\n\x06values\x18\x01 \x03(\x0b\x32\x1b.flyteidl.core.KeyValuePairR\x06values\"z\n\x08\x41uthRole\x12,\n\x12\x61ssumable_iam_role\x18\x01 \x01(\tR\x10\x61ssumableIamRole\x12<\n\x1akubernetes_service_account\x18\x02 \x01(\tR\x18kubernetesServiceAccount:\x02\x18\x01\"K\n\x13RawOutputDataConfig\x12\x34\n\x16output_location_prefix\x18\x01 \x01(\tR\x14outputLocationPrefix\"Q\n\tFlyteURLs\x12\x16\n\x06inputs\x18\x01 \x01(\tR\x06inputs\x12\x18\n\x07outputs\x18\x02 \x01(\tR\x07outputs\x12\x12\n\x04\x64\x65\x63k\x18\x03 \x01(\tR\x04\x64\x65\x63k*h\n\x10NamedEntityState\x12\x17\n\x13NAMED_ENTITY_ACTIVE\x10\x00\x12\x19\n\x15NAMED_ENTITY_ARCHIVED\x10\x01\x12\x14\n\x10SYSTEM_GENERATED\x10\x02\"\x04\x08\x03\x10\x03\"\x04\x08\x04\x10\x04\x42\xb7\x01\n\x12\x63om.flyteidl.adminB\x0b\x43ommonProtoP\x01Z;github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin\xa2\x02\x03\x46\x41X\xaa\x02\x0e\x46lyteidl.Admin\xca\x02\x0e\x46lyteidl\\Admin\xe2\x02\x1a\x46lyteidl\\Admin\\GPBMetadata\xea\x02\x0f\x46lyteidl::Adminb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -34,8 +34,8 @@ _ANNOTATIONS_VALUESENTRY._serialized_options = b'8\001' _AUTHROLE._options = None _AUTHROLE._serialized_options = b'\030\001' - _globals['_NAMEDENTITYSTATE']._serialized_start=3244 - _globals['_NAMEDENTITYSTATE']._serialized_end=3348 + _globals['_NAMEDENTITYSTATE']._serialized_start=3328 + _globals['_NAMEDENTITYSTATE']._serialized_end=3432 _globals['_NAMEDENTITYIDENTIFIER']._serialized_start=173 _globals['_NAMEDENTITYIDENTIFIER']._serialized_end=284 _globals['_NAMEDENTITYMETADATA']._serialized_start=286 @@ -65,29 +65,29 @@ _globals['_RESOURCELISTREQUEST']._serialized_start=1905 _globals['_RESOURCELISTREQUEST']._serialized_end=2098 _globals['_EMAILNOTIFICATION']._serialized_start=2100 - _globals['_EMAILNOTIFICATION']._serialized_end=2162 - _globals['_PAGERDUTYNOTIFICATION']._serialized_start=2164 - _globals['_PAGERDUTYNOTIFICATION']._serialized_end=2230 - _globals['_SLACKNOTIFICATION']._serialized_start=2232 - _globals['_SLACKNOTIFICATION']._serialized_end=2294 - _globals['_NOTIFICATION']._serialized_start=2297 - _globals['_NOTIFICATION']._serialized_end=2573 - _globals['_URLBLOB']._serialized_start=2575 - _globals['_URLBLOB']._serialized_end=2628 - _globals['_LABELS']._serialized_start=2630 - _globals['_LABELS']._serialized_end=2757 - _globals['_LABELS_VALUESENTRY']._serialized_start=2700 - _globals['_LABELS_VALUESENTRY']._serialized_end=2757 - _globals['_ANNOTATIONS']._serialized_start=2760 - _globals['_ANNOTATIONS']._serialized_end=2897 - _globals['_ANNOTATIONS_VALUESENTRY']._serialized_start=2700 - _globals['_ANNOTATIONS_VALUESENTRY']._serialized_end=2757 - _globals['_ENVS']._serialized_start=2899 - _globals['_ENVS']._serialized_end=2958 - _globals['_AUTHROLE']._serialized_start=2960 - _globals['_AUTHROLE']._serialized_end=3082 - _globals['_RAWOUTPUTDATACONFIG']._serialized_start=3084 - _globals['_RAWOUTPUTDATACONFIG']._serialized_end=3159 - _globals['_FLYTEURLS']._serialized_start=3161 - _globals['_FLYTEURLS']._serialized_end=3242 + _globals['_EMAILNOTIFICATION']._serialized_end=2190 + _globals['_PAGERDUTYNOTIFICATION']._serialized_start=2192 + _globals['_PAGERDUTYNOTIFICATION']._serialized_end=2286 + _globals['_SLACKNOTIFICATION']._serialized_start=2288 + _globals['_SLACKNOTIFICATION']._serialized_end=2378 + _globals['_NOTIFICATION']._serialized_start=2381 + _globals['_NOTIFICATION']._serialized_end=2657 + _globals['_URLBLOB']._serialized_start=2659 + _globals['_URLBLOB']._serialized_end=2712 + _globals['_LABELS']._serialized_start=2714 + _globals['_LABELS']._serialized_end=2841 + _globals['_LABELS_VALUESENTRY']._serialized_start=2784 + _globals['_LABELS_VALUESENTRY']._serialized_end=2841 + _globals['_ANNOTATIONS']._serialized_start=2844 + _globals['_ANNOTATIONS']._serialized_end=2981 + _globals['_ANNOTATIONS_VALUESENTRY']._serialized_start=2784 + _globals['_ANNOTATIONS_VALUESENTRY']._serialized_end=2841 + _globals['_ENVS']._serialized_start=2983 + _globals['_ENVS']._serialized_end=3042 + _globals['_AUTHROLE']._serialized_start=3044 + _globals['_AUTHROLE']._serialized_end=3166 + _globals['_RAWOUTPUTDATACONFIG']._serialized_start=3168 + _globals['_RAWOUTPUTDATACONFIG']._serialized_end=3243 + _globals['_FLYTEURLS']._serialized_start=3245 + _globals['_FLYTEURLS']._serialized_end=3326 # @@protoc_insertion_point(module_scope) diff --git a/flyteidl/gen/pb_python/flyteidl/admin/common_pb2.pyi b/flyteidl/gen/pb_python/flyteidl/admin/common_pb2.pyi index 420818fb95..2aaec769ad 100644 --- a/flyteidl/gen/pb_python/flyteidl/admin/common_pb2.pyi +++ b/flyteidl/gen/pb_python/flyteidl/admin/common_pb2.pyi @@ -160,22 +160,28 @@ class ResourceListRequest(_message.Message): def __init__(self, id: _Optional[_Union[NamedEntityIdentifier, _Mapping]] = ..., limit: _Optional[int] = ..., token: _Optional[str] = ..., filters: _Optional[str] = ..., sort_by: _Optional[_Union[Sort, _Mapping]] = ...) -> None: ... class EmailNotification(_message.Message): - __slots__ = ["recipients_email"] + __slots__ = ["recipients_email", "template"] RECIPIENTS_EMAIL_FIELD_NUMBER: _ClassVar[int] + TEMPLATE_FIELD_NUMBER: _ClassVar[int] recipients_email: _containers.RepeatedScalarFieldContainer[str] - def __init__(self, recipients_email: _Optional[_Iterable[str]] = ...) -> None: ... + template: str + def __init__(self, recipients_email: _Optional[_Iterable[str]] = ..., template: _Optional[str] = ...) -> None: ... class PagerDutyNotification(_message.Message): - __slots__ = ["recipients_email"] + __slots__ = ["recipients_email", "template"] RECIPIENTS_EMAIL_FIELD_NUMBER: _ClassVar[int] + TEMPLATE_FIELD_NUMBER: _ClassVar[int] recipients_email: _containers.RepeatedScalarFieldContainer[str] - def __init__(self, recipients_email: _Optional[_Iterable[str]] = ...) -> None: ... + template: str + def __init__(self, recipients_email: _Optional[_Iterable[str]] = ..., template: _Optional[str] = ...) -> None: ... class SlackNotification(_message.Message): - __slots__ = ["recipients_email"] + __slots__ = ["recipients_email", "template"] RECIPIENTS_EMAIL_FIELD_NUMBER: _ClassVar[int] + TEMPLATE_FIELD_NUMBER: _ClassVar[int] recipients_email: _containers.RepeatedScalarFieldContainer[str] - def __init__(self, recipients_email: _Optional[_Iterable[str]] = ...) -> None: ... + template: str + def __init__(self, recipients_email: _Optional[_Iterable[str]] = ..., template: _Optional[str] = ...) -> None: ... class Notification(_message.Message): __slots__ = ["phases", "email", "pager_duty", "slack"] diff --git a/flyteidl/gen/pb_rust/flyteidl.admin.rs b/flyteidl/gen/pb_rust/flyteidl.admin.rs index dd099daa67..b63a104c1d 100644 --- a/flyteidl/gen/pb_rust/flyteidl.admin.rs +++ b/flyteidl/gen/pb_rust/flyteidl.admin.rs @@ -706,6 +706,10 @@ pub struct EmailNotification { /// +required #[prost(string, repeated, tag="1")] pub recipients_email: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + /// The template to use for this notification. + /// +optional + #[prost(string, tag="2")] + pub template: ::prost::alloc::string::String, } /// Defines a pager duty notification specification. #[allow(clippy::derive_partial_eq_without_eq)] @@ -715,6 +719,10 @@ pub struct PagerDutyNotification { /// +required #[prost(string, repeated, tag="1")] pub recipients_email: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + /// The template to use for this notification. + /// +optional + #[prost(string, tag="2")] + pub template: ::prost::alloc::string::String, } /// Defines a slack notification specification. #[allow(clippy::derive_partial_eq_without_eq)] @@ -724,6 +732,10 @@ pub struct SlackNotification { /// +required #[prost(string, repeated, tag="1")] pub recipients_email: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + /// The template to use for this notification. + /// +optional + #[prost(string, tag="2")] + pub template: ::prost::alloc::string::String, } /// Represents a structure for notifications based on execution status. /// The notification content is configured within flyte admin but can be templatized. From f48160e3e90c8ae8f6f072630ca4b394581c081e Mon Sep 17 00:00:00 2001 From: peterxcli Date: Thu, 28 Nov 2024 01:20:57 +0800 Subject: [PATCH 4/5] feat: add support for custom email templates in email notifications Signed-off-by: peterxcli --- .../pkg/async/notifications/email_test.go | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/flyteadmin/pkg/async/notifications/email_test.go b/flyteadmin/pkg/async/notifications/email_test.go index 0d045603e8..5be78f926a 100644 --- a/flyteadmin/pkg/async/notifications/email_test.go +++ b/flyteadmin/pkg/async/notifications/email_test.go @@ -160,3 +160,41 @@ func TestToEmailMessageFromWorkflowExecutionEvent(t *testing.T) { assert.True(t, emailMessage.GetSenderEmail() == expected.GetSenderEmail()) assert.True(t, len(emailMessage.GetRecipientsEmail()) == len(expected.GetRecipientsEmail())) } + +func TestToEmailMessageFromWorkflowExecutionEventWithTemplate(t *testing.T) { + notificationsConfig := runtimeInterfaces.NotificationsConfig{ + NotificationsEmailerConfig: runtimeInterfaces.NotificationsEmailerConfig{ + Body: "Execution \"{{ name }}\" has succeeded in \"{{ domain }}\". View details at " + + "" + + "https://example.com/executions/{{ project }}/{{ domain }}/{{ name }}.", + Sender: "no-reply@example.com", + Subject: "Notice: Execution \"{{ name }}\" has succeeded in \"{{ domain }}\".", + }, + } + emailNotification := &admin.EmailNotification{ + RecipientsEmail: []string{ + "a@example.com", "b@example.org", + }, + Template: "LP custom template: Execution \"{{ name }}\" has succeeded in \"{{ domain }}\". View details at " + + "" + + "https://example.com/executions/{{ project }}/{{ domain }}/{{ name }}.", + } + request := &admin.WorkflowExecutionEventRequest{ + Event: &event.WorkflowExecutionEvent{ + Phase: core.WorkflowExecution_ABORTED, + }, + } + emailMessage := ToEmailMessageFromWorkflowExecutionEvent(notificationsConfig, emailNotification, request, workflowExecution) + expected := &admin.EmailMessage{ + RecipientsEmail: []string{ + "a@example.com", "b@example.org", + }, + SenderEmail: "no-reply@example.com", + SubjectLine: `Notice: Execution "e124" has succeeded in "prod".`, + Body: `LP custom template: Execution "e124" has succeeded in "prod". View details at https://example.com/executions/proj/prod/e124.`, + } + assert.True(t, emailMessage.GetBody() == expected.GetBody()) + assert.True(t, emailMessage.GetSubjectLine() == expected.GetSubjectLine()) + assert.True(t, emailMessage.GetSenderEmail() == expected.GetSenderEmail()) + assert.True(t, len(emailMessage.GetRecipientsEmail()) == len(expected.GetRecipientsEmail())) +} From fde5626c7fd7aa59c90a3cd31c3f30ef6211daec Mon Sep 17 00:00:00 2001 From: peterxcli Date: Sun, 1 Dec 2024 02:10:59 +0800 Subject: [PATCH 5/5] avoid direct access to proto value emailNotification.template -> emailNotification.GetTemplate Signed-off-by: peterxcli --- flyteadmin/pkg/async/notifications/email.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/flyteadmin/pkg/async/notifications/email.go b/flyteadmin/pkg/async/notifications/email.go index b60c898934..a6b3c8ea82 100644 --- a/flyteadmin/pkg/async/notifications/email.go +++ b/flyteadmin/pkg/async/notifications/email.go @@ -117,8 +117,8 @@ func ToEmailMessageFromWorkflowExecutionEvent( execution *admin.Execution) *admin.EmailMessage { var emailBody string - if emailNotification.Template != "" { - emailBody = emailNotification.Template + if emailNotification.GetTemplate() != "" { + emailBody = emailNotification.GetTemplate() } else { emailBody = config.NotificationsEmailerConfig.Body }