Example #1
0
        internal static unsafe HostingSettings LoadHostingSettings()
        {
            var nativeRes        = NativeContainerActivatorService.LoadHostingSettings();
            var uncastedSettings = nativeRes.get_Result();

            var nativeSettings = (NativeTypes.FABRIC_HOSTING_SETTINGS *)uncastedSettings;

            var nativeSettingMap = NativeTypes.FromNativeStringPairList(nativeSettings->SettingsMap);

            var settings = new HostingSettings();

            return(new HostingSettings
            {
                ContainerPackageRootFolder = nativeSettingMap["ContainerPackageRootFolder"],
                ContainerFabricBinRootFolder = nativeSettingMap["ContainerFabricBinRootFolder"],
                ContainerFabricLogRootFolder = nativeSettingMap["ContainerFabricLogRootFolder"],
                ContainerAppDeploymentRootFolder = nativeSettingMap["ContainerAppDeploymentRootFolder"],
                DockerRequestTimeout = TimeSpan.FromSeconds(int.Parse(nativeSettingMap["DockerRequestTimeout"])),
                ContainerImageDownloadTimeout = TimeSpan.FromSeconds(int.Parse(nativeSettingMap["ContainerImageDownloadTimeout"])),
                ContainerDeactivationTimeout = TimeSpan.FromSeconds(int.Parse(nativeSettingMap["ContainerDeactivationTimeout"])),
                ContainerDeactivationRetryDelayInSec = int.Parse(nativeSettingMap["ContainerDeactivationRetryDelayInSec"]),
                ContainerTerminationMaxRetryCount = int.Parse(nativeSettingMap["ContainerTerminationMaxRetryCount"]),
                ContainerEventManagerMaxContinuousFailure = int.Parse(nativeSettingMap["ContainerEventManagerMaxContinuousFailure"]),
                ContainerEventManagerFailureBackoffInSec = int.Parse(nativeSettingMap["ContainerEventManagerFailureBackoffInSec"]),
                EnableDockerHealthCheckIntegration = bool.Parse(nativeSettingMap["EnableDockerHealthCheckIntegration"]),
                ContainerServiceNamedPipeOrUnixSocketAddress = nativeSettingMap["ContainerServiceNamedPipeOrUnixSocketAddress"],
                DeadContainerCleanupUntilInMinutes = int.Parse(nativeSettingMap["DeadContainerCleanupUntilInMinutes"]),
                ContainerCleanupScanIntervalInMinutes = int.Parse(nativeSettingMap["ContainerCleanupScanIntervalInMinutes"]),
                DefaultContainerRepositoryAccountName = nativeSettingMap["DefaultContainerRepositoryAccountName"],
                DefaultContainerRepositoryPassword = nativeSettingMap["DefaultContainerRepositoryPassword"],
                IsDefaultContainerRepositoryPasswordEncrypted = bool.Parse(nativeSettingMap["IsDefaultContainerRepositoryPasswordEncrypted"]),
                DefaultContainerNetwork = nativeSettingMap["DefaultContainerNetwork"],
                DefaultNatNetwork = nativeSettingMap["DefaultNatNetwork"],
                ContainerRepositoryCredentialTokenEndPoint = nativeSettingMap["ContainerRepositoryCredentialTokenEndPoint"],
                DefaultMSIEndpointForTokenAuthentication = nativeSettingMap["DefaultMSIEndpointForTokenAuthentication"],
                DefaultContainerRepositoryPasswordType = nativeSettingMap["DefaultContainerRepositoryPasswordType"],
                DisableDockerRequestRetry = bool.Parse(nativeSettingMap["DisableDockerRequestRetry"]),
                LocalNatIpProviderEnabled = bool.Parse(nativeSettingMap["LocalNatIpProviderEnabled"]),
                LocalNatIpProviderNetworkName = nativeSettingMap["LocalNatIpProviderNetworkName"]
            });
        }
        private void CreateNativeAgent()
        {
            var iid = typeof(NativeContainerActivatorService.IFabricContainerActivatorServiceAgent2).GetTypeInfo().GUID;

            this.nativeManager = NativeContainerActivatorService.CreateFabricContainerActivatorServiceAgent(ref iid);
        }