in gce-vm-labeler/gcf/csharp/Function.cs [28:56]
public Function(ILogger<Function> logger) =>
_logger = logger;
public async Task HandleAsync(CloudEvent cloudEvent, LogEntryData data, CancellationToken cancellationToken)
{
_logger.LogInformation("Event type: {type}", cloudEvent.Type);
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}'");
}