Skip to content

Commit d0f6b61

Browse files
committed
fix: Webhooks distributed at the parent level to suborgs are not dynamically generating a different UUID as the parent
1 parent 21fcb39 commit d0f6b61

File tree

1 file changed

+92
-79
lines changed

1 file changed

+92
-79
lines changed

shared.go

Lines changed: 92 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -6429,17 +6429,17 @@ func diffWorkflows(oldWorkflow Workflow, parentWorkflow Workflow, update bool) {
64296429
}
64306430

64316431
// Create / Delete / Modify
6432-
//log.Printf("\n ===== Parent: %#v, Child: %#v =====", parentWorkflow.ID, oldWorkflow.ID)
6433-
//log.Printf("\n Changes: c | d | m\n Action: %d | %d | %d\n Trigger: %d | %d | %d\n Branch: %d | %d | %d", len(addedActions), len(removedActions), len(updatedActions), len(addedTriggers), len(removedTriggers), len(updatedTriggers), len(addedBranches), len(removedBranches), len(updatedBranches))
6432+
log.Printf("\n ===== Parent: %#v, Child: %#v =====", parentWorkflow.ID, oldWorkflow.ID)
6433+
log.Printf("\n Changes: c | d | m\n Action: %d | %d | %d\n Trigger: %d | %d | %d\n Branch: %d | %d | %d", len(addedActions), len(removedActions), len(updatedActions), len(addedTriggers), len(removedTriggers), len(updatedTriggers), len(addedBranches), len(removedBranches), len(updatedBranches))
64346434

64356435
if update {
64366436
// FIXME: This doesn't work does it?
64376437
childWorkflow := oldWorkflow
64386438

6439-
//log.Printf("\n\nSTART")
6440-
//log.Printf("[DEBUG] CHILD ACTIONS START: %d", len(childWorkflow.Actions))
6441-
//log.Printf("[DEBUG] CHILD TRIGGERS START: %d", len(childWorkflow.Triggers))
6442-
//log.Printf("[DEBUG] CHILD BRANCHES START: %d\n\n", len(childWorkflow.Branches))
6439+
log.Printf("\n\nSTART")
6440+
log.Printf("[DEBUG] CHILD ACTIONS START: %d", len(childWorkflow.Actions))
6441+
log.Printf("[DEBUG] CHILD TRIGGERS START: %d", len(childWorkflow.Triggers))
6442+
log.Printf("[DEBUG] CHILD BRANCHES START: %d\n\n", len(childWorkflow.Branches))
64436443

64446444
if nameChanged {
64456445
childWorkflow.Name = parentWorkflow.Name
@@ -6698,68 +6698,66 @@ func diffWorkflows(oldWorkflow Workflow, parentWorkflow Workflow, update bool) {
66986698
// FIXME: Add specific handlers for each type based on oldWorkflow params that may have been locally configured
66996699
// FIXME: THIS DOES NOT WORK YET FOR TRIGGER FIELD MAPPING TO OLD SETTING
67006700
if childTrigger.ParentControlled {
6701-
/*
6702-
for _, oldTrigger := range oldWorkflow.Triggers {
6703-
if oldTrigger.ID != childTrigger.ID {
6704-
continue
6705-
}
6706-
6707-
childTrigger.Status = oldTrigger.Status
6708-
6709-
reservedArguments := []string{}
6710-
if oldTrigger.TriggerType == "SUBFLOW" {
6711-
reservedArguments = []string{"workflow", "user_apikey", "startnode"}
6712-
} else if oldTrigger.TriggerType == "USERINPUT" {
6713-
reservedArguments = []string{"subflow", "sms", "email", "type"}
6714-
} else if oldTrigger.TriggerType == "SCHEDULE" {
6715-
} else if oldTrigger.TriggerType == "WEBHOOK" {
6716-
reservedArguments = []string{"url", "tmp", "auth_headers"}
6717-
} else if oldTrigger.TriggerType == "PIPELINE" {
6718-
reservedArguments = []string{"pipeline"}
6719-
}
6720-
6721-
fieldsFound := []string{}
6722-
for paramIndex, param := range childTrigger.Parameters {
6723-
if !ArrayContains(reservedArguments, param.Name) {
6724-
continue
6725-
}
6726-
6727-
fieldsFound = append(fieldsFound, param.Name)
6728-
for _, oldParam := range oldTrigger.Parameters {
6729-
if oldParam.Name != param.Name {
6730-
continue
6731-
}
6732-
6733-
childWorkflow.Triggers[childTriggerIndex].Parameters[paramIndex].Value = oldParam.Value
6734-
childTrigger.Parameters[paramIndex].Value = oldParam.Value
6735-
break
6736-
}
6737-
}
6738-
6739-
if len(fieldsFound) != len(reservedArguments) {
6740-
for _, field := range reservedArguments {
6741-
if ArrayContains(fieldsFound, field) {
6742-
continue
6743-
}
6744-
6745-
oldParamFound := false
6746-
for _, oldParam := range oldTrigger.Parameters {
6747-
if oldParam.Name != field {
6748-
continue
6749-
}
6750-
6751-
oldParamFound = true
6752-
childTrigger.Parameters = append(childTrigger.Parameters, oldParam)
6753-
childWorkflow.Triggers[childTriggerIndex].Parameters = append(childWorkflow.Triggers[childTriggerIndex].Parameters, oldParam)
6754-
}
6755-
6756-
if !oldParamFound {
6757-
//log.Printf("[DEBUG] MISSING IN OLDPARAM TOO: %s", field)
6758-
}
6759-
}
6760-
}
6761-
}
6762-
*/
6701+
// for _, oldTrigger := range oldWorkflow.Triggers {
6702+
// if oldTrigger.ID != childTrigger.ID {
6703+
// continue
6704+
// }
6705+
6706+
// childTrigger.Status = oldTrigger.Status
6707+
6708+
// reservedArguments := []string{}
6709+
// if oldTrigger.TriggerType == "SUBFLOW" {
6710+
// reservedArguments = []string{"workflow", "user_apikey", "startnode"}
6711+
// } else if oldTrigger.TriggerType == "USERINPUT" {
6712+
// reservedArguments = []string{"subflow", "sms", "email", "type"}
6713+
// } else if oldTrigger.TriggerType == "SCHEDULE" {
6714+
// } else if oldTrigger.TriggerType == "WEBHOOK" {
6715+
// reservedArguments = []string{"url", "tmp", "auth_headers"}
6716+
// } else if oldTrigger.TriggerType == "PIPELINE" {
6717+
// reservedArguments = []string{"pipeline"}
6718+
// }
6719+
6720+
// fieldsFound := []string{}
6721+
// for paramIndex, param := range childTrigger.Parameters {
6722+
// if !ArrayContains(reservedArguments, param.Name) {
6723+
// continue
6724+
// }
6725+
6726+
// fieldsFound = append(fieldsFound, param.Name)
6727+
// for _, oldParam := range oldTrigger.Parameters {
6728+
// if oldParam.Name != param.Name {
6729+
// continue
6730+
// }
6731+
6732+
// childWorkflow.Triggers[childTriggerIndex].Parameters[paramIndex].Value = oldParam.Value
6733+
// childTrigger.Parameters[paramIndex].Value = oldParam.Value
6734+
// break
6735+
// }
6736+
// }
6737+
6738+
// if len(fieldsFound) != len(reservedArguments) {
6739+
// for _, field := range reservedArguments {
6740+
// if ArrayContains(fieldsFound, field) {
6741+
// continue
6742+
// }
6743+
6744+
// oldParamFound := false
6745+
// for _, oldParam := range oldTrigger.Parameters {
6746+
// if oldParam.Name != field {
6747+
// continue
6748+
// }
6749+
6750+
// oldParamFound = true
6751+
// childTrigger.Parameters = append(childTrigger.Parameters, oldParam)
6752+
// childWorkflow.Triggers[childTriggerIndex].Parameters = append(childWorkflow.Triggers[childTriggerIndex].Parameters, oldParam)
6753+
// }
6754+
6755+
// if !oldParamFound {
6756+
// //log.Printf("[DEBUG] MISSING IN OLDPARAM TOO: %s", field)
6757+
// }
6758+
// }
6759+
// }
6760+
// }
67636761
}
67646762

67656763
found := false
@@ -6797,6 +6795,23 @@ func diffWorkflows(oldWorkflow Workflow, parentWorkflow Workflow, update bool) {
67976795
}
67986796
}
67996797

6798+
// print newTrigger params with old ones
6799+
for _, childTrigger := range childWorkflow.Triggers {
6800+
log.Printf("[DEBUG] Trigger %s (%s) has %d parameters", childTrigger.Label, childTrigger.ID, len(childTrigger.Parameters))
6801+
for _, param := range childTrigger.Parameters {
6802+
log.Printf("%+v", childTrigger.Parameters)
6803+
log.Printf("[DEBUG] Trigger %s (%s) param %s: %s", childTrigger.Label, childTrigger.ID, param.Name, param.Value)
6804+
}
6805+
}
6806+
6807+
for _, newTrigger := range newTriggers {
6808+
log.Printf("[DEBUG] New Trigger %s (%s) has %d parameters", newTrigger.Label, newTrigger.ID, len(newTrigger.Parameters))
6809+
for _, param := range newTrigger.Parameters {
6810+
log.Printf("%+v", newTrigger.Parameters)
6811+
log.Printf("[DEBUG] New Trigger %s (%s) param %s: %s", newTrigger.Label, newTrigger.ID, param.Name, param.Value)
6812+
}
6813+
}
6814+
68006815
childWorkflow.Actions = newActions
68016816
childWorkflow.Triggers = newTriggers
68026817
childWorkflow.Branches = newBranches
@@ -9640,32 +9655,30 @@ func GenerateWorkflowFromParent(ctx context.Context, workflow Workflow, parentOr
96409655
}
96419656
}
96429657

9643-
for actionIndex, _ := range workflow.Actions {
9658+
for actionIndex, _ := range newWf.Actions {
96449659
workflow.Actions[actionIndex].ParentControlled = true
96459660
workflow.Actions[actionIndex].AuthenticationId = ""
96469661
workflow.Actions[actionIndex].Environment = defaultEnvironment
96479662
}
96489663

9649-
for triggerIndex, _ := range workflow.Triggers {
9650-
workflow.Triggers[triggerIndex].ParentControlled = true
9651-
workflow.Triggers[triggerIndex].Environment = defaultEnvironment
9664+
for triggerIndex, _ := range newWf.Triggers {
9665+
newWf.Triggers[triggerIndex].ParentControlled = true
9666+
newWf.Triggers[triggerIndex].Environment = defaultEnvironment
96529667

96539668
// FIXME: How do we manage secondary IDs?
96549669
// E.g. for webhooks, how do we have a URL correctly, and start/stop properly?
9655-
9656-
workflow.Triggers[triggerIndex].Status = "uninitialized"
9657-
if workflow.Triggers[triggerIndex].TriggerType == "WEBHOOK" {
9658-
for paramIndex, param := range workflow.Triggers[triggerIndex].Parameters {
9670+
newWf.Triggers[triggerIndex].Status = "uninitialized"
9671+
if newWf.Triggers[triggerIndex].TriggerType == "WEBHOOK" {
9672+
for paramIndex, param := range newWf.Triggers[triggerIndex].Parameters {
96599673
if param.Name == "url" {
9660-
workflow.Triggers[triggerIndex].Parameters[paramIndex].Value = ""
9674+
newWf.Triggers[triggerIndex].Parameters[paramIndex].Value = ""
96619675
}
96629676

96639677
if param.Name == "tmp" {
9664-
workflow.Triggers[triggerIndex].Parameters[paramIndex].Value = ""
9678+
newWf.Triggers[triggerIndex].Parameters[paramIndex].Value = ""
96659679
}
96669680
}
96679681
}
9668-
96699682
}
96709683

96719684
err = SetWorkflow(ctx, newWf, newWf.ID)

0 commit comments

Comments
 (0)