public EdgeDeploymentCommand( string deviceNamespace, ResourceName resourceName, IKubernetes client, IEnumerable <IModule> modules, IRuntimeInfo runtimeInfo, ICombinedConfigProvider <CombinedKubernetesConfig> configProvider) { this.deviceNamespace = KubeUtils.SanitizeK8sValue(Preconditions.CheckNonWhiteSpace(deviceNamespace, nameof(deviceNamespace))); this.resourceName = Preconditions.CheckNotNull(resourceName, nameof(resourceName)); this.client = Preconditions.CheckNotNull(client, nameof(client)); this.modules = Preconditions.CheckNotNull(modules, nameof(modules)).ToList(); this.runtimeInfo = Preconditions.CheckNotNull(runtimeInfo, nameof(runtimeInfo)); this.configProvider = Preconditions.CheckNotNull(configProvider, nameof(configProvider)); this.id = new Lazy <string>(() => this.modules.Aggregate(string.Empty, (prev, module) => module.Name + prev)); this.serializerSettings = new JsonSerializerSettings { ContractResolver = new OverrideJsonIgnoreOfBaseClassContractResolver( new Dictionary <Type, string[]> { [typeof(KubernetesModule)] = new[] { nameof(KubernetesModule.Name) } }) { // Environment variable (env) property JSON casing should be left alone NamingStrategy = new CamelCaseNamingStrategy { ProcessDictionaryKeys = false } } }; }
public DockerCommandFactory(IDockerClient dockerClient, DockerLoggingConfig dockerLoggingConfig, IConfigSource configSource, ICombinedConfigProvider <CombinedDockerConfig> combinedConfigProvider) { this.client = Preconditions.CheckNotNull(dockerClient, nameof(dockerClient)); this.dockerLoggerConfig = Preconditions.CheckNotNull(dockerLoggingConfig, nameof(dockerLoggingConfig)); this.configSource = Preconditions.CheckNotNull(configSource, nameof(configSource)); this.combinedConfigProvider = Preconditions.CheckNotNull(combinedConfigProvider, nameof(combinedConfigProvider)); }
public EdgeletCommandFactory(IModuleManager moduleManager, ISecretManager secretManager, IConfigSource configSource, ICombinedConfigProvider <T> combinedConfigProvider) { this.moduleManager = Preconditions.CheckNotNull(moduleManager, nameof(moduleManager)); this.secretManager = Preconditions.CheckNotNull(secretManager, nameof(secretManager)); this.configSource = Preconditions.CheckNotNull(configSource, nameof(configSource)); this.combinedConfigProvider = Preconditions.CheckNotNull(combinedConfigProvider, nameof(combinedConfigProvider)); }
public KubernetesPlanner( string deviceNamespace, ResourceName resourceName, IKubernetes client, ICommandFactory commandFactory, ICombinedConfigProvider <CombinedKubernetesConfig> configProvider) { this.resourceName = Preconditions.CheckNotNull(resourceName, nameof(resourceName)); this.deviceNamespace = Preconditions.CheckNonWhiteSpace(deviceNamespace, nameof(deviceNamespace)); this.client = Preconditions.CheckNotNull(client, nameof(client)); this.commandFactory = Preconditions.CheckNotNull(commandFactory, nameof(commandFactory)); this.configProvider = Preconditions.CheckNotNull(configProvider, nameof(configProvider)); }
public KubernetesPlanner( string deviceNamespace, string iotHubHostname, string deviceId, IKubernetes client, ICommandFactory commandFactory, ICombinedConfigProvider <T> combinedConfigProvider) { this.deviceNamespace = Preconditions.CheckNonWhiteSpace(deviceNamespace, nameof(deviceNamespace)); this.iotHubHostname = Preconditions.CheckNonWhiteSpace(iotHubHostname, nameof(iotHubHostname)); this.deviceId = Preconditions.CheckNonWhiteSpace(deviceId, nameof(deviceId)); this.client = Preconditions.CheckNotNull(client, nameof(client)); this.commandFactory = Preconditions.CheckNotNull(commandFactory, nameof(commandFactory)); this.combinedConfigProvider = Preconditions.CheckNotNull(combinedConfigProvider, nameof(combinedConfigProvider)); }
public KubernetesPlanner( string deviceNamespace, ResourceName resourceName, IKubernetes client, ICommandFactory commandFactory, ICombinedConfigProvider <CombinedKubernetesConfig> configProvider, KubernetesModuleOwner moduleOwner) { this.resourceName = Preconditions.CheckNotNull(resourceName, nameof(resourceName)); this.deviceNamespace = Preconditions.CheckNonWhiteSpace(deviceNamespace, nameof(deviceNamespace)); this.client = Preconditions.CheckNotNull(client, nameof(client)); this.commandFactory = Preconditions.CheckNotNull(commandFactory, nameof(commandFactory)); this.configProvider = Preconditions.CheckNotNull(configProvider, nameof(configProvider)); this.moduleOwner = Preconditions.CheckNotNull(moduleOwner); this.serializerSettings = EdgeDeploymentSerialization.SerializerSettings; }
public EdgeletCommandFactory( IModuleManager moduleManager, IConfigSource configSource, ICombinedConfigProvider <T> combinedConfigProvider) { this.moduleManager = Preconditions.CheckNotNull(moduleManager, nameof(moduleManager)); this.configSource = Preconditions.CheckNotNull(configSource, nameof(configSource)); this.combinedConfigProvider = Preconditions.CheckNotNull(combinedConfigProvider, nameof(combinedConfigProvider)); this.edgeDeviceHostname = this.configSource.Configuration.GetValue <string>(Constants.EdgeDeviceHostNameKey); if (string.IsNullOrWhiteSpace(this.edgeDeviceHostname)) { throw new ArgumentException("EdgeDeviceHostname from configuration is null, empty or whitespaces."); } this.parentEdgeHostname = Option.Maybe(this.configSource.Configuration.GetValue <string>(Constants.GatewayHostnameVariableName)); }
public EdgeDeploymentCommand( string deviceNamespace, ResourceName resourceName, IKubernetes client, IEnumerable <IModule> desiredmodules, ModuleSet currentmodules, IRuntimeInfo runtimeInfo, ICombinedConfigProvider <CombinedKubernetesConfig> configProvider) { this.deviceNamespace = KubeUtils.SanitizeK8sValue(Preconditions.CheckNonWhiteSpace(deviceNamespace, nameof(deviceNamespace))); this.resourceName = Preconditions.CheckNotNull(resourceName, nameof(resourceName)); this.client = Preconditions.CheckNotNull(client, nameof(client)); this.modules = Preconditions.CheckNotNull(desiredmodules, nameof(desiredmodules)).ToList(); this.currentmodules = Preconditions.CheckNotNull(currentmodules, nameof(currentmodules)); this.runtimeInfo = Preconditions.CheckNotNull(runtimeInfo, nameof(runtimeInfo)); this.configProvider = Preconditions.CheckNotNull(configProvider, nameof(configProvider)); this.id = new Lazy <string>(() => this.modules.Aggregate(string.Empty, (prev, module) => module.Name + prev)); this.serializerSettings = EdgeDeploymentSerialization.SerializerSettings; }
public KubernetesCrdCommand(string deviceNamespace, string iotHubHostname, string deviceId, IKubernetes client, KubernetesModule <DockerConfig>[] modules, Option <IRuntimeInfo> runtimeInfo, ICombinedConfigProvider <T> combinedConfigProvider) { this.deviceNamespace = KubeUtils.SanitizeK8sValue(Preconditions.CheckNonWhiteSpace(deviceNamespace, nameof(deviceNamespace))); this.iotHubHostname = KubeUtils.SanitizeK8sValue(Preconditions.CheckNonWhiteSpace(iotHubHostname, nameof(iotHubHostname))); this.deviceId = KubeUtils.SanitizeK8sValue(Preconditions.CheckNonWhiteSpace(deviceId, nameof(deviceId))); this.client = Preconditions.CheckNotNull(client, nameof(client)); this.modules = Preconditions.CheckNotNull(modules, nameof(modules)); this.runtimeInfo = Preconditions.CheckNotNull(runtimeInfo, nameof(runtimeInfo)); this.combinedConfigProvider = Preconditions.CheckNotNull(combinedConfigProvider, nameof(combinedConfigProvider)); this.id = new Lazy <string>(() => this.modules.Aggregate(string.Empty, (prev, module) => module.Name + prev)); var deserializerTypesMap = new Dictionary <Type, IDictionary <string, Type> > { [typeof(IModule)] = new Dictionary <string, Type> { ["docker"] = typeof(CombinedDockerConfig) } }; this.deploymentSerde = new TypeSpecificSerDe <EdgeDeploymentDefinition <DockerConfig> >(deserializerTypesMap); }
protected override void Load(ContainerBuilder builder) { // IModuleClientProvider builder.Register( c => new ModuleClientProvider( c.Resolve <ISdkModuleClientProvider>(), this.upstreamProtocol, this.proxy, this.productInfo, this.closeOnIdleTimeout, this.idleTimeout)) .As <IModuleClientProvider>() .SingleInstance(); // IModuleManager builder.Register(c => new ModuleManagementHttpClient(this.managementUri, this.apiVersion, Constants.EdgeletClientApiVersion)) .As <IModuleManager>() .As <IIdentityManager>() .As <IDeviceManager>() .SingleInstance(); // IModuleIdentityLifecycleManager var identityBuilder = new ModuleIdentityProviderServiceBuilder(this.iotHubHostName, this.deviceId, this.gatewayHostName); builder.Register(c => new ModuleIdentityLifecycleManager(c.Resolve <IIdentityManager>(), identityBuilder, this.workloadUri)) .As <IModuleIdentityLifecycleManager>() .SingleInstance(); // ICombinedConfigProvider<CombinedDockerConfig> builder.Register( async c => { IConfigSource configSource = await c.Resolve <Task <IConfigSource> >(); return(new CombinedEdgeletConfigProvider(this.dockerAuthConfig, configSource) as ICombinedConfigProvider <CombinedDockerConfig>); }) .As <Task <ICombinedConfigProvider <CombinedDockerConfig> > >() .SingleInstance(); // ICommandFactory builder.Register( async c => { var moduleManager = c.Resolve <IModuleManager>(); var combinedDockerConfigProviderTask = c.Resolve <Task <ICombinedConfigProvider <CombinedDockerConfig> > >(); var configSourceTask = c.Resolve <Task <IConfigSource> >(); var metricsProvider = c.Resolve <IMetricsProvider>(); var loggerFactory = c.Resolve <ILoggerFactory>(); IConfigSource configSource = await configSourceTask; ICombinedConfigProvider <CombinedDockerConfig> combinedDockerConfigProvider = await combinedDockerConfigProviderTask; ICommandFactory factory = new EdgeletCommandFactory <CombinedDockerConfig>(moduleManager, configSource, combinedDockerConfigProvider); factory = new MetricsCommandFactory(factory, metricsProvider); return(new LoggingCommandFactory(factory, loggerFactory) as ICommandFactory); }) .As <Task <ICommandFactory> >() .SingleInstance(); // Task<IRuntimeInfoProvider> builder.Register(c => Task.FromResult(new RuntimeInfoProvider <DockerReportedConfig>(c.Resolve <IModuleManager>()) as IRuntimeInfoProvider)) .As <Task <IRuntimeInfoProvider> >() .SingleInstance(); // Task<IEnvironmentProvider> builder.Register( async c => { var moduleStateStore = await c.Resolve <Task <IEntityStore <string, ModuleState> > >(); var restartPolicyManager = c.Resolve <IRestartPolicyManager>(); IRuntimeInfoProvider runtimeInfoProvider = await c.Resolve <Task <IRuntimeInfoProvider> >(); IEnvironmentProvider dockerEnvironmentProvider = await DockerEnvironmentProvider.CreateAsync(runtimeInfoProvider, moduleStateStore, restartPolicyManager, CancellationToken.None); return(dockerEnvironmentProvider); }) .As <Task <IEnvironmentProvider> >() .SingleInstance(); // SystemResourcesMetrics builder.Register(c => new SystemResourcesMetrics(c.Resolve <IMetricsProvider>(), c.Resolve <IModuleManager>().GetSystemResourcesAsync, this.apiVersion, this.performanceMetricsUpdateFrequency)) .SingleInstance(); }
protected override void Load(ContainerBuilder builder) { // IModuleClientProvider builder.Register(c => new EnvironmentModuleClientProvider(this.upstreamProtocol, this.productInfo)) .As <IModuleClientProvider>() .SingleInstance(); // IModuleManager builder.Register(c => new ModuleManagementHttpClient(this.managementUri)) .As <IModuleManager>() .As <IIdentityManager>() .SingleInstance(); // IModuleIdentityLifecycleManager var identityBuilder = new ModuleIdentityProviderServiceBuilder(this.iotHubHostName, this.deviceId, this.gatewayHostName); builder.Register(c => new ModuleIdentityLifecycleManager(c.Resolve <IIdentityManager>(), identityBuilder, this.workloadUri)) .As <IModuleIdentityLifecycleManager>() .SingleInstance(); // ICombinedConfigProvider<CombinedDockerConfig> builder.Register( async c => { IConfigSource configSource = await c.Resolve <Task <IConfigSource> >(); return(new CombinedEdgeletConfigProvider(this.dockerAuthConfig, configSource) as ICombinedConfigProvider <CombinedDockerConfig>); }) .As <Task <ICombinedConfigProvider <CombinedDockerConfig> > >() .SingleInstance(); // ICommandFactory builder.Register( async c => { var moduleManager = c.Resolve <IModuleManager>(); ICombinedConfigProvider <CombinedDockerConfig> combinedDockerConfigProvider = await c.Resolve <Task <ICombinedConfigProvider <CombinedDockerConfig> > >(); IConfigSource configSource = await c.Resolve <Task <IConfigSource> >(); var edgeletCommandFactory = new EdgeletCommandFactory <CombinedDockerConfig>(moduleManager, configSource, combinedDockerConfigProvider); return(new LoggingCommandFactory(edgeletCommandFactory, c.Resolve <ILoggerFactory>()) as ICommandFactory); }) .As <Task <ICommandFactory> >() .SingleInstance(); // IModuleRuntimeInfoProvider builder.Register(c => new RuntimeInfoProvider <DockerReportedConfig>(c.Resolve <IModuleManager>())) .As <IRuntimeInfoProvider>() .SingleInstance(); // Task<IEnvironmentProvider> builder.Register( async c => { var moduleStateStore = c.Resolve <IEntityStore <string, ModuleState> >(); var restartPolicyManager = c.Resolve <IRestartPolicyManager>(); var runtimeInfoProvider = c.Resolve <IRuntimeInfoProvider>(); IEnvironmentProvider dockerEnvironmentProvider = await DockerEnvironmentProvider.CreateAsync(runtimeInfoProvider, moduleStateStore, restartPolicyManager); return(dockerEnvironmentProvider); }) .As <Task <IEnvironmentProvider> >() .SingleInstance(); }