private static JObject UpdateDurableFunctionConfig(JObject trigger, DurableConfig durableTaskConfig) { if (IsDurableTrigger(trigger)) { if (durableTaskConfig.HubName != null) { trigger[TaskHubName] = durableTaskConfig.HubName; } if (durableTaskConfig.Connection != null) { trigger[Connection] = durableTaskConfig.Connection; } if (durableTaskConfig.StorageProvider != null) { trigger[DurableTaskV2StorageOptions] = durableTaskConfig.StorageProvider; } if (durableTaskConfig.MaxConcurrentOrchestratorFunctions != 0) { trigger[DurableTaskV2MaxConcurrentOrchestratorFunctions] = durableTaskConfig.MaxConcurrentOrchestratorFunctions; } if (durableTaskConfig.MaxConcurrentActivityFunctions != 0) { trigger[DurableTaskV2MaxConcurrentActivityFunctions] = durableTaskConfig.MaxConcurrentActivityFunctions; } } return(trigger); }
private DurableConfig GetDurableV2Config(JObject durableHostConfig) { var config = new DurableConfig(); if (durableHostConfig != null) { if (durableHostConfig.TryGetValue(HubName, StringComparison.OrdinalIgnoreCase, out JToken nameValue) && nameValue != null) { config.HubName = nameValue.ToString(); } if (durableHostConfig.TryGetValue(DurableTaskV2StorageOptions, StringComparison.OrdinalIgnoreCase, out JToken storageOptions) && (storageOptions as JObject) != null) { if (((JObject)storageOptions).TryGetValue(DurableTaskV2StorageConnectionName, StringComparison.OrdinalIgnoreCase, out nameValue) && nameValue != null) { config.Connection = nameValue.ToString(); } } } if (config.HubName == null) { config.HubName = GetDefaultDurableV2HubName(); } return(config); }
internal async Task <IEnumerable <JObject> > GetFunctionTriggers(IEnumerable <FunctionMetadata> functionsMetadata, ScriptJobHostOptions hostOptions) { var triggers = (await functionsMetadata .Where(f => !f.IsProxy) .Select(f => f.ToFunctionTrigger(hostOptions)) .WhenAll()) .Where(t => t != null); if (triggers.Any(IsDurableTrigger)) { DurableConfig durableTaskConfig = await ReadDurableTaskConfig(); // If any host level durable config values, we need to apply them to all durable triggers if (durableTaskConfig.HasValues()) { triggers = triggers.Select(t => UpdateDurableFunctionConfig(t, durableTaskConfig)); } } if (FileUtility.FileExists(Path.Combine(hostOptions.RootScriptPath, ScriptConstants.ProxyMetadataFileName))) { // This is because we still need to scale function apps that are proxies only triggers = triggers.Append(JObject.FromObject(new { type = "routingTrigger" })); } return(triggers); }
private static JObject UpdateDurableFunctionConfig(JObject trigger, DurableConfig durableTaskConfig) { if (IsDurableTrigger(trigger)) { if (durableTaskConfig.HubName != null) { trigger[TaskHubName] = durableTaskConfig.HubName; } if (durableTaskConfig.Connection != null) { trigger[Connection] = durableTaskConfig.Connection; } } return(trigger); }
private DurableConfig GetDurableV1Config(JObject durableHostConfig) { var config = new DurableConfig(); if (durableHostConfig != null) { if (durableHostConfig.TryGetValue(HubName, StringComparison.OrdinalIgnoreCase, out JToken nameValue) && nameValue != null) { config.HubName = nameValue.ToString(); } if (durableHostConfig.TryGetValue(DurableTaskV1StorageConnectionName, StringComparison.OrdinalIgnoreCase, out nameValue) && nameValue != null) { config.Connection = nameValue.ToString(); } } return(config); }
internal async Task <IEnumerable <JObject> > GetFunctionTriggers(IEnumerable <FunctionMetadata> functionsMetadata, ScriptJobHostOptions hostOptions) { var triggers = (await functionsMetadata .Select(f => f.ToFunctionTrigger(hostOptions)) .WhenAll()) .Where(t => t != null); if (triggers.Any(IsDurableTrigger)) { DurableConfig durableTaskConfig = await ReadDurableTaskConfig(); // If any host level durable config values, we need to apply them to all durable triggers if (durableTaskConfig.HasValues()) { triggers = triggers.Select(t => UpdateDurableFunctionConfig(t, durableTaskConfig)); } } return(triggers); }
private DurableConfig GetDurableV2Config(JObject durableHostConfig) { var config = new DurableConfig(); if (durableHostConfig != null) { if (durableHostConfig.TryGetValue(HubName, StringComparison.OrdinalIgnoreCase, out JToken nameValue) && nameValue != null) { config.HubName = nameValue.ToString(); } if (durableHostConfig.TryGetValue(DurableTaskV2StorageOptions, StringComparison.OrdinalIgnoreCase, out JToken storageOptions) && (storageOptions as JObject) != null) { if (((JObject)storageOptions).TryGetValue(DurableTaskV2StorageConnectionName, StringComparison.OrdinalIgnoreCase, out nameValue) && nameValue != null) { config.Connection = nameValue.ToString(); } config.StorageProvider = storageOptions; } if (durableHostConfig.TryGetValue(DurableTaskV2MaxConcurrentOrchestratorFunctions, StringComparison.OrdinalIgnoreCase, out JToken maxConcurrentOrchestratorFunctions) && maxConcurrentOrchestratorFunctions != null) { config.MaxConcurrentOrchestratorFunctions = int.Parse(maxConcurrentOrchestratorFunctions.ToString()); } if (durableHostConfig.TryGetValue(DurableTaskV2MaxConcurrentActivityFunctions, StringComparison.OrdinalIgnoreCase, out JToken maxConcurrentActivityFunctions) && maxConcurrentActivityFunctions != null) { config.MaxConcurrentActivityFunctions = int.Parse(maxConcurrentActivityFunctions.ToString()); } } if (config.HubName == null) { config.HubName = GetDefaultDurableV2HubName(); } return(config); }