From 503d51b1627fc9e594b2f15277e1f987b2e44362 Mon Sep 17 00:00:00 2001 From: Anca Antochi Date: Mon, 21 Dec 2020 13:24:58 -0800 Subject: [PATCH] Add HostConfig properties (#4080) (#4131) cherry-pick from master #4080 --- .../models/DeviceMapping.cs | 22 +++ .../models/HostConfig.cs | 177 ++++++++++++++++++ .../models/RestartPolicy.cs | 19 ++ .../models/RestartPolicyKind.cs | 23 +++ .../models/ThrottleDevice.cs | 19 ++ .../models/Ulimit.cs | 22 +++ .../models/WeightDevice.cs | 19 ++ .../KubernetesModule.cs | 4 +- .../CombinedEdgeletConfigProviderTest.cs | 51 +++++ .../EdgeDeploymentControllerTest.cs | 10 +- .../KubernetesDeploymentMapperTest.cs | 62 +++--- .../pvc/KubernetesPvcMapperTest.cs | 16 +- .../service/KubernetesServiceMapperTest.cs | 2 +- 13 files changed, 399 insertions(+), 47 deletions(-) create mode 100644 edge-agent/src/Microsoft.Azure.Devices.Edge.Agent.Docker/models/DeviceMapping.cs create mode 100644 edge-agent/src/Microsoft.Azure.Devices.Edge.Agent.Docker/models/RestartPolicy.cs create mode 100644 edge-agent/src/Microsoft.Azure.Devices.Edge.Agent.Docker/models/RestartPolicyKind.cs create mode 100644 edge-agent/src/Microsoft.Azure.Devices.Edge.Agent.Docker/models/ThrottleDevice.cs create mode 100644 edge-agent/src/Microsoft.Azure.Devices.Edge.Agent.Docker/models/Ulimit.cs create mode 100644 edge-agent/src/Microsoft.Azure.Devices.Edge.Agent.Docker/models/WeightDevice.cs diff --git a/edge-agent/src/Microsoft.Azure.Devices.Edge.Agent.Docker/models/DeviceMapping.cs b/edge-agent/src/Microsoft.Azure.Devices.Edge.Agent.Docker/models/DeviceMapping.cs new file mode 100644 index 00000000000..47217491454 --- /dev/null +++ b/edge-agent/src/Microsoft.Azure.Devices.Edge.Agent.Docker/models/DeviceMapping.cs @@ -0,0 +1,22 @@ +// Copyright (c) Microsoft. All rights reserved. +namespace Microsoft.Azure.Devices.Edge.Agent.Docker.Models +{ + using System.Collections.Generic; + using Newtonsoft.Json; + using Newtonsoft.Json.Linq; + + public class DeviceMapping + { + [JsonProperty("PathOnHost", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public string PathOnHost { get; set; } + + [JsonProperty("PathInContainer", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public string PathInContainer { get; set; } + + [JsonProperty("CgroupPermissions", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public string CgroupPermissions { get; set; } + + [JsonExtensionData] + public IDictionary OtherProperties { get; set; } + } +} diff --git a/edge-agent/src/Microsoft.Azure.Devices.Edge.Agent.Docker/models/HostConfig.cs b/edge-agent/src/Microsoft.Azure.Devices.Edge.Agent.Docker/models/HostConfig.cs index eba7181d6c6..a0661f1cbe1 100644 --- a/edge-agent/src/Microsoft.Azure.Devices.Edge.Agent.Docker/models/HostConfig.cs +++ b/edge-agent/src/Microsoft.Azure.Devices.Edge.Agent.Docker/models/HostConfig.cs @@ -28,6 +28,183 @@ public class HostConfig [JsonProperty("Privileged", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] public bool Privileged { get; set; } + [JsonProperty("CpuRealtimePeriod", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public long CPURealtimePeriod { get; set; } + + [JsonProperty("CpuQuota", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public long CPUQuota { get; set; } + + [JsonProperty("CpuPeriod", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public long CPUPeriod { get; set; } + + [JsonProperty("BlkioDeviceWriteIOps", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public IList BlkioDeviceWriteIOps { get; set; } + + [JsonProperty("BlkioDeviceReadIOps", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public IList BlkioDeviceReadIOps { get; set; } + + [JsonProperty("BlkioDeviceWriteBps", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public IList BlkioDeviceWriteBps { get; set; } + + [JsonProperty("BlkioDeviceReadBps", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public IList BlkioDeviceReadBps { get; set; } + + [JsonProperty("BlkioWeightDevice", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public IList BlkioWeightDevice { get; set; } + + [JsonProperty("BlkioWeight", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public ushort BlkioWeight { get; set; } + + [JsonProperty("CgroupParent", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public string CgroupParent { get; set; } + + [JsonProperty("NanoCpus", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public long NanoCPUs { get; set; } + + [JsonProperty("Memory", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public long Memory { get; set; } + + [JsonProperty("CpuShares", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public long CPUShares { get; set; } + + [JsonProperty("CpuRealtimeRuntime", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public long CPURealtimeRuntime { get; set; } + + [JsonProperty("CpusetCpus", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public string CpusetCpus { get; set; } + + [JsonProperty("CpusetMems", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public string CpusetMems { get; set; } + + [JsonProperty("Devices", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public IList Devices { get; set; } + + [JsonProperty("DiskQuota", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public long DiskQuota { get; set; } + + [JsonProperty("KernelMemory", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public long KernelMemory { get; set; } + + [JsonProperty("MemoryReservation", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public long MemoryReservation { get; set; } + + [JsonProperty("MemorySwap", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public long MemorySwap { get; set; } + + [JsonProperty("MemorySwappiness", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public long? MemorySwappiness { get; set; } + + [JsonProperty("OomKillDisable", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public bool? OomKillDisable { get; set; } + + [JsonProperty("PidsLimit", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public long? PidsLimit { get; set; } + + [JsonProperty("Ulimits", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public IList Ulimits { get; set; } + + [JsonProperty("CpuCount", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public long CPUCount { get; set; } + + [JsonProperty("CpuPercent", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public long CPUPercent { get; set; } + + [JsonProperty("IOMaximumIOps", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public ulong IOMaximumIOps { get; set; } + + [JsonProperty("IOMaximumBandwidth", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public ulong IOMaximumBandwidth { get; set; } + + [JsonProperty("Isolation", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public string Isolation { get; set; } + + [JsonProperty("ConsoleSize", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public ulong[] ConsoleSize { get; set; } + + [JsonProperty("Runtime", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public string Runtime { get; set; } + + [JsonProperty("Sysctls", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public IDictionary Sysctls { get; set; } + + [JsonProperty("ContainerIDFile", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public string ContainerIDFile { get; set; } + + [JsonProperty("RestartPolicy", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public RestartPolicy RestartPolicy { get; set; } + + [JsonProperty("AutoRemove", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public bool AutoRemove { get; set; } + + [JsonProperty("VolumeDriver", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public string VolumeDriver { get; set; } + + [JsonProperty("VolumesFrom", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public IList VolumesFrom { get; set; } + + [JsonProperty("CapAdd", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public IList CapAdd { get; set; } + + [JsonProperty("CapDrop", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public IList CapDrop { get; set; } + + [JsonProperty("Dns", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public IList DNS { get; set; } + + [JsonProperty("DnsOptions", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public IList DNSOptions { get; set; } + + [JsonProperty("DnsSearch", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public IList DNSSearch { get; set; } + + [JsonProperty("Init", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public bool? Init { get; set; } + + [JsonProperty("ExtraHosts", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public IList ExtraHosts { get; set; } + + [JsonProperty("Cgroup", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public string Cgroup { get; set; } + + [JsonProperty("Links", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public IList Links { get; set; } + + [JsonProperty("OomScoreAdj", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public long OomScoreAdj { get; set; } + + [JsonProperty("PidMode", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public string PidMode { get; set; } + + [JsonProperty("PublishAllPorts", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public bool PublishAllPorts { get; set; } + + [JsonProperty("ReadonlyRootfs", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public bool ReadonlyRootfs { get; set; } + + [JsonProperty("SecurityOpt", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public IList SecurityOpt { get; set; } + + [JsonProperty("StorageOpt", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public IDictionary StorageOpt { get; set; } + + [JsonProperty("Tmpfs", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public IDictionary Tmpfs { get; set; } + + [JsonProperty("UTSMode", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public string UTSMode { get; set; } + + [JsonProperty("UsernsMode", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public string UsernsMode { get; set; } + + [JsonProperty("ShmSize", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public long ShmSize { get; set; } + + [JsonProperty("GroupAdd", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public IList GroupAdd { get; set; } + + [JsonProperty("InitPath", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public string InitPath { get; set; } + [JsonExtensionData] public IDictionary OtherProperties { get; set; } } diff --git a/edge-agent/src/Microsoft.Azure.Devices.Edge.Agent.Docker/models/RestartPolicy.cs b/edge-agent/src/Microsoft.Azure.Devices.Edge.Agent.Docker/models/RestartPolicy.cs new file mode 100644 index 00000000000..414dd5f1ca8 --- /dev/null +++ b/edge-agent/src/Microsoft.Azure.Devices.Edge.Agent.Docker/models/RestartPolicy.cs @@ -0,0 +1,19 @@ +// Copyright (c) Microsoft. All rights reserved. +namespace Microsoft.Azure.Devices.Edge.Agent.Docker.Models +{ + using System.Collections.Generic; + using Newtonsoft.Json; + using Newtonsoft.Json.Linq; + + public class RestartPolicy + { + [JsonProperty("Name", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public RestartPolicyKind Name { get; set; } + + [JsonProperty("MaximumRetryCount", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public long MaximumRetryCount { get; set; } + + [JsonExtensionData] + public IDictionary OtherProperties { get; set; } + } +} diff --git a/edge-agent/src/Microsoft.Azure.Devices.Edge.Agent.Docker/models/RestartPolicyKind.cs b/edge-agent/src/Microsoft.Azure.Devices.Edge.Agent.Docker/models/RestartPolicyKind.cs new file mode 100644 index 00000000000..48ef3fe0e08 --- /dev/null +++ b/edge-agent/src/Microsoft.Azure.Devices.Edge.Agent.Docker/models/RestartPolicyKind.cs @@ -0,0 +1,23 @@ +// Copyright (c) Microsoft. All rights reserved. +namespace Microsoft.Azure.Devices.Edge.Agent.Docker.Models +{ + using Newtonsoft.Json; + + public enum RestartPolicyKind + { + [JsonProperty("")] + Undefined, + + [JsonProperty("no")] + No, + + [JsonProperty("always")] + Always, + + [JsonProperty("on-failure")] + OnFailure, + + [JsonProperty("unless-stopped")] + UnlessStopped + } +} diff --git a/edge-agent/src/Microsoft.Azure.Devices.Edge.Agent.Docker/models/ThrottleDevice.cs b/edge-agent/src/Microsoft.Azure.Devices.Edge.Agent.Docker/models/ThrottleDevice.cs new file mode 100644 index 00000000000..735eb1561e8 --- /dev/null +++ b/edge-agent/src/Microsoft.Azure.Devices.Edge.Agent.Docker/models/ThrottleDevice.cs @@ -0,0 +1,19 @@ +// Copyright (c) Microsoft. All rights reserved. +namespace Microsoft.Azure.Devices.Edge.Agent.Docker.Models +{ + using System.Collections.Generic; + using Newtonsoft.Json; + using Newtonsoft.Json.Linq; + + public class ThrottleDevice + { + [JsonProperty("Path", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public string Path { get; set; } + + [JsonProperty("Rate", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public ulong Rate { get; set; } + + [JsonExtensionData] + public IDictionary OtherProperties { get; set; } + } +} diff --git a/edge-agent/src/Microsoft.Azure.Devices.Edge.Agent.Docker/models/Ulimit.cs b/edge-agent/src/Microsoft.Azure.Devices.Edge.Agent.Docker/models/Ulimit.cs new file mode 100644 index 00000000000..cd4af675abd --- /dev/null +++ b/edge-agent/src/Microsoft.Azure.Devices.Edge.Agent.Docker/models/Ulimit.cs @@ -0,0 +1,22 @@ +// Copyright (c) Microsoft. All rights reserved. +namespace Microsoft.Azure.Devices.Edge.Agent.Docker.Models +{ + using System.Collections.Generic; + using Newtonsoft.Json; + using Newtonsoft.Json.Linq; + + public class Ulimit + { + [JsonProperty("Name", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public string Name { get; set; } + + [JsonProperty("Hard", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public long Hard { get; set; } + + [JsonProperty("Soft", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public long Soft { get; set; } + + [JsonExtensionData] + public IDictionary OtherProperties { get; set; } + } +} diff --git a/edge-agent/src/Microsoft.Azure.Devices.Edge.Agent.Docker/models/WeightDevice.cs b/edge-agent/src/Microsoft.Azure.Devices.Edge.Agent.Docker/models/WeightDevice.cs new file mode 100644 index 00000000000..6b156e506ad --- /dev/null +++ b/edge-agent/src/Microsoft.Azure.Devices.Edge.Agent.Docker/models/WeightDevice.cs @@ -0,0 +1,19 @@ +// Copyright (c) Microsoft. All rights reserved. +namespace Microsoft.Azure.Devices.Edge.Agent.Docker.Models +{ + using System.Collections.Generic; + using Newtonsoft.Json; + using Newtonsoft.Json.Linq; + + public class WeightDevice + { + [JsonProperty("Path", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public string Path { get; set; } + + [JsonProperty("Weight", DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)] + public ushort Weight { get; set; } + + [JsonExtensionData] + public IDictionary OtherProperties { get; set; } + } +} diff --git a/edge-agent/src/Microsoft.Azure.Devices.Edge.Agent.Kubernetes/KubernetesModule.cs b/edge-agent/src/Microsoft.Azure.Devices.Edge.Agent.Kubernetes/KubernetesModule.cs index 983b0df4107..24dd45b010c 100644 --- a/edge-agent/src/Microsoft.Azure.Devices.Edge.Agent.Kubernetes/KubernetesModule.cs +++ b/edge-agent/src/Microsoft.Azure.Devices.Edge.Agent.Kubernetes/KubernetesModule.cs @@ -36,7 +36,7 @@ public KubernetesModule( string version, string type, ModuleStatus status, - RestartPolicy restartPolicy, + Core.RestartPolicy restartPolicy, ConfigurationInfo configurationInfo, IDictionary env, KubernetesConfig settings, @@ -69,7 +69,7 @@ public KubernetesModule( public ModuleStatus DesiredStatus { get; } [JsonProperty(PropertyName = "restartPolicy")] - public RestartPolicy RestartPolicy { get; } + public Core.RestartPolicy RestartPolicy { get; } [JsonProperty(PropertyName = "imagePullPolicy")] public ImagePullPolicy ImagePullPolicy { get; } diff --git a/edge-agent/test/Microsoft.Azure.Devices.Edge.Agent.Edgelet.Docker.Test/CombinedEdgeletConfigProviderTest.cs b/edge-agent/test/Microsoft.Azure.Devices.Edge.Agent.Edgelet.Docker.Test/CombinedEdgeletConfigProviderTest.cs index 1d3db04aba8..6111e32d266 100644 --- a/edge-agent/test/Microsoft.Azure.Devices.Edge.Agent.Edgelet.Docker.Test/CombinedEdgeletConfigProviderTest.cs +++ b/edge-agent/test/Microsoft.Azure.Devices.Edge.Agent.Edgelet.Docker.Test/CombinedEdgeletConfigProviderTest.cs @@ -254,6 +254,57 @@ public void ExtensionDataFields() } } + [Fact] + public void ExtensionDataFields_BackwardCompatibility_LowercaseToUppercase() + { + // Arrange + var runtimeInfo = new Mock>(); + runtimeInfo.SetupGet(ri => ri.Config).Returns(new DockerRuntimeConfig("1.24", string.Empty)); + + // capabilities will remain lowercase because there is no backward compatibility issue for those properties supported after 1.0.9 + string createOptions = "{\"HostConfig\":{\"portBindings\":{\"8883/tcp\":[{\"hostPort\":\"8883\"}]},\"Devices\":[],\"runtime\":\"nvidia\",\"DeviceRequests\":[{\"Driver\":\"\",\"Count\":-1,\"DeviceIDs\":null,\"capabilities\":[[\"gpu\"]],\"Options\":{}}]}}"; + var module = new Mock>(); + module.SetupGet(m => m.Config).Returns(new DockerConfig("nginx:latest", createOptions, Option.None())); + module.SetupGet(m => m.Name).Returns("mod1"); + + IConfigurationRoot configRoot = new ConfigurationBuilder().AddInMemoryCollection( + new Dictionary + { + { Constants.EdgeletWorkloadUriVariableName, "unix:///var/run/iotedgedworkload.sock" }, + { Constants.EdgeletManagementUriVariableName, "unix:///var/run/iotedgedmgmt.sock" }, + { Constants.NetworkIdKey, "testnetwork1" }, + { Constants.EdgeDeviceHostNameKey, "edhk1" } + }).Build(); + var configSource = Mock.Of(s => s.Configuration == configRoot); + + ICombinedConfigProvider provider = new CombinedEdgeletConfigProvider(new[] { new AuthConfig() }, configSource); + + // Act + CombinedDockerConfig config = provider.GetCombinedConfig(module.Object, runtimeInfo.Object); + + // Assert + Assert.NotNull(config.CreateOptions); + Assert.NotNull(config.CreateOptions.HostConfig); + + var otherProperties = config.CreateOptions.HostConfig.OtherProperties; + Assert.NotNull(otherProperties); + + var reserializedHostConfig = Newtonsoft.Json.JsonConvert.SerializeObject(config.CreateOptions.HostConfig); + if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + { + Assert.Equal( + "{\"Binds\":[\"\\\\var\\\\run:\\\\var\\\\run\"],\"PortBindings\":{\"8883/tcp\":[{\"HostPort\":\"8883\"}]},\"Devices\":[],\"Runtime\":\"nvidia\",\"DeviceRequests\":[{\"Driver\":\"\",\"Count\":-1,\"DeviceIDs\":null,\"capabilities\":[[\"gpu\"]],\"Options\":{}}]}", + reserializedHostConfig); + } + else + { + Assert.Equal( + "{\"Binds\":[\"/var/run/iotedgedworkload.sock:/var/run/iotedgedworkload.sock\"],\"PortBindings\":{\"8883/tcp\":[{\"HostPort\":\"8883\"}]},\"Devices\":[],\"Runtime\":\"nvidia\",\"DeviceRequests\":[{\"Driver\":\"\",\"Count\":-1,\"DeviceIDs\":null,\"capabilities\":[[\"gpu\"]],\"Options\":{}}]}", + reserializedHostConfig); + } + } + + static (IDictionary, string) CreateEnv(params (string key, string value)[] pairs) { var dict = new Dictionary(); diff --git a/edge-agent/test/Microsoft.Azure.Devices.Edge.Agent.Kubernetes.IntegrationTest/EdgeDeploymentControllerTest.cs b/edge-agent/test/Microsoft.Azure.Devices.Edge.Agent.Kubernetes.IntegrationTest/EdgeDeploymentControllerTest.cs index 89691aae2e8..bddcd5e9048 100644 --- a/edge-agent/test/Microsoft.Azure.Devices.Edge.Agent.Kubernetes.IntegrationTest/EdgeDeploymentControllerTest.cs +++ b/edge-agent/test/Microsoft.Azure.Devices.Edge.Agent.Kubernetes.IntegrationTest/EdgeDeploymentControllerTest.cs @@ -314,7 +314,7 @@ private KubernetesModule CreateDefaultKubernetesModule(string moduleName) { var createOptions = CreatePodParameters.Create(); KubernetesConfig config = new KubernetesConfig("image", createOptions, Option.None()); - IModule m1 = new DockerModule(moduleName, "v1", ModuleStatus.Running, RestartPolicy.Always, new DockerConfig("test-image:1"), ImagePullPolicy.OnCreate, Core.Constants.DefaultStartupOrder, null, null); + IModule m1 = new DockerModule(moduleName, "v1", ModuleStatus.Running, Core.RestartPolicy.Always, new DockerConfig("test-image:1"), ImagePullPolicy.OnCreate, Core.Constants.DefaultStartupOrder, null, null); return new KubernetesModule(m1, config, new KubernetesModuleOwner("v1", "Deployment", "iotedged", "123")); } @@ -335,7 +335,7 @@ private KubernetesModule CreateKubernetesModuleWithHostConfig(string moduleName, }; var createOptions = CreatePodParameters.Create(hostConfig: hostConfig); KubernetesConfig config = new KubernetesConfig("image", createOptions, Option.None()); - IModule m1 = new DockerModule(moduleName, "v1", ModuleStatus.Running, RestartPolicy.Always, new DockerConfig("test-image:1"), ImagePullPolicy.OnCreate, Core.Constants.DefaultStartupOrder, null, null); + IModule m1 = new DockerModule(moduleName, "v1", ModuleStatus.Running, Core.RestartPolicy.Always, new DockerConfig("test-image:1"), ImagePullPolicy.OnCreate, Core.Constants.DefaultStartupOrder, null, null); return new KubernetesModule(m1, config, new KubernetesModuleOwner("v1", "Deployment", "iotedged", "123")); } @@ -347,7 +347,7 @@ private KubernetesModule CreateKubernetesModuleWithExposedPorts(string moduleNam }; var createOptions = CreatePodParameters.Create(exposedPorts: exposedPorts); KubernetesConfig config = new KubernetesConfig("image", createOptions, Option.None()); - IModule m1 = new DockerModule(moduleName, "v1", ModuleStatus.Running, RestartPolicy.Always, new DockerConfig("test-image:1"), ImagePullPolicy.OnCreate, Core.Constants.DefaultStartupOrder, null, null); + IModule m1 = new DockerModule(moduleName, "v1", ModuleStatus.Running, Core.RestartPolicy.Always, new DockerConfig("test-image:1"), ImagePullPolicy.OnCreate, Core.Constants.DefaultStartupOrder, null, null); return new KubernetesModule(m1, config, new KubernetesModuleOwner("v1", "Deployment", "iotedged", "123")); } @@ -372,7 +372,7 @@ private KubernetesModule CreateKubernetesModuleWithHostconfigAndExposedPorts(str }; var createOptions = CreatePodParameters.Create(hostConfig: hostConfig, exposedPorts: exposedPorts); KubernetesConfig config = new KubernetesConfig("image", createOptions, Option.None()); - IModule m1 = new DockerModule(moduleName, "v1", ModuleStatus.Running, RestartPolicy.Always, new DockerConfig("test-image:1"), ImagePullPolicy.OnCreate, Core.Constants.DefaultStartupOrder, null, null); + IModule m1 = new DockerModule(moduleName, "v1", ModuleStatus.Running, Core.RestartPolicy.Always, new DockerConfig("test-image:1"), ImagePullPolicy.OnCreate, Core.Constants.DefaultStartupOrder, null, null); return new KubernetesModule(m1, config, new KubernetesModuleOwner("v1", "Deployment", "iotedged", "123")); } @@ -380,7 +380,7 @@ private KubernetesModule CreateKubernetesModuleWithImageName(string moduleName, { var createOptions = CreatePodParameters.Create(); KubernetesConfig config = new KubernetesConfig("image", createOptions, Option.None()); - IModule m1 = new DockerModule(moduleName, "v1", ModuleStatus.Running, RestartPolicy.Always, new DockerConfig(newImage), ImagePullPolicy.OnCreate, Core.Constants.DefaultStartupOrder, null, null); + IModule m1 = new DockerModule(moduleName, "v1", ModuleStatus.Running, Core.RestartPolicy.Always, new DockerConfig(newImage), ImagePullPolicy.OnCreate, Core.Constants.DefaultStartupOrder, null, null); return new KubernetesModule(m1, config, new KubernetesModuleOwner("v1", "Deployment", "iotedged", "123")); } diff --git a/edge-agent/test/Microsoft.Azure.Devices.Edge.Agent.Kubernetes.Test/KubernetesDeploymentMapperTest.cs b/edge-agent/test/Microsoft.Azure.Devices.Edge.Agent.Kubernetes.Test/KubernetesDeploymentMapperTest.cs index f00d8dc52af..d6c1bc9bd27 100644 --- a/edge-agent/test/Microsoft.Azure.Devices.Edge.Agent.Kubernetes.Test/KubernetesDeploymentMapperTest.cs +++ b/edge-agent/test/Microsoft.Azure.Devices.Edge.Agent.Kubernetes.Test/KubernetesDeploymentMapperTest.cs @@ -62,7 +62,7 @@ public void EmptyIsNotAllowedAsPodAnnotation() { string.Empty, "test" } }; var config = new KubernetesConfig("image", CreatePodParameters.Create(labels: labels), Option.None()); - var docker = new DockerModule("module1", "v1", ModuleStatus.Running, RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); + var docker = new DockerModule("module1", "v1", ModuleStatus.Running, Core.RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); var module = new KubernetesModule(docker, config, EdgeletModuleOwner); var moduleLabels = new Dictionary(); var mapper = CreateMapper(); @@ -75,7 +75,7 @@ public void SimpleDeploymentCreationHappyPath() { var identity = new ModuleIdentity("hostname", "deviceid", "Module1", Mock.Of()); var config = new KubernetesConfig("image", CreatePodParameters.Create(), Option.None()); - var docker = new DockerModule("module1", "v1", ModuleStatus.Running, RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); + var docker = new DockerModule("module1", "v1", ModuleStatus.Running, Core.RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); var module = new KubernetesModule(docker, config, EdgeletModuleOwner); var labels = new Dictionary(); var mapper = CreateMapper(); @@ -94,7 +94,7 @@ public void SimpleDeploymentStoppedHasZeroReplicas() { var identity = new ModuleIdentity("hostname", "deviceid", "Module1", Mock.Of()); var config = new KubernetesConfig("image", CreatePodParameters.Create(), Option.None()); - var docker = new DockerModule("module1", "v1", ModuleStatus.Stopped, RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); + var docker = new DockerModule("module1", "v1", ModuleStatus.Stopped, Core.RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); var module = new KubernetesModule(docker, config, EdgeletModuleOwner); var labels = new Dictionary(); var mapper = CreateMapper(); @@ -125,7 +125,7 @@ public void ValidatePodPropertyTranslation() Binds = new List { "/home/blah:/home/blah2:ro" } }; var config = new KubernetesConfig("image", CreatePodParameters.Create(labels: labels, hostConfig: hostConfig), Option.None()); - var docker = new DockerModule("module1", "v1", ModuleStatus.Running, RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); + var docker = new DockerModule("module1", "v1", ModuleStatus.Running, Core.RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); var module = new KubernetesModule(docker, config, EdgeletModuleOwner); var moduleLabels = new Dictionary(); var mapper = CreateMapper(); @@ -178,7 +178,7 @@ public void PvcMappingByDefault() var labels = new Dictionary(); var hostConfig = VolumeMountHostConfig; var config = new KubernetesConfig("image", CreatePodParameters.Create(labels: labels, hostConfig: hostConfig), Option.None()); - var docker = new DockerModule("module1", "v1", ModuleStatus.Running, RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); + var docker = new DockerModule("module1", "v1", ModuleStatus.Running, Core.RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); var module = new KubernetesModule(docker, config, EdgeletModuleOwner); var mapper = CreateMapper(storageClassName: null); var deployment = mapper.CreateDeployment(identity, module, labels); @@ -201,7 +201,7 @@ public void PvcMappingForVolumeNameVolume() var labels = new Dictionary(); var hostConfig = VolumeMountHostConfig; var config = new KubernetesConfig("image", CreatePodParameters.Create(labels: labels, hostConfig: hostConfig), Option.None()); - var docker = new DockerModule("module1", "v1", ModuleStatus.Running, RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); + var docker = new DockerModule("module1", "v1", ModuleStatus.Running, Core.RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); var module = new KubernetesModule(docker, config, EdgeletModuleOwner); var mapper = CreateMapper(true, null); @@ -226,7 +226,7 @@ public void PvcMappingForStorageClassVolume() var labels = new Dictionary(); var hostConfig = VolumeMountHostConfig; var config = new KubernetesConfig("image", CreatePodParameters.Create(labels: labels, hostConfig: hostConfig), Option.None()); - var docker = new DockerModule("module1", "v1", ModuleStatus.Running, RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); + var docker = new DockerModule("module1", "v1", ModuleStatus.Running, Core.RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); var module = new KubernetesModule(docker, config, EdgeletModuleOwner); var mapper = CreateMapper(); @@ -250,7 +250,7 @@ public void PvcMappingForDefaultStorageClassVolume() var labels = new Dictionary(); var hostConfig = VolumeMountHostConfig; var config = new KubernetesConfig("image", CreatePodParameters.Create(labels: labels, hostConfig: hostConfig), Option.None()); - var docker = new DockerModule("module1", "v1", ModuleStatus.Running, RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); + var docker = new DockerModule("module1", "v1", ModuleStatus.Running, Core.RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); var module = new KubernetesModule(docker, config, EdgeletModuleOwner); var mapper = CreateMapper(); @@ -305,7 +305,7 @@ public void PvcMappingForPVVolumeExtended() }; var config = new KubernetesConfig("image", CreatePodParameters.Create(volumes: volumes, hostConfig: hostConfig), Option.None()); - var docker = new DockerModule("module1", "v1", ModuleStatus.Running, RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); + var docker = new DockerModule("module1", "v1", ModuleStatus.Running, Core.RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); var module = new KubernetesModule(docker, config, EdgeletModuleOwner); var mapper = CreateMapper(); @@ -322,7 +322,7 @@ public void PvcMappingForPVVolumeExtended() public void AppliesNodeSelectorFromCreateOptionsToPodSpec() { var identity = new ModuleIdentity("hostname", "deviceid", "Module1", Mock.Of()); - var docker = new DockerModule("module1", "v1", ModuleStatus.Running, RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); + var docker = new DockerModule("module1", "v1", ModuleStatus.Running, Core.RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); IDictionary nodeSelector = new Dictionary { ["disktype"] = "ssd" @@ -341,7 +341,7 @@ public void AppliesNodeSelectorFromCreateOptionsToPodSpec() public void LeaveNodeSelectorEmptyWhenNothingProvidedInCreateOptions() { var identity = new ModuleIdentity("hostname", "deviceid", "Module1", Mock.Of()); - var docker = new DockerModule("module1", "v1", ModuleStatus.Running, RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); + var docker = new DockerModule("module1", "v1", ModuleStatus.Running, Core.RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); var config = new KubernetesConfig("image", CreatePodParameters.Create(), Option.None()); var module = new KubernetesModule(docker, config, EdgeletModuleOwner); var labels = new Dictionary(); @@ -356,7 +356,7 @@ public void LeaveNodeSelectorEmptyWhenNothingProvidedInCreateOptions() public void AppliesResourcesFromCreateOptionsToContainerSpec() { var identity = new ModuleIdentity("hostname", "deviceid", "Module1", Mock.Of()); - var docker = new DockerModule("module1", "v1", ModuleStatus.Running, RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); + var docker = new DockerModule("module1", "v1", ModuleStatus.Running, Core.RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); var resources = new V1ResourceRequirements( new Dictionary { @@ -386,7 +386,7 @@ public void AppliesResourcesFromCreateOptionsToContainerSpec() public void LeaveResourcesEmptyWhenNothingProvidedInCreateOptions() { var identity = new ModuleIdentity("hostname", "deviceid", "Module1", Mock.Of()); - var docker = new DockerModule("module1", "v1", ModuleStatus.Running, RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); + var docker = new DockerModule("module1", "v1", ModuleStatus.Running, Core.RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); var config = new KubernetesConfig("image", CreatePodParameters.Create(), Option.None()); var module = new KubernetesModule(docker, config, EdgeletModuleOwner); var labels = new Dictionary(); @@ -402,7 +402,7 @@ public void LeaveResourcesEmptyWhenNothingProvidedInCreateOptions() public void AppliesVolumesFromCreateOptionsToContainerSpec() { var identity = new ModuleIdentity("hostname", "deviceid", "Module1", Mock.Of()); - var docker = new DockerModule("module1", "v1", ModuleStatus.Running, RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); + var docker = new DockerModule("module1", "v1", ModuleStatus.Running, Core.RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); var volumes = new[] { new KubernetesModuleVolumeSpec( @@ -438,7 +438,7 @@ public void AppliesVolumesFromCreateOptionsToContainerSpec() public void AddsVolumesFromCreateOptionsToContainerSpecEvenIfTheyOverrideExistingOnes() { var identity = new ModuleIdentity("hostname", "deviceid", "Module1", Mock.Of()); - var docker = new DockerModule("module1", "v1", ModuleStatus.Running, RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); + var docker = new DockerModule("module1", "v1", ModuleStatus.Running, Core.RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); var volumes = new[] { new KubernetesModuleVolumeSpec( @@ -474,7 +474,7 @@ public void AddsVolumesFromCreateOptionsToContainerSpecEvenIfTheyOverrideExistin public void LeaveVolumesIntactWhenNothingProvidedInCreateOptions() { var identity = new ModuleIdentity("hostname", "deviceid", "Module1", Mock.Of()); - var docker = new DockerModule("module1", "v1", ModuleStatus.Running, RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); + var docker = new DockerModule("module1", "v1", ModuleStatus.Running, Core.RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); var config = new KubernetesConfig("image", CreatePodParameters.Create(), Option.None()); var module = new KubernetesModule(docker, config, EdgeletModuleOwner); var labels = new Dictionary(); @@ -495,7 +495,7 @@ public void PassImagePullSecretsInPodSpecForProxyAndModuleContainers() { var identity = new ModuleIdentity("hostname", "deviceid", "Module1", Mock.Of()); var config = new KubernetesConfig("image", CreatePodParameters.Create(), Option.Some(new AuthConfig("user-registry1"))); - var module = new KubernetesModule("module1", "v1", "docker", ModuleStatus.Running, RestartPolicy.Always, DefaultConfigurationInfo, EnvVarsDict, config, ImagePullPolicy.OnCreate, EdgeletModuleOwner); + var module = new KubernetesModule("module1", "v1", "docker", ModuleStatus.Running, Core.RestartPolicy.Always, DefaultConfigurationInfo, EnvVarsDict, config, ImagePullPolicy.OnCreate, EdgeletModuleOwner); var labels = new Dictionary(); var mapper = CreateMapper(proxyImagePullSecretName: "user-registry2"); @@ -511,7 +511,7 @@ public void PassOnlyOneImagePullSecretInPodSpecIfProxyAndModuleContainersHasTheS { var identity = new ModuleIdentity("hostname", "deviceid", "Module1", Mock.Of()); var config = new KubernetesConfig("image", CreatePodParameters.Create(), Option.Some(new AuthConfig("user-registry1"))); - var module = new KubernetesModule("module1", "v1", "docker", ModuleStatus.Running, RestartPolicy.Always, DefaultConfigurationInfo, EnvVarsDict, config, ImagePullPolicy.OnCreate, EdgeletModuleOwner); + var module = new KubernetesModule("module1", "v1", "docker", ModuleStatus.Running, Core.RestartPolicy.Always, DefaultConfigurationInfo, EnvVarsDict, config, ImagePullPolicy.OnCreate, EdgeletModuleOwner); var labels = new Dictionary(); var mapper = CreateMapper(proxyImagePullSecretName: "user-registry1"); @@ -526,7 +526,7 @@ public void RunAsNonRootAndRunAsUser1000SecurityPolicyWhenSettingSet() { var identity = new ModuleIdentity("hostname", "deviceid", "Module1", Mock.Of()); var config = new KubernetesConfig("image", CreatePodParameters.Create(), Option.Some(new AuthConfig("user-registry1"))); - var module = new KubernetesModule("module1", "v1", "docker", ModuleStatus.Running, RestartPolicy.Always, DefaultConfigurationInfo, EnvVarsDict, config, ImagePullPolicy.OnCreate, EdgeletModuleOwner); + var module = new KubernetesModule("module1", "v1", "docker", ModuleStatus.Running, Core.RestartPolicy.Always, DefaultConfigurationInfo, EnvVarsDict, config, ImagePullPolicy.OnCreate, EdgeletModuleOwner); var labels = new Dictionary(); var mapper = CreateMapper(runAsNonRoot: true); @@ -543,7 +543,7 @@ public void PodSecurityContextFromCreateOptionsOverridesDefaultRunAsNonRootOptio var identity = new ModuleIdentity("hostname", "deviceid", "Module1", Mock.Of()); var securityContext = new V1PodSecurityContext { RunAsNonRoot = true, RunAsUser = 0 }; var config = new KubernetesConfig("image", CreatePodParameters.Create(securityContext: securityContext), Option.Some(new AuthConfig("user-registry1"))); - var module = new KubernetesModule("module1", "v1", "docker", ModuleStatus.Running, RestartPolicy.Always, DefaultConfigurationInfo, EnvVarsDict, config, ImagePullPolicy.OnCreate, EdgeletModuleOwner); + var module = new KubernetesModule("module1", "v1", "docker", ModuleStatus.Running, Core.RestartPolicy.Always, DefaultConfigurationInfo, EnvVarsDict, config, ImagePullPolicy.OnCreate, EdgeletModuleOwner); var labels = new Dictionary(); var mapper = CreateMapper(runAsNonRoot: true); @@ -560,7 +560,7 @@ public void ApplyPodSecurityContextFromCreateOptionsWhenProvided() var identity = new ModuleIdentity("hostname", "deviceid", "Module1", Mock.Of()); var securityContext = new V1PodSecurityContext { RunAsNonRoot = true, RunAsUser = 20001 }; var config = new KubernetesConfig("image", CreatePodParameters.Create(securityContext: securityContext), Option.Some(new AuthConfig("user-registry1"))); - var module = new KubernetesModule("module1", "v1", "docker", ModuleStatus.Running, RestartPolicy.Always, DefaultConfigurationInfo, EnvVarsDict, config, ImagePullPolicy.OnCreate, EdgeletModuleOwner); + var module = new KubernetesModule("module1", "v1", "docker", ModuleStatus.Running, Core.RestartPolicy.Always, DefaultConfigurationInfo, EnvVarsDict, config, ImagePullPolicy.OnCreate, EdgeletModuleOwner); var labels = new Dictionary(); var mapper = CreateMapper(); @@ -576,7 +576,7 @@ public void LeavesStrategyEmptyWhenNotProvided() { var identity = new ModuleIdentity("hostname", "deviceid", "Module1", Mock.Of()); var config = new KubernetesConfig("image", CreatePodParameters.Create(), Option.Some(new AuthConfig("user-registry1"))); - var module = new KubernetesModule("module1", "v1", "docker", ModuleStatus.Running, RestartPolicy.Always, DefaultConfigurationInfo, EnvVarsDict, config, ImagePullPolicy.OnCreate, EdgeletModuleOwner); + var module = new KubernetesModule("module1", "v1", "docker", ModuleStatus.Running, Core.RestartPolicy.Always, DefaultConfigurationInfo, EnvVarsDict, config, ImagePullPolicy.OnCreate, EdgeletModuleOwner); var labels = new Dictionary(); var mapper = CreateMapper(); @@ -591,7 +591,7 @@ public void ApplyDeploymentStrategyWhenProvided() var identity = new ModuleIdentity("hostname", "deviceid", "Module1", Mock.Of()); var deploymentStrategy = new V1DeploymentStrategy { Type = "Recreate" }; var config = new KubernetesConfig("image", CreatePodParameters.Create(deploymentStrategy: deploymentStrategy), Option.Some(new AuthConfig("user-registry1"))); - var module = new KubernetesModule("module1", "v1", "docker", ModuleStatus.Running, RestartPolicy.Always, DefaultConfigurationInfo, EnvVarsDict, config, ImagePullPolicy.OnCreate, EdgeletModuleOwner); + var module = new KubernetesModule("module1", "v1", "docker", ModuleStatus.Running, Core.RestartPolicy.Always, DefaultConfigurationInfo, EnvVarsDict, config, ImagePullPolicy.OnCreate, EdgeletModuleOwner); var labels = new Dictionary(); var mapper = CreateMapper(); @@ -605,7 +605,7 @@ public void NoCmdOptionsNoContainerArgs() { var identity = new ModuleIdentity("hostname", "deviceid", "Module1", Mock.Of()); var config = new KubernetesConfig("image", CreatePodParameters.Create(), Option.Some(new AuthConfig("user-registry1"))); - var module = new KubernetesModule("module1", "v1", "docker", ModuleStatus.Running, RestartPolicy.Always, DefaultConfigurationInfo, EnvVarsDict, config, ImagePullPolicy.OnCreate, EdgeletModuleOwner); + var module = new KubernetesModule("module1", "v1", "docker", ModuleStatus.Running, Core.RestartPolicy.Always, DefaultConfigurationInfo, EnvVarsDict, config, ImagePullPolicy.OnCreate, EdgeletModuleOwner); var labels = new Dictionary(); var mapper = CreateMapper(); @@ -623,7 +623,7 @@ public void CmdOptionsContainerArgs() var cmd = new List { "argument1", "argument2" }; var identity = new ModuleIdentity("hostname", "deviceid", "Module1", Mock.Of()); var config = new KubernetesConfig("image", CreatePodParameters.Create(cmd: cmd), Option.Some(new AuthConfig("user-registry1"))); - var module = new KubernetesModule("module1", "v1", "docker", ModuleStatus.Running, RestartPolicy.Always, DefaultConfigurationInfo, EnvVarsDict, config, ImagePullPolicy.OnCreate, EdgeletModuleOwner); + var module = new KubernetesModule("module1", "v1", "docker", ModuleStatus.Running, Core.RestartPolicy.Always, DefaultConfigurationInfo, EnvVarsDict, config, ImagePullPolicy.OnCreate, EdgeletModuleOwner); var labels = new Dictionary(); var mapper = CreateMapper(); @@ -642,7 +642,7 @@ public void EntrypointOptionsContainerCommands() var entrypoint = new List { "command", "argument-a" }; var identity = new ModuleIdentity("hostname", "deviceid", "Module1", Mock.Of()); var config = new KubernetesConfig("image", CreatePodParameters.Create(entrypoint: entrypoint), Option.Some(new AuthConfig("user-registry1"))); - var module = new KubernetesModule("module1", "v1", "docker", ModuleStatus.Running, RestartPolicy.Always, DefaultConfigurationInfo, EnvVarsDict, config, ImagePullPolicy.OnCreate, EdgeletModuleOwner); + var module = new KubernetesModule("module1", "v1", "docker", ModuleStatus.Running, Core.RestartPolicy.Always, DefaultConfigurationInfo, EnvVarsDict, config, ImagePullPolicy.OnCreate, EdgeletModuleOwner); var labels = new Dictionary(); var mapper = CreateMapper(); @@ -660,7 +660,7 @@ public void WorkingDirOptionsContainerWorkingDir() { var identity = new ModuleIdentity("hostname", "deviceid", "Module1", Mock.Of()); var config = new KubernetesConfig("image", CreatePodParameters.Create(workingDir: "/tmp/working"), Option.Some(new AuthConfig("user-registry1"))); - var module = new KubernetesModule("module1", "v1", "docker", ModuleStatus.Running, RestartPolicy.Always, DefaultConfigurationInfo, EnvVarsDict, config, ImagePullPolicy.OnCreate, EdgeletModuleOwner); + var module = new KubernetesModule("module1", "v1", "docker", ModuleStatus.Running, Core.RestartPolicy.Always, DefaultConfigurationInfo, EnvVarsDict, config, ImagePullPolicy.OnCreate, EdgeletModuleOwner); var labels = new Dictionary(); var mapper = CreateMapper(); @@ -676,7 +676,7 @@ public void EdgeAgentEnvSettingsHaveLotsOfStuff() { var identity = new ModuleIdentity("hostname", "deviceid", "$edgeAgent", Mock.Of()); var config = new KubernetesConfig("image", CreatePodParameters.Create(), Option.Some(new AuthConfig("user-registry1"))); - var module = new KubernetesModule("edgeAgent", "v1", "docker", ModuleStatus.Running, RestartPolicy.Always, DefaultConfigurationInfo, EnvVarsDict, config, ImagePullPolicy.OnCreate, EdgeletModuleOwner); + var module = new KubernetesModule("edgeAgent", "v1", "docker", ModuleStatus.Running, Core.RestartPolicy.Always, DefaultConfigurationInfo, EnvVarsDict, config, ImagePullPolicy.OnCreate, EdgeletModuleOwner); var labels = new Dictionary(); var features = new Dictionary { @@ -720,7 +720,7 @@ public void NoIpcModeDeploymentCreation() { var identity = new ModuleIdentity("hostname", "deviceid", "Module1", Mock.Of()); var config = new KubernetesConfig("image", CreatePodParameters.Create(), Option.None()); - var docker = new DockerModule("module1", "v1", ModuleStatus.Running, RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); + var docker = new DockerModule("module1", "v1", ModuleStatus.Running, Core.RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); var module = new KubernetesModule(docker, config, EdgeletModuleOwner); var labels = new Dictionary(); var mapper = CreateMapper(); @@ -736,7 +736,7 @@ public void HostIpcModeDeploymentCreation() { var identity = new ModuleIdentity("hostname", "deviceid", "Module1", Mock.Of()); var config = new KubernetesConfig("image", CreatePodParameters.Create(hostConfig: HostIpcModeHostConfig), Option.None()); - var docker = new DockerModule("module1", "v1", ModuleStatus.Running, RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); + var docker = new DockerModule("module1", "v1", ModuleStatus.Running, Core.RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); var module = new KubernetesModule(docker, config, EdgeletModuleOwner); var labels = new Dictionary(); var mapper = CreateMapper(); @@ -752,7 +752,7 @@ public void PrivateIpcModeDeploymentCreation() { var identity = new ModuleIdentity("hostname", "deviceid", "Module1", Mock.Of()); var config = new KubernetesConfig("image", CreatePodParameters.Create(hostConfig: PrivateIpcModeHostConfig), Option.None()); - var docker = new DockerModule("module1", "v1", ModuleStatus.Running, RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); + var docker = new DockerModule("module1", "v1", ModuleStatus.Running, Core.RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); var module = new KubernetesModule(docker, config, EdgeletModuleOwner); var labels = new Dictionary(); var mapper = CreateMapper(); diff --git a/edge-agent/test/Microsoft.Azure.Devices.Edge.Agent.Kubernetes.Test/edgedeployment/pvc/KubernetesPvcMapperTest.cs b/edge-agent/test/Microsoft.Azure.Devices.Edge.Agent.Kubernetes.Test/edgedeployment/pvc/KubernetesPvcMapperTest.cs index e82eb7e719b..e20cd8aa72f 100644 --- a/edge-agent/test/Microsoft.Azure.Devices.Edge.Agent.Kubernetes.Test/edgedeployment/pvc/KubernetesPvcMapperTest.cs +++ b/edge-agent/test/Microsoft.Azure.Devices.Edge.Agent.Kubernetes.Test/edgedeployment/pvc/KubernetesPvcMapperTest.cs @@ -76,7 +76,7 @@ public class KubernetesPvcMapperTest public void NullMountsNoClaims() { var config = new KubernetesConfig("image", CreatePodParameters.Create(hostConfig: VolumeNullMount), Option.None()); - var docker = new DockerModule("module1", "v1", ModuleStatus.Running, RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); + var docker = new DockerModule("module1", "v1", ModuleStatus.Running, Core.RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); var module = new KubernetesModule(docker, config, EdgeletModuleOwner); var mapper = new KubernetesPvcMapper(false, "storage", 1); @@ -89,7 +89,7 @@ public void NullMountsNoClaims() public void NoMountsNoClaims() { var config = new KubernetesConfig("image", CreatePodParameters.Create(), Option.None()); - var docker = new DockerModule("module1", "v1", ModuleStatus.Running, RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); + var docker = new DockerModule("module1", "v1", ModuleStatus.Running, Core.RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); var module = new KubernetesModule(docker, config, EdgeletModuleOwner); var mapper = new KubernetesPvcMapper(false, "storage", 1); @@ -102,7 +102,7 @@ public void NoMountsNoClaims() public void EmptyDirMappingForVolume() { var config = new KubernetesConfig("image", CreatePodParameters.Create(hostConfig: VolumeMountHostConfig), Option.None()); - var docker = new DockerModule("module1", "v1", ModuleStatus.Running, RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); + var docker = new DockerModule("module1", "v1", ModuleStatus.Running, Core.RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); var module = new KubernetesModule(docker, config, EdgeletModuleOwner); var mapper = new KubernetesPvcMapper(false, null, 0); @@ -115,7 +115,7 @@ public void EmptyDirMappingForVolume() public void EmptyDirMappingForVolume2() { var config = new KubernetesConfig("image", CreatePodParameters.Create(hostConfig: VolumeMountHostConfig), Option.None()); - var docker = new DockerModule("module1", "v1", ModuleStatus.Running, RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); + var docker = new DockerModule("module1", "v1", ModuleStatus.Running, Core.RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); var module = new KubernetesModule(docker, config, EdgeletModuleOwner); var mapper = new KubernetesPvcMapper(false, null, 0); @@ -128,7 +128,7 @@ public void EmptyDirMappingForVolume2() public void DefaultStorageClassMappingForVolume() { var config = new KubernetesConfig("image", CreatePodParameters.Create(hostConfig: VolumeMountHostConfig), Option.None()); - var docker = new DockerModule("module1", "v1", ModuleStatus.Running, RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); + var docker = new DockerModule("module1", "v1", ModuleStatus.Running, Core.RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); var module = new KubernetesModule(docker, config, EdgeletModuleOwner); var mapper = new KubernetesPvcMapper(false, string.Empty, 10); var resourceQuantity = new ResourceQuantity("10Mi"); @@ -165,7 +165,7 @@ public void DefaultStorageClassMappingForVolume() public void StorageClassMappingForVolume() { var config = new KubernetesConfig("image", CreatePodParameters.Create(hostConfig: VolumeMountHostConfig), Option.None()); - var docker = new DockerModule("module1", "v1", ModuleStatus.Running, RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); + var docker = new DockerModule("module1", "v1", ModuleStatus.Running, Core.RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); var module = new KubernetesModule(docker, config, EdgeletModuleOwner); var mapper = new KubernetesPvcMapper(false, "default", 10); var resourceQuantity = new ResourceQuantity("10Mi"); @@ -202,7 +202,7 @@ public void StorageClassMappingForVolume() public void VolumeNameMappingForVolume() { var config = new KubernetesConfig("image", CreatePodParameters.Create(hostConfig: VolumeMountHostConfig), Option.None()); - var docker = new DockerModule("module1", "v1", ModuleStatus.Running, RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); + var docker = new DockerModule("module1", "v1", ModuleStatus.Running, Core.RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); var module = new KubernetesModule(docker, config, EdgeletModuleOwner); var mapper = new KubernetesPvcMapper(true, "storage-class", 37); var resourceQuantity = new ResourceQuantity("37Mi"); @@ -239,7 +239,7 @@ public void VolumeNameMappingForVolume() public void PreferVolumeNameMappingForVolume() { var config = new KubernetesConfig("image", CreatePodParameters.Create(hostConfig: VolumeMountHostConfig1), Option.None()); - var docker = new DockerModule("module1", "v1", ModuleStatus.Running, RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); + var docker = new DockerModule("module1", "v1", ModuleStatus.Running, Core.RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); var module = new KubernetesModule(docker, config, EdgeletModuleOwner); var mapper = new KubernetesPvcMapper(true, "storageclass", 1); var resourceQuantity = new ResourceQuantity("1Mi"); diff --git a/edge-agent/test/Microsoft.Azure.Devices.Edge.Agent.Kubernetes.Test/edgedeployment/service/KubernetesServiceMapperTest.cs b/edge-agent/test/Microsoft.Azure.Devices.Edge.Agent.Kubernetes.Test/edgedeployment/service/KubernetesServiceMapperTest.cs index a65164a4208..b99eaadaeee 100644 --- a/edge-agent/test/Microsoft.Azure.Devices.Edge.Agent.Kubernetes.Test/edgedeployment/service/KubernetesServiceMapperTest.cs +++ b/edge-agent/test/Microsoft.Azure.Devices.Edge.Agent.Kubernetes.Test/edgedeployment/service/KubernetesServiceMapperTest.cs @@ -54,7 +54,7 @@ public class KubernetesServiceMapperTest static KubernetesModule CreateKubernetesModule(CreatePodParameters podParameters) { var config = new KubernetesConfig("image", podParameters, Option.None()); - var docker = new DockerModule("module1", "v1", ModuleStatus.Running, RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); + var docker = new DockerModule("module1", "v1", ModuleStatus.Running, Core.RestartPolicy.Always, Config1, ImagePullPolicy.OnCreate, Constants.DefaultStartupOrder, DefaultConfigurationInfo, EnvVarsDict); var owner = new KubernetesModuleOwner("v1", "Owner", "an-owner", "a-uid"); return new KubernetesModule(docker, config, owner); }