private void _LogKubernetesCloudProvider()

in src/library/Client/ManagementClients/KubeConfigManagementClient.cs [160:226]


        private void _LogKubernetesCloudProvider(string fqdn)
        {
            object cloud = null;
            try
            {
                var ip = IPAddress.Parse(fqdn);
                if (IPAddress.IsLoopback(ip))
                {
                    cloud = "Local IP";
                }
                else
                {
                    cloud = "Remote IP";
                }
            }
            catch (Exception)
            {
                // It's not an IP, move on, nothing to do here
            }
            if (cloud == null)
            {
                try
                {
                    var fqdnDomainParts = fqdn.Split(".");
                    var fqdnDomain = string.Join(".", fqdnDomainParts[fqdnDomainParts.Length - 2], fqdnDomainParts[fqdnDomainParts.Length - 1]);
                    switch (fqdnDomain)
                    {
                        case "azmk8s.io":
                            cloud = "AzurePublic";
                            break;

                        case "azk8s.cn":
                            cloud = "AzureChina";
                            break;

                        case "azure.us":
                            cloud = "AzureUSGovernment";
                            break;

                        case "amazonaws.com":
                            cloud = "Amazon";
                            break;

                        case "ibm.com":
                            cloud = "IBM";
                            break;

                        case "docker.internal":
                            cloud = "DockerInternal";
                            break;

                        default:
                            cloud = new PII(fqdnDomain);
                            break;
                    }
                }
                catch (Exception ex)
                {
                    _log.Warning("Failed to parse fqdn domain from {0} with: {1}", new PII(fqdn), ex.Message);
                    _log.ExceptionAsWarning(ex);
                }
            }
            if (cloud != null)
            {
                _log.Event("CloudProvider", new Dictionary<string, object> { { "ClusterFQDNDomain", cloud } });
            }
        }