Skip to content

Commit 96c4a87

Browse files
authored
Install iptables if it doesn't exist (#461)
* add AwsLinux implementation and artifcacts * Update VERSION Signed-off-by: v-safilho <[email protected]> * add iptables installation if it is not installed * changing the solution to use profile settings file * fixing fortran version and iptables instalation * resolving iptables installation issue * install iptables for AwsLinux in dnfinstallation * add linux distro log * add InstallAwsLinuxPackagesAsync and linuxDistributionInfo log * typo fix * simple AddAwsLinuxPackages * must include iptables even if dnf package list is null * awslinux list command treatment * awslinux list workaround * Update VERSION Signed-off-by: v-safilho <[email protected]> --------- Signed-off-by: v-safilho <[email protected]>
1 parent 24384b1 commit 96c4a87

File tree

8 files changed

+57
-12
lines changed

8 files changed

+57
-12
lines changed

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.16.32
1+
1.16.33

src/VirtualClient/VirtualClient.Dependencies/CompilerInstallation.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,6 @@ private async Task InstallGccAsync(string gccVersion, EventContext telemetryCont
236236

237237
case LinuxDistribution.CentOS8:
238238
case LinuxDistribution.RHEL8:
239-
case LinuxDistribution.AwsLinux:
240239
if (string.IsNullOrEmpty(gccVersion) && string.IsNullOrEmpty(installedVersion))
241240
{
242241
await this.ExecuteCommandAsync("dnf", "install kernel-headers kernel-devel -y", Environment.CurrentDirectory, telemetryContext, cancellationToken);
@@ -256,6 +255,7 @@ private async Task InstallGccAsync(string gccVersion, EventContext telemetryCont
256255
break;
257256

258257
case LinuxDistribution.AzLinux:
258+
case LinuxDistribution.AwsLinux:
259259
if (!string.IsNullOrEmpty(gccVersion))
260260
{
261261
throw new Exception($"gcc version must not be supplied for {distro.LinuxDistribution}");

src/VirtualClient/VirtualClient.Dependencies/Packaging/DnfPackageInstallation.cs

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -119,11 +119,15 @@ await this.ExecuteCommandAsync(DnfPackageInstallation.DnfCommand, $"config-manag
119119
}
120120
}
121121

122+
var linuxDistributionInfo = systemManagement.GetLinuxDistributionAsync(CancellationToken.None).GetAwaiter().GetResult();
123+
124+
bool isAwsLinux = linuxDistributionInfo.LinuxDistribution == LinuxDistribution.AwsLinux;
125+
122126
// Determine which packages should be installed, and which can be skipped.
123127
List<string> toInstall = new List<string>();
124128
foreach (string package in packages)
125129
{
126-
if (!this.AllowUpgrades && await this.IsPackageInstalledAsync(package, cancellationToken))
130+
if (!isAwsLinux && !this.AllowUpgrades && await this.IsPackageInstalledAsync(package, cancellationToken))
127131
{
128132
this.Logger.LogTraceMessage($"Package '{package}' is already installed, skipping.", EventContext.Persisted());
129133
}
@@ -157,13 +161,16 @@ await this.ExecuteCommandAsync(DnfPackageInstallation.DnfCommand, formattedArgum
157161
this.Logger.LogTraceMessage($"VirtualClient installed Dnf package(s): '[{string.Join(' ', toInstall)}]'.", EventContext.Persisted());
158162

159163
// Then, confirms that the packages were installed.
160-
List<string> failedPackages = toInstall.Where(package => !(this.IsPackageInstalledAsync(package, cancellationToken).GetAwaiter().GetResult())).ToList();
161-
162-
if (failedPackages?.Count > 0)
164+
if (!isAwsLinux)
163165
{
164-
throw new ProcessException(
165-
$"Packages were supposedly successfully installed, but cannot be found! Packages: '{string.Join(", ", failedPackages)}'",
166-
ErrorReason.DependencyInstallationFailed);
166+
List<string> failedPackages = toInstall.Where(package => !(this.IsPackageInstalledAsync(package, cancellationToken).GetAwaiter().GetResult())).ToList();
167+
168+
if (failedPackages?.Count > 0)
169+
{
170+
throw new ProcessException(
171+
$"Packages were supposedly successfully installed, but cannot be found! Packages: '{string.Join(", ", failedPackages)}'",
172+
ErrorReason.DependencyInstallationFailed);
173+
}
167174
}
168175
}
169176

src/VirtualClient/VirtualClient.Dependencies/Packaging/LinuxPackageInstallation.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,9 @@ protected override async Task ExecuteAsync(EventContext telemetryContext, Cancel
186186
if (this.Platform == PlatformID.Unix)
187187
{
188188
this.linuxDistroInfo = await this.systemManagement.GetLinuxDistributionAsync(cancellationToken).ConfigureAwait(false);
189+
190+
telemetryContext.AddContext("LinuxDistribution", this.linuxDistroInfo.LinuxDistribution.ToString());
191+
189192
VirtualClientComponent installer;
190193
switch (this.linuxDistroInfo.LinuxDistribution)
191194
{

src/VirtualClient/VirtualClient.Main/RunProfileCommand.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -569,6 +569,8 @@ protected void SetGlobalTelemetryProperties(IEnumerable<string> profiles, IServi
569569
string profile = profiles.First();
570570
string profileFullPath = systemManagement.PlatformSpecifics.StandardizePath(Path.GetFullPath(profile));
571571

572+
AddLinuxDistributionInfo(systemManagement);
573+
572574
// Additional persistent/global telemetry properties in addition to the ones
573575
// added on application startup.
574576
EventContext.PersistentProperties.AddRange(new Dictionary<string, object>
@@ -577,6 +579,18 @@ protected void SetGlobalTelemetryProperties(IEnumerable<string> profiles, IServi
577579
});
578580
}
579581

582+
private void AddLinuxDistributionInfo(ISystemManagement systemManagement)
583+
{
584+
try
585+
{
586+
EventContext.PersistentProperties.Add("linuxDistributionInfo", systemManagement.GetLinuxDistributionAsync(CancellationToken.None).GetAwaiter().GetResult());
587+
}
588+
catch
589+
{
590+
// Best Effort only
591+
}
592+
}
593+
580594
/// <summary>
581595
/// Initializes the global/persistent telemetry properties that will be included
582596
/// with all telemetry emitted from the Virtual Client.

src/VirtualClient/VirtualClient.Main/profiles/PERF-NETWORK-2.json

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"Metadata": {
44
"RecommendedMinimumExecutionTime": "00:30:00",
55
"SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64",
6-
"SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu,Windows"
6+
"SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu,Windows,AwsLinux"
77
},
88
"Parameters": {
99
"ConfigureNetwork": true,
@@ -354,6 +354,13 @@
354354
"Extract": true
355355
}
356356
},
357+
{
358+
"Type": "LinuxPackageInstallation",
359+
"Parameters": {
360+
"Scenario": "InstallLinuxPackages",
361+
"Packages-Dnf": "iptables"
362+
}
363+
},
357364
{
358365
"Type": "NetworkConfigurationSetup",
359366
"Parameters": {

src/VirtualClient/VirtualClient.Main/profiles/PERF-NETWORK-NTTTCP.json

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"Metadata": {
44
"RecommendedMinimumExecutionTime": "00:30:00",
55
"SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64",
6-
"SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu,Windows"
6+
"SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu,Windows,AwsLinux"
77
},
88
"Parameters": {
99
"ConfigureNetwork": true,
@@ -215,6 +215,13 @@
215215
"Extract": true
216216
}
217217
},
218+
{
219+
"Type": "LinuxPackageInstallation",
220+
"Parameters": {
221+
"Scenario": "InstallLinuxPackages",
222+
"Packages-Dnf": "iptables"
223+
}
224+
},
218225
{
219226
"Type": "NetworkConfigurationSetup",
220227
"Parameters": {

src/VirtualClient/VirtualClient.Main/profiles/PERF-NETWORK.json

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"Metadata": {
44
"RecommendedMinimumExecutionTime": "00:30:00",
55
"SupportedPlatforms": "linux-x64,linux-arm64,win-x64,win-arm64",
6-
"SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu,Windows"
6+
"SupportedOperatingSystems": "CBL-Mariner,CentOS,Debian,RedHat,Suse,Ubuntu,Windows,AwsLinux"
77
},
88
"Parameters": {
99
"ConfigureNetwork": true,
@@ -329,6 +329,13 @@
329329
"Extract": true
330330
}
331331
},
332+
{
333+
"Type": "LinuxPackageInstallation",
334+
"Parameters": {
335+
"Scenario": "InstallLinuxPackages",
336+
"Packages-Dnf": "iptables"
337+
}
338+
},
332339
{
333340
"Type": "NetworkConfigurationSetup",
334341
"Parameters": {

0 commit comments

Comments
 (0)