示例#1
0
 public Task <ICommand> CreateAsync(IModuleWithIdentity module, IRuntimeInfo runtimeInfo) =>
 Task.FromResult(CreateOrUpdateCommand.BuildCreate(
                     this.moduleManager,
                     module.Module,
                     module.ModuleIdentity,
                     this.configSource,
                     this.combinedConfigProvider.GetCombinedConfig(module.Module, runtimeInfo)) as ICommand);
示例#2
0
 public Task <ICommand> CreateAsync(IModuleWithIdentity module, IRuntimeInfo runtimeInfo)
 {
     if (this.checkImagePullBeforeModuleCreate)
     {
         T config = this.combinedConfigProvider.GetCombinedConfig(module.Module, runtimeInfo);
         return(Task.FromResult(
                    new GroupCommand(
                        new PrepareUpdateCommand(this.moduleManager, module.Module, config),
                        CreateOrUpdateCommand.BuildCreate(
                            this.moduleManager,
                            module.Module,
                            module.ModuleIdentity,
                            this.configSource,
                            config,
                            this.edgeDeviceHostname,
                            this.parentEdgeHostname)
                        as ICommand) as ICommand));
     }
     else
     {
         return(Task.FromResult(
                    CreateOrUpdateCommand.BuildCreate(
                        this.moduleManager,
                        module.Module,
                        module.ModuleIdentity,
                        this.configSource,
                        this.combinedConfigProvider.GetCombinedConfig(module.Module, runtimeInfo),
                        this.edgeDeviceHostname,
                        this.parentEdgeHostname)
                    as ICommand));
     }
 }
        void VerifyResult(CreateOrUpdateCommandTestData testData, CreateOrUpdateCommand command)
        {
            Assert.Equal(testData.ModuleName, command.ModuleSpec.Name);
            Assert.Equal(testData.ModuleType, command.ModuleSpec.Type);
            Assert.Equal(testData.ImagePullPolicy, command.ModuleSpec.ImagePullPolicy);
            Assert.Equal(testData.Settings, command.ModuleSpec.Settings);

            List <Models.EnvVar> environmentVariables = command.ModuleSpec.EnvironmentVariables.ToList();

            foreach (string key in testData.EnvironmentVariables.Keys)
            {
                Assert.Equal(testData.EnvironmentVariables[key].Value, environmentVariables.First(v => v.Key.Equals(key)).Value);
            }

            Assert.Equal(testData.EdgeletWorkloadUri, environmentVariables.First(v => v.Key.Equals(Constants.EdgeletWorkloadUriVariableName)).Value);
            Assert.Equal(testData.EdgeletAuthScheme, environmentVariables.First(v => v.Key.Equals(Constants.EdgeletAuthSchemeVariableName)).Value);
            Assert.Equal(testData.ModuleGenerationId, environmentVariables.First(v => v.Key.Equals(Constants.EdgeletModuleGenerationIdVariableName)).Value);
            Assert.Equal(testData.IoTHubHostname, environmentVariables.First(v => v.Key.Equals(Constants.IotHubHostnameVariableName)).Value);
            Assert.Equal(testData.DeviceId, environmentVariables.First(v => v.Key.Equals(Constants.DeviceIdVariableName)).Value);
            Assert.Equal(testData.ModuleId, environmentVariables.First(v => v.Key.Equals(Constants.ModuleIdVariableName)).Value);
            Assert.Equal(LogEventLevel.Information.ToString(), environmentVariables.First(v => v.Key.Equals(Logger.RuntimeLogLevelEnvKey)).Value);
            Assert.Equal(testData.UpstreamProtocol, environmentVariables.First(v => v.Key.Equals(Constants.UpstreamProtocolKey)).Value);
            Assert.Equal(testData.EdgeletApiVersion, environmentVariables.First(v => v.Key.Equals(Constants.EdgeletApiVersionVariableName)).Value);

            if (testData.ModuleId.Equals(Constants.EdgeAgentModuleIdentityName))
            {
                Assert.Equal("iotedged", environmentVariables.First(v => v.Key.Equals(Constants.ModeKey)).Value);
                Assert.Equal(testData.EdgeletManagementUri, environmentVariables.First(v => v.Key.Equals(Constants.EdgeletManagementUriVariableName)).Value);
                Assert.Equal(testData.NetworkId, environmentVariables.First(v => v.Key.Equals(Constants.NetworkIdKey)).Value);
                Assert.Equal(testData.EdgeDeviceHostname, environmentVariables.First(v => v.Key.Equals(Constants.EdgeDeviceHostNameKey)).Value);
                testData.ParentEdgeHostname.ForEach(value =>
                                                    Assert.Equal(value, environmentVariables.First(v => v.Key.Equals(Constants.GatewayHostnameVariableName)).Value));
                Assert.Null(environmentVariables.FirstOrDefault(v => v.Key.Equals(Constants.ParentEdgeHostnameVariableName)));
            }
            else if (testData.ModuleId.Equals(Constants.EdgeHubModuleIdentityName))
            {
                Assert.Null(environmentVariables.FirstOrDefault(v => v.Key.Equals(Constants.ModeKey)));
                Assert.Null(environmentVariables.FirstOrDefault(v => v.Key.Equals(Constants.EdgeletManagementUriVariableName)));
                Assert.Null(environmentVariables.FirstOrDefault(v => v.Key.Equals(Constants.NetworkIdKey)));
                Assert.Equal(testData.EdgeDeviceHostname, environmentVariables.First(v => v.Key.Equals(Constants.EdgeDeviceHostNameKey)).Value);
                testData.ParentEdgeHostname.ForEach(value =>
                                                    Assert.Equal(value, environmentVariables.First(v => v.Key.Equals(Constants.GatewayHostnameVariableName)).Value));
                Assert.Null(environmentVariables.FirstOrDefault(v => v.Key.Equals(Constants.ParentEdgeHostnameVariableName)));
            }
            else
            {
                Assert.Null(environmentVariables.FirstOrDefault(v => v.Key.Equals(Constants.ModeKey)));
                Assert.Null(environmentVariables.FirstOrDefault(v => v.Key.Equals(Constants.EdgeletManagementUriVariableName)));
                Assert.Null(environmentVariables.FirstOrDefault(v => v.Key.Equals(Constants.NetworkIdKey)));
                Assert.Equal(testData.EdgeDeviceHostname, environmentVariables.First(v => v.Key.Equals(Constants.GatewayHostnameVariableName)).Value);
                testData.ParentEdgeHostname.ForEach(value =>
                                                    Assert.Equal(value, environmentVariables.First(v => v.Key.Equals(Constants.ParentEdgeHostnameVariableName)).Value));
                Assert.Null(environmentVariables.FirstOrDefault(v => v.Key.Equals(Constants.EdgeDeviceHostNameKey)));
            }
        }
        async Task <ICommand> UpdateAsync(Option <IModule> current, IModuleWithIdentity next, IRuntimeInfo runtimeInfo, bool start)
        {
            T config = this.combinedConfigProvider.GetCombinedConfig(next.Module, runtimeInfo);

            return(new GroupCommand(
                       new PrepareUpdateCommand(this.moduleManager, next.Module, config),
                       await current.Match(c => this.StopAsync(c), () => Task.FromResult <ICommand>(NullCommand.Instance)),
                       CreateOrUpdateCommand.BuildUpdate(
                           this.moduleManager,
                           next.Module,
                           next.ModuleIdentity,
                           this.configSource,
                           config,
                           start) as ICommand));
        }
        public void VerfiyCreateOrUpdateCommand(CreateOrUpdateCommandTestData testData)
        {
            var mocks = new CreateOrUpdateCommandMocks(testData);

            CreateOrUpdateCommand command = CreateOrUpdateCommand.BuildCreate(
                mocks.ModuleManager.Object,
                mocks.EdgeAgentModule.Object,
                mocks.EdgeAgentModuleIdentity.Object,
                mocks.ConfigSource.Object,
                testData.Settings,
                testData.EdgeDeviceHostname,
                testData.ParentEdgeHostname);

            this.VerifyResult(testData, command);
        }