in internal/client/integrations/overrides.go [295:395]
func extractOverrides(iversion integrationVersion) (overrides, error) {
taskOverrides := overrides{
IntegrationOverrides: integrationoverrides{
RunAsServiceAccount: nil,
DatabasePersistencePolicy: "DATABASE_PERSISTENCE_POLICY_UNSPECIFIED",
EnableVariableMasking: false,
CloudLoggingDetails: cloudLoggingDetails{
EnableCloudLogging: false,
CloudLoggingSeverity: "CLOUD_LOGGING_SEVERITY_UNSPECIFIED",
},
},
}
for _, task := range iversion.TaskConfigs {
if task.Task == "GenericConnectorTask" {
if err := handleGenericConnectorTask(task, &taskOverrides, iversion.IntegrationConfigParameters); err != nil {
return taskOverrides, err
}
} else if task.Task == "GenericRestV2Task" {
if err := handleGenericRestV2Task(task, &taskOverrides); err != nil {
return taskOverrides, err
}
} else if task.Task == "CloudFunctionTask" {
if err := handleCloudFunctionTask(task, &taskOverrides); err != nil {
return taskOverrides, err
}
}
}
for _, param := range iversion.IntegrationParameters {
if strings.HasPrefix(param.Key, "_") && !inputOutputVariable(param.InputOutputType) {
ip := parameterExternal{}
ip.Key = param.Key
if param.DefaultValue != nil {
ip.DefaultValue = param.DefaultValue
}
taskOverrides.ParamOverrides = append(taskOverrides.ParamOverrides, ip)
}
}
for _, triggerConfig := range iversion.TriggerConfigs {
switch triggerConfig.TriggerType {
case "CLOUD_PUBSUB_EXTERNAL":
subscription := triggerConfig.Properties["Subscription name"]
triggerOverride := triggeroverrides{}
triggerOverride.ProjectId = new(string)
triggerOverride.TopicName = new(string)
*triggerOverride.ProjectId = strings.Split(subscription, "_")[0]
*triggerOverride.TopicName = strings.Split(subscription, "_")[1]
triggerOverride.TriggerNumber = triggerConfig.TriggerNumber
triggerSA := triggerConfig.Properties["Service account"]
if triggerSA != "" {
if defaultSA, err := apiclient.GetComputeEngineDefaultServiceAccount(apiclient.GetProjectID()); err == nil {
if defaultSA != triggerSA {
triggerOverride.ServiceAccount = new(string)
*triggerOverride.ServiceAccount = strings.Split(triggerConfig.Properties["Service account"], "@")[0]
}
} else {
clilog.Warning.Printf("unable to get default Compute Engine Service Account, %v\n", err)
}
}
taskOverrides.TriggerOverrides = append(taskOverrides.TriggerOverrides, triggerOverride)
case "CLOUD_SCHEDULER":
triggerOverride := triggeroverrides{}
triggerOverride.CloudSchedulerServiceAccount = new(string)
triggerOverride.CloudSchedulerLocation = new(string)
triggerOverride.CloudSchedulerCronTab = new(string)
*triggerOverride.CloudSchedulerServiceAccount = triggerConfig.CloudSchedulerConfig.ServiceAccountEmail
*triggerOverride.CloudSchedulerLocation = triggerConfig.CloudSchedulerConfig.Location
*triggerOverride.CloudSchedulerCronTab = triggerConfig.CloudSchedulerConfig.CronTab
taskOverrides.TriggerOverrides = append(taskOverrides.TriggerOverrides, triggerOverride)
case "INTEGRATION_CONNECTOR_TRIGGER":
triggerOverride := triggeroverrides{}
triggerOverride.Properties = triggerConfig.Properties
triggerOverride.TriggerNumber = triggerConfig.TriggerNumber
triggerOverride.TriggerType = triggerConfig.TriggerType
taskOverrides.TriggerOverrides = append(taskOverrides.TriggerOverrides, triggerOverride)
}
}
// handle integration overrides
if iversion.DatabasePersistencePolicy != "" {
taskOverrides.IntegrationOverrides.DatabasePersistencePolicy = iversion.DatabasePersistencePolicy
}
if iversion.RunAsServiceAccount != "" {
taskOverrides.IntegrationOverrides.RunAsServiceAccount = new(string)
*taskOverrides.IntegrationOverrides.RunAsServiceAccount = iversion.RunAsServiceAccount
}
if iversion.EnableVariableMasking {
taskOverrides.IntegrationOverrides.EnableVariableMasking = iversion.EnableVariableMasking
}
if iversion.CloudLoggingDetails.CloudLoggingSeverity != "" {
taskOverrides.IntegrationOverrides.CloudLoggingDetails.CloudLoggingSeverity = iversion.CloudLoggingDetails.CloudLoggingSeverity
}
if iversion.CloudLoggingDetails.EnableCloudLogging {
taskOverrides.IntegrationOverrides.CloudLoggingDetails.EnableCloudLogging = iversion.CloudLoggingDetails.EnableCloudLogging
}
return taskOverrides, nil
}