private void AddRemainingParametersForWebApps(List <MdmQueryParameters> queryParameters, string resourceId, int seriesResolutionInMinutes) { var hostArray = resourceId.Split("."); if (hostArray.Length < 3) { return; } var paramDnsSuffix = new MdmQueryParameters { query = $"//*[id='DNSSuffix']", replacement = $"{hostArray[1]}.{hostArray[2]}" }; queryParameters.Add(paramDnsSuffix); var paramAppName = new MdmQueryParameters { query = $"//*[id='appName']", replacement = hostArray[0] }; queryParameters.Add(paramAppName); var paramTimeResolution = new MdmQueryParameters { query = $"//*[id='timeResolution']", replacement = seriesResolutionInMinutes.ToString() }; queryParameters.Add(paramTimeResolution); }
private void AddMdmInformationToMetadata(IEnumerable <Tuple <string, string, IEnumerable <KeyValuePair <string, string> > > > definitions, DateTime startTimeUtc, DateTime endTimeUtc, int seriesResolutionInMinutes) { var queryParameters = new List <MdmQueryParameters>(); var dashboard = string.Empty; string resourceId = string.Empty; foreach (var d in definitions) { //Item1 - NameSpace //Item2 - MetricName if (string.IsNullOrWhiteSpace(dashboard)) { if (d.Item1 == "Microsoft/Web/AppServicePlans") { dashboard = "WAWS Shoebox/App Service Plans/Per Resource Instance"; } else if (d.Item1 == "Microsoft/Web/WebApps") { dashboard = "WAWS Shoebox/Web Apps/Per Resource"; } } foreach (var instanceDimension in d.Item3.Where(x => x.Key != "ServerName")) { if (string.Equals(instanceDimension.Key, "ResourceId", StringComparison.OrdinalIgnoreCase) && !string.IsNullOrWhiteSpace(instanceDimension.Value)) { resourceId = instanceDimension.Value; } var queryValue = $"//*[id='{instanceDimension.Key}']"; if (!queryParameters.Any(x => x.query == queryValue)) { var mdmParameter = new MdmQueryParameters { query = queryValue, replacement = instanceDimension.Value }; queryParameters.Add(mdmParameter); } } if (dashboard == "WAWS Shoebox/Web Apps/Per Resource") { AddRemainingParametersForWebApps(queryParameters, resourceId, seriesResolutionInMinutes); } } if (queryParameters.Count > 0 && !string.IsNullOrWhiteSpace(dashboard)) { bool urlExists = false; string finalUrl = string.Empty; var urlParmeters = $"dashboard/{dashboard}?overrides={JsonConvert.SerializeObject(queryParameters)}&globalStartTime={GetDateTimeInEpochMilliseconds(startTimeUtc)}&globalEndTime={GetDateTimeInEpochMilliseconds(endTimeUtc)}&pinGlobalTimeRange=true"; finalUrl = $"https://jarvis-west.dc.ad.msft.net/{urlParmeters} "; urlExists = Metadata.PropertyBag.Any(x => x.Key == "Query" && x.Value.GetType() == typeof(DataProviderMetadataQuery) && x.Value.CastTo <DataProviderMetadataQuery>().Url.Equals(finalUrl, StringComparison.OrdinalIgnoreCase)); if (!urlExists) { Metadata.PropertyBag.Add(new KeyValuePair <string, object>("Query", new DataProviderMetadataQuery() { Text = finalUrl, Url = finalUrl })); } } }