func extractOverrides()

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
}