public bool IdentifyPresenceOfSqlServices()

in src/Discovery/IdentifySqlServices.cs [12:81]


        public bool IdentifyPresenceOfSqlServices(string machineId, string machineName, UserInput userInputObj)
        {
            bool result = false;

            string url = Routes.ProtocolScheme + Routes.AzureManagementApiHostname + machineId + Routes.ForwardSlash +
                         Routes.ApplicationsPath + Routes.QueryStringQuestionMark +
                         Routes.QueryParameterApiVersion + Routes.QueryStringEquals + Routes.DiscoverySitesApiVersion;

            string jsonResponse = "";
            try
            {
                jsonResponse = new HttpClientHelper().GetHttpRequestJsonStringResponse(url, userInputObj).Result;
            }
            catch (OperationCanceledException)
            {
                throw;
            }
            catch (AggregateException aeSqlServices)
            {
                string errorMessage = "";
                foreach (var e in aeSqlServices.Flatten().InnerExceptions)
                {
                    if (e is OperationCanceledException)
                        throw e;
                    else
                    {
                        errorMessage = errorMessage + e.Message + " ";
                    }
                }
                userInputObj.LoggerObj.LogError($"Failed to obtain applications' data for {machineName}: {errorMessage}");
                return result;
            }
            catch (Exception exJsonResponse)
            {
                userInputObj.LoggerObj.LogError($"Failed to obtain applications' data for {machineName}: {exJsonResponse.Message}");
                return result;
            }

            ApplicationsJSON applicationsObj = JsonConvert.DeserializeObject<ApplicationsJSON>(jsonResponse);

            if (applicationsObj == null)
                return result;

            if (applicationsObj.Properties == null)
                return result;

            if (applicationsObj.Properties.AppsAndRoles == null)
                return result;

            if (applicationsObj.Properties.AppsAndRoles.Applications == null)
                return result;

            foreach (var application in applicationsObj.Properties.AppsAndRoles.Applications)
            {
                string applicationName = application.Name;
                if (string.IsNullOrEmpty(applicationName))
                    continue;

                if (applicationName.ToLower().Contains("sql") && (applicationName.ToLower().Contains("analysis services") ||
                                                                  applicationName.ToLower().Contains("reporting services") ||
                                                                  applicationName.ToLower().Contains("integration services"))
                   )
                {
                    result = true;
                    break;
                }
            }

            return result;
        }