in src/ApplicationInsights.Kubernetes/K8sHttpClient/KubeHttpSettingsWinContainerProvider.cs [12:49]
public KubeHttpSettingsWinContainerProvider(
string serviceAccountFolder = @"C:\var\run\secrets\kubernetes.io\serviceaccount",
string tokenFileName = "token",
string certFileName = "ca.crt",
string namespaceFileName = "namespace",
string kubernetesServiceHost = null,
string kubernetesServicePort = null)
: base(kubernetesServiceHost, kubernetesServicePort)
{
// Container id won't be fetched for windows container.
ContainerId = null;
DirectoryInfo serviceAccountDirectory =
new DirectoryInfo(Arguments.IsNotNullOrEmpty(serviceAccountFolder, nameof(serviceAccountFolder)));
foreach (FileInfo fileInfo in serviceAccountDirectory.EnumerateFiles("*", SearchOption.AllDirectories))
{
// Per current symbolic linking settings, reading the file directly will fail.
if (!fileInfo.Attributes.HasFlag(FileAttributes.ReparsePoint))
{
string fileName = fileInfo.Name;
if (fileName.Equals(Arguments.IsNotNullOrEmpty(tokenFileName, nameof(tokenFileName)), StringComparison.OrdinalIgnoreCase))
{
_tokenFilePath = fileInfo.FullName;
_logger.LogDebug("Found token file path: {0}", _tokenFilePath);
}
else if (fileName.Equals(Arguments.IsNotNullOrEmpty(certFileName, nameof(certFileName)), StringComparison.OrdinalIgnoreCase))
{
_certFilePath = fileInfo.FullName;
_logger.LogDebug("Found certificate file path: {0}", _certFilePath);
}
else if (fileName.Equals(Arguments.IsNotNullOrEmpty(namespaceFileName, nameof(namespaceFileName)), StringComparison.OrdinalIgnoreCase))
{
_namespaceFilePath = fileInfo.FullName;
_logger.LogDebug("Found namespace file path: {0}", _namespaceFilePath);
}
}
}
QueryNamespace = FetchQueryNamespace(_namespaceFilePath);
}