public void RegisterFromIMDS() { // if IMDS can't be reached, this test takes >15 seconds Region regionFromIMDS = Region.RegisterRegionFromInstanceMetadataService(); RegionSchema regionSchemaFromIMDS = Region.GetRegionSchemaFromInstanceMetaDataService(); if (regionFromIMDS != null && regionSchemaFromIMDS != null) { Assert.Equal(regionFromIMDS.RegionId, regionSchemaFromIMDS.regionIdentifier.ToLower()); Assert.Equal(regionFromIMDS.RegionCode, regionSchemaFromIMDS.regionKey.ToLower()); Assert.Equal(regionFromIMDS.Realm.RealmId, regionSchemaFromIMDS.realmKey); Assert.Equal(regionFromIMDS.Realm.SecondLevelDomain, regionSchemaFromIMDS.realmDomainComponent); } else { Assert.True(regionFromIMDS == null && regionSchemaFromIMDS == null); } }
public static RegionSchema GetRegionSchemaFromInstanceMetaDataService() { if (HasReceivedInstanceMetadataServiceResponse) { return(RegionSchemaFromIMDS); } var client = new HttpClient(); try { logger.Info($"Requesting region metadata blob from IMDS at {METADATA_SERVICE_BASE_URL}{METADATA_SERVICE_API_URL}"); client.BaseAddress = new Uri(METADATA_SERVICE_BASE_URL); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "Oracle"); client.DefaultRequestHeaders.UserAgent.ParseAdd(HttpUtils.BuildUserAgent("")); var response = client.GetAsync(METADATA_SERVICE_API_URL).Result; if (response.IsSuccessStatusCode) { var regionMetadata = response.Content.ReadAsStringAsync().Result; logger.Debug($"Response from IMDS: {regionMetadata}"); if (!String.IsNullOrEmpty(regionMetadata)) { RegionSchemaFromIMDS = JsonConvert.DeserializeObject <RegionSchema>(regionMetadata); logger.Debug($"Region read from IMDS Id:{RegionSchemaFromIMDS.regionIdentifier} Realm:{RegionSchemaFromIMDS.realmKey} Domain:{RegionSchemaFromIMDS.realmDomainComponent} Key:{RegionSchemaFromIMDS.regionKey}"); } } else { logger.Info($"Request to Instance Metadata Service failed: {response.StatusCode} ({response.ReasonPhrase})"); } } catch (Exception e) { logger.Warn($"Region Schema read from Instance Metadata Service due to expception: {e}"); } finally { client.Dispose(); } return(RegionSchemaFromIMDS); }