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;
 }
Beispiel #3
0
        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}");
            }
        }
Beispiel #5
0
        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
        }