public void Configure()

in gce-vm-labeler/run/csharp/Startup.cs [33:77]


        public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILogger<Startup> logger)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            logger.LogInformation("Service is starting...");

            app.UseRouting();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapPost("/", async context =>
                {
                    var formatter = CloudEventFormatterAttribute.CreateFormatter(typeof(LogEntryData));
                    var cloudEvent = await context.Request.ToCloudEventAsync(formatter);
                    logger.LogInformation("Event type: {type}", cloudEvent.Type);

                    var data = (LogEntryData)cloudEvent.Data;
                    if (!data.Operation.Last)
                    {
                        logger.LogInformation("Operation is not last, skipping event");
                        return;
                    }

                    // projects/events-atamel/zones/us-central1-a/instances/instance-1
                    var resourceName = data.ProtoPayload.ResourceName;
                    logger.LogInformation($"Resource: {resourceName}");

                    var tokens = resourceName.Split("/");
                    var project = tokens[1];
                    var zone = tokens[3];
                    var instance = tokens[5];
                    var username = data.ProtoPayload.AuthenticationInfo.PrincipalEmail.Split("@")[0];

                    logger.LogInformation($"Setting label 'username:{username}' to instance '{instance}'");

                    await SetLabelsAsync(project, zone, instance, username);

                    logger.LogInformation($"Set label 'user:{username}' to instance '{instance}'");

                });
            });
        }