private async Task <HttpResponseMessage> CreateOrUpdateHelper(string name, Task <FunctionEnvelope> functionEnvelopeBuilder)
        {
            if (!FunctionNameValidationRegex.IsMatch(name))
            {
                // it returns the same error object if the PUT request does not come from Arm
                return(ArmUtils.CreateErrorResponse(Request, HttpStatusCode.BadRequest, new ArgumentException($"{name} is not a valid function name")));
            }

            var tracer = _traceFactory.GetTracer();

            using (tracer.Step($"FunctionsController.CreateOrUpdate({name})"))
            {
                var  functionEnvelope = await functionEnvelopeBuilder;
                bool configChanged    = false;
                functionEnvelope = await _manager.CreateOrUpdateAsync(name, functionEnvelope, () => { configChanged = true; });

                AddFunctionAppIdToEnvelope(functionEnvelope);

                if (configChanged)
                {
                    // Fire and forget SyncTrigger request.
                    FireSyncTriggers(tracer);
                }

                return(Request.CreateResponse(HttpStatusCode.Created, ArmUtils.AddEnvelopeOnArmRequest(functionEnvelope, Request)));
            }
        }
Пример #2
0
        private async Task <HttpResponseMessage> CreateOrUpdateHelper(string name, Task <FunctionEnvelope> functionEnvelopeBuilder)
        {
            var tracer = _traceFactory.GetTracer();

            using (tracer.Step($"FunctionsController.CreateOrUpdate({name})"))
            {
                var  functionEnvelope = await functionEnvelopeBuilder;
                bool configChanged    = false;
                functionEnvelope = await _manager.CreateOrUpdateAsync(name, functionEnvelope, () => { configChanged = true; });

                AddFunctionAppIdToEnvelope(functionEnvelope);

                if (configChanged)
                {
                    // Fire and forget SyncTrigger request.
                    FireSyncTriggers(tracer);
                }

                return(Request.CreateResponse(HttpStatusCode.Created, ArmUtils.AddEnvelopeOnArmRequest(functionEnvelope, Request)));
            }
        }