private static async Task <Platform> LoadInstanceAsync() { // The order matters here: // * GAE runs on GCE, so do GAE before GCE. // * GKE runs on GCE, so do GKE before GCE. // * Metadata server access can take time, so do GAE first. GaePlatformDetails gaeDetails = LoadGaeDetails(); if (gaeDetails != null) { return(new Platform(gaeDetails)); } var metadataJson = await LoadMetadataAsync().ConfigureAwait(false); if (metadataJson != null) { var kubernetesData = await GkePlatformDetails.LoadKubernetesDataAsync().ConfigureAwait(false); if (kubernetesData != null) { GkePlatformDetails gkeDetails = GkePlatformDetails.TryLoad(metadataJson, kubernetesData); if (gkeDetails != null) { return(new Platform(gkeDetails)); } } GcePlatformDetails gceDetails = GcePlatformDetails.TryLoad(metadataJson); if (gceDetails != null) { return(new Platform(gceDetails)); } } return(new Platform()); }
/// <summary> /// Construct with details of Google Compute Engine. /// </summary> /// <param name="gceDetails">Details of Google Compute Engine.</param> public Platform(GcePlatformDetails gceDetails) { GceDetails = GaxPreconditions.CheckNotNull(gceDetails, nameof(gceDetails)); }