fix: issues with cron workflow labels not being set/saved.

This commit is contained in:
Andrey Melnikov
2020-04-29 14:01:37 -07:00
parent 92bde140b9
commit b0571f69c9
6 changed files with 171 additions and 59 deletions

View File

@@ -1706,6 +1706,12 @@
}, },
"workflowExecution": { "workflowExecution": {
"$ref": "#/definitions/WorkflowExecution" "$ref": "#/definitions/WorkflowExecution"
},
"labels": {
"type": "array",
"items": {
"$ref": "#/definitions/KeyValue"
}
} }
} }
}, },

View File

@@ -366,6 +366,7 @@ type CronWorkflow struct {
SuccessfulJobsHistoryLimit int32 `protobuf:"varint,7,opt,name=successfulJobsHistoryLimit,proto3" json:"successfulJobsHistoryLimit,omitempty"` SuccessfulJobsHistoryLimit int32 `protobuf:"varint,7,opt,name=successfulJobsHistoryLimit,proto3" json:"successfulJobsHistoryLimit,omitempty"`
FailedJobsHistoryLimit int32 `protobuf:"varint,8,opt,name=failedJobsHistoryLimit,proto3" json:"failedJobsHistoryLimit,omitempty"` FailedJobsHistoryLimit int32 `protobuf:"varint,8,opt,name=failedJobsHistoryLimit,proto3" json:"failedJobsHistoryLimit,omitempty"`
WorkflowExecution *WorkflowExecution `protobuf:"bytes,9,opt,name=workflowExecution,proto3" json:"workflowExecution,omitempty"` WorkflowExecution *WorkflowExecution `protobuf:"bytes,9,opt,name=workflowExecution,proto3" json:"workflowExecution,omitempty"`
Labels []*KeyValue `protobuf:"bytes,10,rep,name=labels,proto3" json:"labels,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
@@ -459,6 +460,13 @@ func (m *CronWorkflow) GetWorkflowExecution() *WorkflowExecution {
return nil return nil
} }
func (m *CronWorkflow) GetLabels() []*KeyValue {
if m != nil {
return m.Labels
}
return nil
}
func init() { func init() {
proto.RegisterType((*TerminateCronWorkflowRequest)(nil), "api.TerminateCronWorkflowRequest") proto.RegisterType((*TerminateCronWorkflowRequest)(nil), "api.TerminateCronWorkflowRequest")
proto.RegisterType((*GetCronWorkflowRequest)(nil), "api.GetCronWorkflowRequest") proto.RegisterType((*GetCronWorkflowRequest)(nil), "api.GetCronWorkflowRequest")
@@ -472,53 +480,55 @@ func init() {
func init() { proto.RegisterFile("cron_workflow.proto", fileDescriptor_989cccaad551a50c) } func init() { proto.RegisterFile("cron_workflow.proto", fileDescriptor_989cccaad551a50c) }
var fileDescriptor_989cccaad551a50c = []byte{ var fileDescriptor_989cccaad551a50c = []byte{
// 735 bytes of a gzipped FileDescriptorProto // 759 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x95, 0x41, 0x4f, 0xdb, 0x48, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x95, 0xdf, 0x4e, 0x1b, 0x47,
0x14, 0xc7, 0x65, 0x42, 0x20, 0x79, 0xb0, 0xbb, 0xca, 0xb0, 0x04, 0x63, 0x22, 0xc4, 0xfa, 0xb2, 0x14, 0xc6, 0xb5, 0x18, 0x1b, 0xfb, 0x00, 0xad, 0x3c, 0x14, 0xb3, 0x2c, 0x16, 0xa2, 0x2b, 0x55,
0x68, 0xb5, 0x8a, 0x17, 0x56, 0x0b, 0xbb, 0x5b, 0x15, 0xb5, 0x05, 0xd4, 0x0a, 0x71, 0x40, 0x06, 0x45, 0x55, 0xe5, 0x2d, 0x54, 0x85, 0xfe, 0x51, 0x51, 0x5b, 0x40, 0xad, 0x28, 0x17, 0x68, 0x81,
0x84, 0xd4, 0x0b, 0x9a, 0xd8, 0x2f, 0xe9, 0xa8, 0xce, 0x8c, 0xeb, 0x19, 0x43, 0x03, 0xe2, 0x52, 0x22, 0xf5, 0x06, 0x8d, 0x77, 0x8f, 0xdd, 0x51, 0xd7, 0x33, 0x9b, 0x9d, 0x59, 0x88, 0x41, 0xdc,
0x55, 0xbd, 0x54, 0x3d, 0x55, 0xbd, 0xb4, 0x5f, 0xa3, 0xdf, 0xa1, 0x1f, 0xa0, 0x5f, 0xa1, 0x1f, 0x44, 0x51, 0x6e, 0xa2, 0x5c, 0x45, 0xb9, 0xca, 0x6b, 0xe4, 0x05, 0x72, 0x95, 0x07, 0xc8, 0x2b,
0xa4, 0xf2, 0xc4, 0x09, 0x49, 0x9c, 0xa0, 0x14, 0x71, 0xb2, 0x9f, 0xff, 0x6f, 0xe6, 0xfd, 0x3c, 0xe4, 0x41, 0xa2, 0x1d, 0xaf, 0x8d, 0xed, 0xb5, 0x91, 0x83, 0xb8, 0xf2, 0x9e, 0xf9, 0xce, 0xcc,
0x6f, 0xe6, 0x3f, 0x30, 0xe7, 0x45, 0x82, 0x9f, 0x9e, 0x8b, 0xe8, 0x79, 0x3d, 0x10, 0xe7, 0xd5, 0xf9, 0xcd, 0x9c, 0xf1, 0x37, 0xb0, 0xe0, 0x45, 0x82, 0x9f, 0x5f, 0x8a, 0xe8, 0xff, 0x46, 0x20,
0x30, 0x12, 0x4a, 0x90, 0x1c, 0x0d, 0x99, 0x55, 0x69, 0x08, 0xd1, 0x08, 0xd0, 0xa1, 0x21, 0x73, 0x2e, 0x6b, 0x61, 0x24, 0x94, 0x20, 0x39, 0x1a, 0x32, 0xab, 0xda, 0x14, 0xa2, 0x19, 0xa0, 0x43,
0x28, 0xe7, 0x42, 0x51, 0xc5, 0x04, 0x97, 0xed, 0x14, 0x6b, 0x29, 0x55, 0x75, 0x54, 0x8b, 0xeb, 0x43, 0xe6, 0x50, 0xce, 0x85, 0xa2, 0x8a, 0x09, 0x2e, 0x3b, 0x29, 0xd6, 0x4a, 0xaa, 0xea, 0xa8,
0x0e, 0x36, 0x43, 0xd5, 0x4a, 0xc5, 0x9f, 0xfb, 0xe7, 0xb3, 0x66, 0x02, 0x5a, 0xc3, 0xa0, 0x1d, 0x1e, 0x37, 0x1c, 0x6c, 0x85, 0xaa, 0x9d, 0x8a, 0x9f, 0x0d, 0xae, 0x67, 0xcd, 0x06, 0xb4, 0x8e,
0xd8, 0x07, 0x50, 0x39, 0xc2, 0xa8, 0xc9, 0x38, 0x55, 0xb8, 0x1d, 0x09, 0x7e, 0x92, 0xe6, 0xba, 0x41, 0x27, 0xb0, 0x8f, 0xa0, 0x7a, 0x82, 0x51, 0x8b, 0x71, 0xaa, 0x70, 0x37, 0x12, 0xfc, 0x2c,
0xf8, 0x22, 0x46, 0xa9, 0x48, 0x05, 0x8a, 0x9c, 0x36, 0x51, 0x86, 0xd4, 0x43, 0xd3, 0x58, 0x31, 0xcd, 0x75, 0xf1, 0x51, 0x8c, 0x52, 0x91, 0x2a, 0x94, 0x38, 0x6d, 0xa1, 0x0c, 0xa9, 0x87, 0xa6,
0x56, 0x8b, 0xee, 0xf5, 0x07, 0x42, 0x60, 0x32, 0x09, 0xcc, 0x09, 0x2d, 0xe8, 0x77, 0x7b, 0x0f, 0xb1, 0x66, 0xac, 0x97, 0xdc, 0xdb, 0x01, 0x42, 0x60, 0x3a, 0x09, 0xcc, 0x29, 0x2d, 0xe8, 0x6f,
0xca, 0x8f, 0x51, 0xdd, 0xcd, 0x5c, 0x21, 0x2c, 0x6e, 0x47, 0x78, 0x2b, 0xb4, 0x7f, 0x60, 0xd6, 0xfb, 0x00, 0x2a, 0x7f, 0xa2, 0x7a, 0x98, 0xb5, 0x42, 0x58, 0xde, 0x8d, 0xf0, 0x5e, 0x68, 0x3f,
0xeb, 0x19, 0xa4, 0xa7, 0x9d, 0x59, 0x2f, 0x55, 0x69, 0xc8, 0xaa, 0x7d, 0xb3, 0xf5, 0xa5, 0xd9, 0xc0, 0x9c, 0xd7, 0x37, 0x49, 0x2f, 0x3b, 0xbb, 0x59, 0xae, 0xd1, 0x90, 0xd5, 0x06, 0x56, 0x1b,
0xaf, 0x0d, 0x58, 0x3c, 0x0e, 0xfd, 0xbb, 0x5a, 0x8d, 0x0c, 0x46, 0x6e, 0x3c, 0x8c, 0x4f, 0x06, 0x48, 0xb3, 0x9f, 0x1a, 0xb0, 0x7c, 0x1a, 0xfa, 0x0f, 0x75, 0x1a, 0x19, 0x8c, 0xdc, 0x64, 0x18,
0x2c, 0xec, 0x33, 0x79, 0x8b, 0x65, 0x5c, 0x87, 0xf9, 0x4e, 0xbf, 0x4f, 0x15, 0x36, 0xc3, 0x80, 0xaf, 0x0d, 0x58, 0x3a, 0x64, 0xf2, 0x1e, 0xc7, 0xb8, 0x09, 0x8b, 0xdd, 0x7e, 0x9f, 0x2b, 0x6c,
0x2a, 0x3c, 0x8d, 0x99, 0x9f, 0x52, 0xcd, 0x75, 0xc4, 0xa3, 0x54, 0x3b, 0x66, 0x3e, 0xb1, 0xa0, 0x85, 0x01, 0x55, 0x78, 0x1e, 0x33, 0x3f, 0xa5, 0x5a, 0xe8, 0x8a, 0x27, 0xa9, 0x76, 0xca, 0x7c,
0x10, 0xd2, 0x06, 0x1e, 0xb2, 0x0b, 0xd4, 0x80, 0x79, 0xb7, 0x1b, 0x27, 0x3f, 0x95, 0xbc, 0x9b, 0x62, 0x41, 0x31, 0xa4, 0x4d, 0x3c, 0x66, 0x57, 0xa8, 0x01, 0xf3, 0x6e, 0x2f, 0x4e, 0x36, 0x95,
0x93, 0xfa, 0xbb, 0x7e, 0xb7, 0x3f, 0x1b, 0xb0, 0x38, 0x48, 0x27, 0x5d, 0x94, 0xa1, 0xe0, 0x12, 0x7c, 0x9b, 0xd3, 0x7a, 0x5c, 0x7f, 0xdb, 0x6f, 0x0c, 0x58, 0x1e, 0xa6, 0x93, 0x2e, 0xca, 0x50,
0xc9, 0xaf, 0x90, 0xf7, 0x44, 0xcc, 0x95, 0x66, 0xcb, 0xbb, 0xed, 0x80, 0x6c, 0xc2, 0x4f, 0xbd, 0x70, 0x89, 0xe4, 0x0b, 0xc8, 0x7b, 0x22, 0xe6, 0x4a, 0xb3, 0xe5, 0xdd, 0x4e, 0x40, 0xb6, 0x61,
0x7f, 0x28, 0xcd, 0x89, 0x95, 0xdc, 0xf0, 0x95, 0xe8, 0xcf, 0xeb, 0x02, 0xe4, 0xae, 0x01, 0x92, 0xbe, 0x7f, 0x87, 0xd2, 0x9c, 0x5a, 0xcb, 0x8d, 0x3e, 0x89, 0xc1, 0xbc, 0x1e, 0x40, 0xee, 0x16,
0x12, 0xc9, 0x53, 0xa6, 0x54, 0xed, 0x80, 0x2c, 0x03, 0x28, 0xa1, 0x68, 0xb0, 0xad, 0xab, 0xe7, 0x20, 0x29, 0x91, 0xfc, 0xca, 0x94, 0xaa, 0x13, 0x90, 0x55, 0x00, 0x25, 0x14, 0x0d, 0x76, 0x75,
0xb5, 0xd4, 0xf3, 0xc5, 0xfe, 0x98, 0x83, 0xd9, 0xde, 0x4a, 0xdd, 0x86, 0x19, 0x3d, 0x0d, 0xb3, 0xf5, 0xbc, 0x96, 0xfa, 0x46, 0xec, 0xb7, 0x39, 0x98, 0xeb, 0xaf, 0xd4, 0x6b, 0x98, 0xd1, 0xd7,
0xa0, 0x20, 0xbd, 0x67, 0xe8, 0xc7, 0x41, 0xa7, 0x91, 0xdd, 0x38, 0xd1, 0x14, 0x6b, 0xe2, 0x85, 0x30, 0x0b, 0x8a, 0xd2, 0xfb, 0x0f, 0xfd, 0x38, 0xe8, 0x36, 0xb2, 0x17, 0x27, 0x9a, 0x62, 0x2d,
0xe0, 0x6d, 0x9c, 0xa2, 0xdb, 0x8d, 0x89, 0x09, 0xd3, 0x32, 0x96, 0x21, 0x72, 0x5f, 0x43, 0x15, 0xbc, 0x12, 0xbc, 0x83, 0x53, 0x72, 0x7b, 0x31, 0x31, 0x61, 0x46, 0xc6, 0x32, 0x44, 0xee, 0x6b,
0xdc, 0x4e, 0x48, 0xfe, 0x84, 0x92, 0x27, 0xb8, 0x17, 0x47, 0x11, 0x72, 0xaf, 0x75, 0x20, 0x02, 0xa8, 0xa2, 0xdb, 0x0d, 0xc9, 0xb7, 0x50, 0xf6, 0x04, 0xf7, 0xe2, 0x28, 0x42, 0xee, 0xb5, 0x8f,
0xe6, 0xb5, 0x34, 0x5d, 0xd1, 0xcd, 0x0a, 0xe4, 0x5f, 0x58, 0x90, 0x8a, 0x46, 0x8a, 0xf1, 0xc6, 0x44, 0xc0, 0xbc, 0xb6, 0xa6, 0x2b, 0xb9, 0x59, 0x81, 0xfc, 0x08, 0x4b, 0x52, 0xd1, 0x48, 0x31,
0x0e, 0x52, 0x3f, 0x60, 0x1c, 0x0f, 0xd1, 0x13, 0xdc, 0x97, 0xe6, 0xd4, 0x8a, 0xb1, 0x9a, 0x73, 0xde, 0xdc, 0x43, 0xea, 0x07, 0x8c, 0xe3, 0x31, 0x7a, 0x82, 0xfb, 0xd2, 0x2c, 0xac, 0x19, 0xeb,
0x47, 0xc9, 0x64, 0x0b, 0x2c, 0x19, 0x7b, 0x1e, 0x4a, 0x59, 0x8f, 0x83, 0x3d, 0x51, 0x93, 0x4f, 0x39, 0x77, 0x9c, 0x4c, 0x76, 0xc0, 0x92, 0xb1, 0xe7, 0xa1, 0x94, 0x8d, 0x38, 0x38, 0x10, 0x75,
0x98, 0x54, 0x22, 0x6a, 0xed, 0xb3, 0x26, 0x53, 0xe6, 0xb4, 0x5e, 0x8e, 0x1b, 0x32, 0xc8, 0x06, 0xf9, 0x17, 0x93, 0x4a, 0x44, 0xed, 0x43, 0xd6, 0x62, 0xca, 0x9c, 0xd1, 0xc7, 0x71, 0x47, 0x06,
0x94, 0xeb, 0x94, 0x05, 0xe8, 0x67, 0xc6, 0x16, 0xf4, 0xd8, 0x11, 0x2a, 0xd9, 0x81, 0x52, 0x67, 0xd9, 0x82, 0x4a, 0x83, 0xb2, 0x00, 0xfd, 0xcc, 0xdc, 0xa2, 0x9e, 0x3b, 0x46, 0x25, 0x7b, 0x50,
0x53, 0xed, 0xbe, 0x44, 0x2f, 0x4e, 0x8c, 0xc9, 0x2c, 0xea, 0x7d, 0x5e, 0xd6, 0xdd, 0x3d, 0x19, 0xee, 0x5e, 0xaa, 0xfd, 0xc7, 0xe8, 0xc5, 0x89, 0x31, 0x99, 0x25, 0x7d, 0xcf, 0x2b, 0xba, 0xbb,
0x54, 0xdd, 0xec, 0x80, 0xf5, 0xb7, 0x53, 0x30, 0xd7, 0xdb, 0x9c, 0x43, 0x8c, 0xce, 0x98, 0x87, 0x67, 0xc3, 0xaa, 0x9b, 0x9d, 0x40, 0xbe, 0x82, 0x82, 0xf6, 0x25, 0x69, 0x82, 0xbe, 0x18, 0xf3,
0xe4, 0x8d, 0x01, 0x24, 0xeb, 0x01, 0x64, 0x39, 0xdd, 0x37, 0x23, 0xcc, 0xc1, 0xca, 0xee, 0x2b, 0x7a, 0xea, 0xdf, 0xd8, 0xfe, 0x87, 0x06, 0x31, 0xba, 0xa9, 0xb8, 0xf9, 0xbc, 0x00, 0x0b, 0xfd,
0xfb, 0xfe, 0xab, 0xaf, 0xdf, 0xde, 0x4f, 0x6c, 0xda, 0xbf, 0x27, 0x26, 0x2a, 0x9d, 0xb3, 0xb5, 0x3d, 0x3c, 0xc6, 0xe8, 0x82, 0x79, 0x48, 0x9e, 0x19, 0x40, 0xb2, 0x56, 0x41, 0x56, 0xd3, 0xeb,
0x1a, 0x2a, 0xba, 0xe6, 0x5c, 0x76, 0xcf, 0xce, 0x95, 0xd3, 0x67, 0xbf, 0xff, 0xf7, 0x1d, 0x49, 0x35, 0xc6, 0x43, 0xac, 0xec, 0xf5, 0xb3, 0x7f, 0x7d, 0xf2, 0xfe, 0xc3, 0xcb, 0xa9, 0x6d, 0xfb,
0xf2, 0xce, 0x00, 0x92, 0x75, 0x86, 0x14, 0x64, 0xa4, 0x65, 0x0c, 0x03, 0xd9, 0xd1, 0x20, 0x5b, 0xeb, 0xc4, 0x6b, 0xa5, 0x73, 0xb1, 0x51, 0x47, 0x45, 0x37, 0x9c, 0xeb, 0xde, 0x5f, 0xec, 0xc6,
0x76, 0x75, 0x4c, 0x90, 0xb6, 0x72, 0x35, 0xc0, 0xd3, 0x82, 0x5f, 0x06, 0x7c, 0x96, 0x2c, 0xe9, 0x19, 0x70, 0xe9, 0x9f, 0x07, 0xfe, 0xb9, 0xe4, 0x85, 0x01, 0x24, 0x6b, 0x20, 0x29, 0xc8, 0x58,
0x5a, 0xc3, 0xdd, 0x77, 0x18, 0xc8, 0x86, 0x06, 0xf9, 0x8b, 0xfc, 0x20, 0x08, 0xf9, 0x62, 0x40, 0x67, 0x19, 0x05, 0xb2, 0xa7, 0x41, 0x76, 0xec, 0xda, 0x84, 0x20, 0x1d, 0xe5, 0x66, 0x88, 0xa7,
0x29, 0x73, 0xfe, 0x49, 0x45, 0x17, 0x18, 0xe1, 0x5a, 0xd6, 0xf2, 0x50, 0xb5, 0xeb, 0x1a, 0xb6, 0x0d, 0x9f, 0x0f, 0xd9, 0x31, 0x59, 0xd1, 0xb5, 0x46, 0x9b, 0xf4, 0x28, 0x90, 0x2d, 0x0d, 0xf2,
0xd2, 0x2c, 0x9c, 0xac, 0x8e, 0xc9, 0x22, 0x9f, 0x3e, 0x22, 0x0f, 0xc6, 0xcd, 0x75, 0x2e, 0x87, 0x1d, 0xf9, 0x44, 0x10, 0xf2, 0xce, 0x80, 0x72, 0xc6, 0x26, 0x48, 0x55, 0x17, 0x18, 0x63, 0x6e,
0x7a, 0xe2, 0x15, 0xf9, 0x60, 0xc0, 0xfc, 0xd0, 0xfb, 0x8f, 0xfc, 0xa6, 0x79, 0x6f, 0xba, 0x1b, 0xd6, 0xea, 0x48, 0xb5, 0x67, 0x2e, 0xb6, 0xd2, 0x2c, 0x9c, 0xac, 0x4f, 0xc8, 0x22, 0xff, 0xfd,
0xad, 0x72, 0xb5, 0x7d, 0xed, 0x56, 0x3b, 0xd7, 0x6e, 0x75, 0x37, 0xb9, 0x76, 0xed, 0x87, 0xfa, 0x83, 0xfc, 0x36, 0x69, 0xae, 0x73, 0x3d, 0xd2, 0x3a, 0x6f, 0xc8, 0x2b, 0x03, 0x16, 0x47, 0x3e,
0x57, 0xee, 0xfd, 0xf1, 0xdf, 0xf8, 0x78, 0x7a, 0x5d, 0x1d, 0xd5, 0xa9, 0x56, 0x9b, 0xd2, 0x53, 0x93, 0xe4, 0x4b, 0xcd, 0x7b, 0xd7, 0x13, 0x6a, 0x55, 0x6a, 0x9d, 0xd7, 0xb9, 0xd6, 0x7d, 0x9d,
0xfe, 0xfd, 0x3d, 0x00, 0x00, 0xff, 0xff, 0x38, 0x39, 0x79, 0x74, 0x11, 0x08, 0x00, 0x00, 0x6b, 0xfb, 0xc9, 0xeb, 0x6c, 0xff, 0xae, 0xb7, 0xf2, 0xcb, 0x37, 0x3f, 0x4d, 0x8e, 0xa7, 0xcf,
0xd5, 0x51, 0xdd, 0x6a, 0xf5, 0x82, 0x5e, 0xf2, 0xfb, 0x8f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x84,
0xa9, 0x70, 0xbc, 0x38, 0x08, 0x00, 0x00,
} }
// Reference imports to suppress errors if they are not otherwise used. // Reference imports to suppress errors if they are not otherwise used.

View File

@@ -92,4 +92,6 @@ message CronWorkflow {
int32 failedJobsHistoryLimit = 8; int32 failedJobsHistoryLimit = 8;
WorkflowExecution workflowExecution = 9; WorkflowExecution workflowExecution = 9;
repeated KeyValue labels = 10;
} }

View File

@@ -17,6 +17,15 @@ import (
) )
func (c *Client) UpdateCronWorkflow(namespace string, name string, cronWorkflow *CronWorkflow) (*CronWorkflow, error) { func (c *Client) UpdateCronWorkflow(namespace string, name string, cronWorkflow *CronWorkflow) (*CronWorkflow, error) {
err := c.cronWorkflowSelectBuilderNoColumns(namespace, cronWorkflow.WorkflowExecution.WorkflowTemplate.UID).
Columns("cw.id").
RunWith(c.DB).
QueryRow().
Scan(&cronWorkflow.ID)
if err != nil {
return nil, err
}
workflow := cronWorkflow.WorkflowExecution workflow := cronWorkflow.WorkflowExecution
workflowTemplate, err := c.GetWorkflowTemplate(namespace, workflow.WorkflowTemplate.UID, workflow.WorkflowTemplate.Version) workflowTemplate, err := c.GetWorkflowTemplate(namespace, workflow.WorkflowTemplate.UID, workflow.WorkflowTemplate.Version)
if err != nil { if err != nil {
@@ -91,6 +100,13 @@ func (c *Client) UpdateCronWorkflow(namespace string, name string, cronWorkflow
if err != nil { if err != nil {
return nil, err return nil, err
} }
tx, err := c.DB.Begin()
if err != nil {
return nil, err
}
defer tx.Rollback()
_, err = sb.Update("cron_workflows"). _, err = sb.Update("cron_workflows").
SetMap(sq.Eq{ SetMap(sq.Eq{
"schedule": cronWorkflow.Schedule, "schedule": cronWorkflow.Schedule,
@@ -101,15 +117,39 @@ func (c *Client) UpdateCronWorkflow(namespace string, name string, cronWorkflow
"successful_jobs_history_limit": cronWorkflow.SuccessfulJobsHistoryLimit, "successful_jobs_history_limit": cronWorkflow.SuccessfulJobsHistoryLimit,
"failed_jobs_history_limit": cronWorkflow.FailedJobsHistoryLimit, "failed_jobs_history_limit": cronWorkflow.FailedJobsHistoryLimit,
"workflow_spec": workflowSpec, "workflow_spec": workflowSpec,
}). }).Where(sq.Eq{
Suffix("RETURNING id"). "id": cronWorkflow.ID,
RunWith(c.DB.DB). }).
RunWith(tx).
Exec() Exec()
if err != nil { if err != nil {
return nil, err return nil, err
} }
// delete all labels then replace
_, err = sb.Delete("labels").
Where(sq.Eq{
"resource": TypeCronWorkflow,
"resource_id": cronWorkflow.ID,
}).RunWith(tx).
Exec()
if err != nil {
return nil, err
}
if len(cronWorkflow.Labels) > 0 {
_, err = c.InsertLabelsBuilder(TypeCronWorkflow, cronWorkflow.ID, cronWorkflow.Labels).
RunWith(tx).
Exec()
if err != nil {
return nil, err
}
}
if err := tx.Commit(); err != nil {
return nil, err
}
return cronWorkflow, nil return cronWorkflow, nil
} }
return nil, nil return nil, nil
@@ -191,7 +231,14 @@ func (c *Client) CreateCronWorkflow(namespace string, cronWorkflow *CronWorkflow
if err != nil { if err != nil {
return nil, err return nil, err
} }
_, err = sb.Insert("cron_workflows").
tx, err := c.DB.Begin()
if err != nil {
return nil, err
}
defer tx.Rollback()
err = sb.Insert("cron_workflows").
SetMap(sq.Eq{ SetMap(sq.Eq{
"uid": cronWorkflow.UID, "uid": cronWorkflow.UID,
"name": cronWorkflow.Name, "name": cronWorkflow.Name,
@@ -206,13 +253,27 @@ func (c *Client) CreateCronWorkflow(namespace string, cronWorkflow *CronWorkflow
"workflow_spec": workflowSpec, "workflow_spec": workflowSpec,
}). }).
Suffix("RETURNING id"). Suffix("RETURNING id").
RunWith(c.DB.DB). RunWith(tx).
Exec() QueryRow().
Scan(&cronWorkflow.ID)
if err != nil { if err != nil {
return nil, err return nil, err
} }
if len(cronWorkflow.Labels) > 0 {
_, err = c.InsertLabelsBuilder(TypeCronWorkflow, cronWorkflow.ID, cronWorkflow.Labels).
RunWith(tx).
Exec()
if err != nil {
return nil, err
}
}
if err := tx.Commit(); err != nil {
return nil, err
}
return cronWorkflow, nil return cronWorkflow, nil
} }
return nil, nil return nil, nil
@@ -327,6 +388,7 @@ func (c *Client) ListCronWorkflows(namespace, workflowTemplateUID string, pagina
return nil, err return nil, err
} }
// @todo remove this once we get the manifest in the db.
for _, cwf := range cronWorkflows { for _, cwf := range cronWorkflows {
parameters, err := cwf.GetParametersFromWorkflowSpec() parameters, err := cwf.GetParametersFromWorkflowSpec()
if err != nil { if err != nil {
@@ -338,6 +400,19 @@ func (c *Client) ListCronWorkflows(namespace, workflowTemplateUID string, pagina
} }
} }
labelsMap, err := c.GetDbLabelsMapped(TypeCronWorkflow, CronWorkflowsToIds(cronWorkflows)...)
if err != nil {
log.WithFields(log.Fields{
"Namespace": namespace,
"Error": err.Error(),
}).Error("Unable to get Workflow Template Labels")
return nil, err
}
for _, resource := range cronWorkflows {
resource.Labels = labelsMap[resource.ID]
}
return return
} }

View File

@@ -78,7 +78,7 @@ type CronWorkflow struct {
FailedJobsHistoryLimit *int32 `db:"failed_jobs_history_limit"` FailedJobsHistoryLimit *int32 `db:"failed_jobs_history_limit"`
WorkflowExecution *WorkflowExecution WorkflowExecution *WorkflowExecution
WorkflowSpec string `db:"workflow_spec"` WorkflowSpec string `db:"workflow_spec"`
Labels []*Label Labels map[string]string
Version int64 Version int64
WorkflowTemplateVersionId uint64 `db:"workflow_template_version_id"` WorkflowTemplateVersionId uint64 `db:"workflow_template_version_id"`
} }
@@ -539,6 +539,21 @@ func WorkflowTemplateVersionsToIds(resources []*WorkflowTemplateVersion) (ids []
return return
} }
func CronWorkflowsToIds(resources []*CronWorkflow) (ids []uint64) {
mappedIds := make(map[uint64]bool)
// This is to make sure we don't have duplicates
for _, resource := range resources {
mappedIds[resource.ID] = true
}
for id := range mappedIds {
ids = append(ids, id)
}
return
}
type WorkspaceTemplate struct { type WorkspaceTemplate struct {
ID uint64 ID uint64
UID string UID string

View File

@@ -18,12 +18,17 @@ func NewCronWorkflowServer() *CronWorkflowServer {
} }
func apiCronWorkflow(cwf *v1.CronWorkflow) (cronWorkflow *api.CronWorkflow) { func apiCronWorkflow(cwf *v1.CronWorkflow) (cronWorkflow *api.CronWorkflow) {
if cwf == nil {
return nil
}
cronWorkflow = &api.CronWorkflow{ cronWorkflow = &api.CronWorkflow{
Name: cwf.Name, Name: cwf.Name,
Schedule: cwf.Schedule, Schedule: cwf.Schedule,
Timezone: cwf.Timezone, Timezone: cwf.Timezone,
Suspend: cwf.Suspend, Suspend: cwf.Suspend,
ConcurrencyPolicy: cwf.ConcurrencyPolicy, ConcurrencyPolicy: cwf.ConcurrencyPolicy,
Labels: converter.MappingToKeyValue(cwf.Labels),
} }
if cwf.StartingDeadlineSeconds != nil { if cwf.StartingDeadlineSeconds != nil {
@@ -60,7 +65,6 @@ func (c *CronWorkflowServer) CreateCronWorkflow(ctx context.Context, req *api.Cr
} }
workflow := &v1.WorkflowExecution{ workflow := &v1.WorkflowExecution{
Labels: converter.APIKeyValueToLabel(req.CronWorkflow.WorkflowExecution.Labels),
WorkflowTemplate: &v1.WorkflowTemplate{ WorkflowTemplate: &v1.WorkflowTemplate{
UID: req.CronWorkflow.WorkflowExecution.WorkflowTemplate.Uid, UID: req.CronWorkflow.WorkflowExecution.WorkflowTemplate.Uid,
Version: req.CronWorkflow.WorkflowExecution.WorkflowTemplate.Version, Version: req.CronWorkflow.WorkflowExecution.WorkflowTemplate.Version,
@@ -82,15 +86,14 @@ func (c *CronWorkflowServer) CreateCronWorkflow(ctx context.Context, req *api.Cr
SuccessfulJobsHistoryLimit: &req.CronWorkflow.SuccessfulJobsHistoryLimit, SuccessfulJobsHistoryLimit: &req.CronWorkflow.SuccessfulJobsHistoryLimit,
FailedJobsHistoryLimit: &req.CronWorkflow.FailedJobsHistoryLimit, FailedJobsHistoryLimit: &req.CronWorkflow.FailedJobsHistoryLimit,
WorkflowExecution: workflow, WorkflowExecution: workflow,
Labels: converter.APIKeyValueToLabel(req.CronWorkflow.Labels),
} }
cwf, err := client.CreateCronWorkflow(req.Namespace, &cronWorkflow) cwf, err := client.CreateCronWorkflow(req.Namespace, &cronWorkflow)
if err != nil { if err != nil {
return nil, err return nil, err
} }
if cwf == nil {
return nil, nil
}
return apiCronWorkflow(cwf), nil return apiCronWorkflow(cwf), nil
} }
@@ -122,6 +125,7 @@ func (c *CronWorkflowServer) UpdateCronWorkflow(ctx context.Context, req *api.Up
SuccessfulJobsHistoryLimit: &req.CronWorkflow.SuccessfulJobsHistoryLimit, SuccessfulJobsHistoryLimit: &req.CronWorkflow.SuccessfulJobsHistoryLimit,
FailedJobsHistoryLimit: &req.CronWorkflow.FailedJobsHistoryLimit, FailedJobsHistoryLimit: &req.CronWorkflow.FailedJobsHistoryLimit,
WorkflowExecution: workflow, WorkflowExecution: workflow,
Labels: converter.APIKeyValueToLabel(req.CronWorkflow.Labels),
} }
cwf, err := client.UpdateCronWorkflow(req.Namespace, req.Name, &cronWorkflow) cwf, err := client.UpdateCronWorkflow(req.Namespace, req.Name, &cronWorkflow)