Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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);
        }