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

View File

@@ -92,4 +92,6 @@ message CronWorkflow {
int32 failedJobsHistoryLimit = 8;
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) {
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
workflowTemplate, err := c.GetWorkflowTemplate(namespace, workflow.WorkflowTemplate.UID, workflow.WorkflowTemplate.Version)
if err != nil {
@@ -91,6 +100,13 @@ func (c *Client) UpdateCronWorkflow(namespace string, name string, cronWorkflow
if err != nil {
return nil, err
}
tx, err := c.DB.Begin()
if err != nil {
return nil, err
}
defer tx.Rollback()
_, err = sb.Update("cron_workflows").
SetMap(sq.Eq{
"schedule": cronWorkflow.Schedule,
@@ -101,15 +117,39 @@ func (c *Client) UpdateCronWorkflow(namespace string, name string, cronWorkflow
"successful_jobs_history_limit": cronWorkflow.SuccessfulJobsHistoryLimit,
"failed_jobs_history_limit": cronWorkflow.FailedJobsHistoryLimit,
"workflow_spec": workflowSpec,
}).Where(sq.Eq{
"id": cronWorkflow.ID,
}).
Suffix("RETURNING id").
RunWith(c.DB.DB).
RunWith(tx).
Exec()
if err != nil {
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 nil, nil
@@ -191,7 +231,14 @@ func (c *Client) CreateCronWorkflow(namespace string, cronWorkflow *CronWorkflow
if err != nil {
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{
"uid": cronWorkflow.UID,
"name": cronWorkflow.Name,
@@ -206,13 +253,27 @@ func (c *Client) CreateCronWorkflow(namespace string, cronWorkflow *CronWorkflow
"workflow_spec": workflowSpec,
}).
Suffix("RETURNING id").
RunWith(c.DB.DB).
Exec()
RunWith(tx).
QueryRow().
Scan(&cronWorkflow.ID)
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 nil, nil
@@ -327,6 +388,7 @@ func (c *Client) ListCronWorkflows(namespace, workflowTemplateUID string, pagina
return nil, err
}
// @todo remove this once we get the manifest in the db.
for _, cwf := range cronWorkflows {
parameters, err := cwf.GetParametersFromWorkflowSpec()
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
}

View File

@@ -78,7 +78,7 @@ type CronWorkflow struct {
FailedJobsHistoryLimit *int32 `db:"failed_jobs_history_limit"`
WorkflowExecution *WorkflowExecution
WorkflowSpec string `db:"workflow_spec"`
Labels []*Label
Labels map[string]string
Version int64
WorkflowTemplateVersionId uint64 `db:"workflow_template_version_id"`
}
@@ -539,6 +539,21 @@ func WorkflowTemplateVersionsToIds(resources []*WorkflowTemplateVersion) (ids []
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 {
ID uint64
UID string

View File

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