public async Task CallChildren(ELAPSFunction functionCopy) { if (functionCopy.Children.Any()) { // Set up each child function foreach (var child in functionCopy.Children) { //Write inherited parameters down to child foreach (var p in functionCopy.Parameters) { if (child.Parameters.ContainsKey(p.Key)) { child.Parameters[p.Key] = p.Value; } else { child.Parameters.Add(p.Key, p.Value); } } //Write function call doc await writeFunctionCallDocAsync(child); _ = callFunction(child); } } }
public ELAPSFunctionHandler() { Function = new ELAPSFunction { Parameters = new Dictionary <string, string>(), Children = new List <ELAPSFunction>() }; EnableLogging = true; }
private async Task <string> callFunction(ELAPSFunction function) { using (var client = new HttpClient()) { var uri = new Uri($"http://gateway:8080/api/{function}"); HttpResponseMessage response = await client.PostAsync(uri, new StringContent(function.Key, Encoding.UTF8, "text/plain")); return(await response.Content.ReadAsStringAsync()); } }
private async Task callFunction(ELAPSFunction function) { using (var client = new HttpClient()) { // Use http://gateway:8080/... for docker swarm var uri = new Uri($"http://gateway.openfaas:8080/function/{function.Name}"); HttpResponseMessage response = await client.PostAsync(uri, new StringContent(function.Key, Encoding.UTF8, "text/plain")); var result = await response.Content.ReadAsStringAsync(); await logMessage($"Result of call to {uri.ToString()}: {result}"); } }
private async Task writeFunctionCallDocAsync(ELAPSFunction child) { if (mongo == null) { return; } var database = mongo.GetDatabase("elaps"); child.Key = Guid.NewGuid().ToString(); var document = BsonDocument.Parse(child.ToJson().ToString()); var collection = database.GetCollection <BsonDocument>("functioncalls"); await collection.InsertOneAsync(document); //LOG function call created }