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}'");
});
});
}