public void TestSerializationForNotaryContentTrustDefaultValue() { DockerReportedConfig config = new DockerReportedConfig("image1:42", "{}", "sha256:foosha", Option.Maybe(new NotaryContentTrust())); string json = JsonConvert.SerializeObject(config); string expected = "{\"image\":\"image1:42\",\"imageHash\":\"sha256:foosha\",\"createOptions\":\"{}\",\"notaryContentTrust\":{\"disableTOFU\":false}}"; Assert.Equal(expected, json); }
public void TestSerialization() { var createOptions = @"{""Env"": [""k1=v1"", ""k2=v2"", ""k3=v3""], ""HostConfig"": {""PortBindings"": {""43/udp"": [" + string.Join(", ", Enumerable.Repeat(@"{""HostPort"": ""43""}", 50)) + @"], ""42/tcp"": [{""HostPort"": ""42""}]}}}"; var config = new DockerReportedConfig("image1:42", createOptions, "sha256:foosha"); var json = JsonConvert.SerializeObject(config); var expected = "{\"image\":\"image1:42\",\"imageHash\":\"sha256:foosha\",\"createOptions\":\"{\\\"Env\\\":[\\\"k1=v1\\\",\\\"k2=v2\\\",\\\"k3=v3\\\"],\\\"HostConfig\\\":{\\\"PortBindings\\\":{\\\"43/udp\\\":[{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostP\",\"createOptions01\":\"ort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"},{\\\"HostPort\\\":\\\"43\\\"}],\\\"42/tcp\\\":[{\\\"HostPort\\\":\\\"42\\\"}]}}}\"}"; Assert.Equal(expected, json); }
public void TestDeserializationForNotaryContentTrustDefaultValue() { string testConfig = @" { 'image': 'image1:42', 'imageHash': 'sha256:foosha', 'createOptions' : ""{}"", 'notaryContentTrust' : {} }"; DockerReportedConfig config = new DockerReportedConfig("image1:42", "{}", "sha256:foosha", Option.Maybe(new NotaryContentTrust())); DockerReportedConfig expectedConfig = JsonConvert.DeserializeObject <DockerReportedConfig>(testConfig); Assert.Equal(expectedConfig, config); }
public void TestSerializationForNotaryContentTrust() { NotaryContentTrust notaryContentTrust = new NotaryContentTrust { RootJsonPath = "/home/path/module/rootjson", RootID = "45634232423523232423423525253252532523432333", RootCertificatePath = "/home/path/module/rootca", DisableTOFU = true }; DockerReportedConfig config = new DockerReportedConfig("image1:42", "{}", "sha256:foosha", Option.Maybe(notaryContentTrust)); string json = JsonConvert.SerializeObject(config); string expected = "{\"image\":\"image1:42\",\"imageHash\":\"sha256:foosha\",\"createOptions\":\"{}\",\"notaryContentTrust\":{\"rootJsonPath\":\"/home/path/module/rootjson\",\"rootID\":\"45634232423523232423423525253252532523432333\",\"rootCertificatePath\":\"/home/path/module/rootca\",\"disableTOFU\":true}}"; Assert.Equal(expected, json); }
public void TestDeserializationForNotaryContentTrust() { string testConfig = @" { 'image': 'image1:42', 'imageHash': 'sha256:foosha', 'createOptions' : ""{}"", 'notaryContentTrust' : { 'rootJsonPath' : '/home/path/module/rootjson', 'rootID' : '45634232423523232423423525253252532523432333', 'rootCertificatePath' : '/home/path/module/rootca', 'disableTOFU': 'true'} }"; NotaryContentTrust notaryContentTrust = new NotaryContentTrust { RootJsonPath = "/home/path/module/rootjson", RootID = "45634232423523232423423525253252532523432333", RootCertificatePath = "/home/path/module/rootca", DisableTOFU = true }; DockerReportedConfig config = new DockerReportedConfig("image1:42", "{}", "sha256:foosha", Option.Maybe(notaryContentTrust)); DockerReportedConfig expectedConfig = JsonConvert.DeserializeObject <DockerReportedConfig>(testConfig); Assert.Equal(expectedConfig, config); }
public async Task <ModuleSet> GetModulesAsync(CancellationToken token) { IEnumerable <ModuleRuntimeInfo> moduleStatuses = await this.moduleStatusProvider.GetModules(token); var modules = new List <IModule>(); ModuleSet moduleSet = this.deploymentConfig.GetModuleSet(); foreach (ModuleRuntimeInfo moduleRuntimeInfo in moduleStatuses) { if (moduleRuntimeInfo.Type != "docker" || !(moduleRuntimeInfo is ModuleRuntimeInfo <DockerReportedConfig> dockerRuntimeInfo)) { Events.InvalidModuleType(moduleRuntimeInfo); continue; } if (!moduleSet.Modules.TryGetValue(dockerRuntimeInfo.Name, out IModule configModule) || !(configModule is DockerModule dockerModule)) { dockerModule = new DockerModule(dockerRuntimeInfo.Name, string.Empty, ModuleStatus.Unknown, Core.RestartPolicy.Unknown, new DockerConfig(Constants.UnknownImage, new CreateContainerParameters(), Option.None <string>()), ImagePullPolicy.OnCreate, Core.Constants.HighestPriority, new ConfigurationInfo(), null, null); } Option <ModuleState> moduleStateOption = await this.moduleStateStore.Get(moduleRuntimeInfo.Name); ModuleState moduleState = moduleStateOption.GetOrElse(new ModuleState(0, moduleRuntimeInfo.ExitTime.GetOrElse(DateTime.MinValue))); string image = !string.IsNullOrWhiteSpace(dockerRuntimeInfo.Config.Image) ? dockerRuntimeInfo.Config.Image : dockerModule.Config.Image; var dockerReportedConfig = new DockerReportedConfig(image, dockerModule.Config.CreateOptions, dockerRuntimeInfo.Config.ImageHash, dockerModule.Config.Digest); IModule module; switch (moduleRuntimeInfo.Name) { case Core.Constants.EdgeHubModuleName: module = new EdgeHubDockerRuntimeModule( dockerModule.DesiredStatus, dockerModule.RestartPolicy, dockerReportedConfig, (int)dockerRuntimeInfo.ExitCode, moduleRuntimeInfo.Description, moduleRuntimeInfo.StartTime.GetOrElse(DateTime.MinValue), moduleRuntimeInfo.ExitTime.GetOrElse(DateTime.MinValue), moduleState.RestartCount, moduleState.LastRestartTimeUtc, moduleRuntimeInfo.ModuleStatus, dockerModule.ImagePullPolicy, dockerModule.Priority, dockerModule.ConfigurationInfo, dockerModule.Env); break; case Core.Constants.EdgeAgentModuleName: module = new EdgeAgentDockerRuntimeModule( dockerReportedConfig, moduleRuntimeInfo.ModuleStatus, (int)dockerRuntimeInfo.ExitCode, moduleRuntimeInfo.Description, moduleRuntimeInfo.StartTime.GetOrElse(DateTime.MinValue), moduleRuntimeInfo.ExitTime.GetOrElse(DateTime.MinValue), dockerModule.ImagePullPolicy, dockerModule.ConfigurationInfo, dockerModule.Env); break; default: module = new DockerRuntimeModule( moduleRuntimeInfo.Name, dockerModule.Version, dockerModule.DesiredStatus, dockerModule.RestartPolicy, dockerReportedConfig, (int)dockerRuntimeInfo.ExitCode, moduleRuntimeInfo.Description, moduleRuntimeInfo.StartTime.GetOrElse(DateTime.MinValue), moduleRuntimeInfo.ExitTime.GetOrElse(DateTime.MinValue), moduleState.RestartCount, moduleState.LastRestartTimeUtc, moduleRuntimeInfo.ModuleStatus, dockerModule.ImagePullPolicy, dockerModule.Priority, dockerModule.ConfigurationInfo, dockerModule.Env, dockerModule.Secrets); break; } modules.Add(module); } return(ModuleSet.Create(modules.ToArray())); }