Skip to content
Snippets Groups Projects
Commit 090e5a7f authored by Petar Hristov's avatar Petar Hristov :speech_balloon:
Browse files

Merge branch 'dev' into 'main'

Fix: Output formatting

See merge request !6
parents fe075e86 77b1ab36
No related branches found
No related tags found
1 merge request!6Fix: Output formatting
Pipeline #854403 failed
...@@ -9,9 +9,9 @@ ...@@ -9,9 +9,9 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Coscine.Configuration" Version="2.1.0" /> <PackageReference Include="Coscine.Configuration" Version="*-*" />
<PackageReference Include="Coscine.Database" Version="2.11.1" /> <PackageReference Include="Coscine.Database" Version="*-*" />
<PackageReference Include="Coscine.ResourceTypes" Version="1.1.4" /> <PackageReference Include="Coscine.ResourceTypes" Version="*-*" />
</ItemGroup> </ItemGroup>
</Project> </Project>
using Amazon.S3; using Amazon.S3;
using Coscine.Database.DataModel; using Coscine.Database.DataModel;
using Coscine.Database.Models; using Coscine.Database.Models;
using Coscine.ECSManager; using Coscine.ECSManager;
using Coscine.ResourceTypes; using Coscine.ResourceTypes;
using Coscine.ResourceTypes.Base; using Coscine.ResourceTypes.Base;
using Coscine.ResourceTypes.Rds;
using Coscine.ResourceTypes.RdsS3; using Coscine.ResourceTypes.RdsS3;
using Coscine.ResourceTypes.RdsWorm; using Coscine.ResourceTypes.RdsS3Worm;
using ResourceTypes.Rds;
namespace IPConnectivityChecker.Implementations namespace IPConnectivityChecker.Implementations
{ {
public class ECSChecker public class ECSChecker
{ {
private const string format = " {0,-18} [{1}]\t{2}";
public async Task<bool> CheckECS() public async Task<bool> CheckECS()
{ {
var resourceTypeModel = new ResourceTypeModel(); var resourceTypeModel = new ResourceTypeModel();
...@@ -23,7 +25,7 @@ namespace IPConnectivityChecker.Implementations ...@@ -23,7 +25,7 @@ namespace IPConnectivityChecker.Implementations
{ {
if (resourceType.Type.Contains("rds")) if (resourceType.Type.Contains("rds"))
{ {
Console.WriteLine("Checking resourcetype with type '" + resourceType.Type + "' and specific type '" + resourceType.SpecificType + "'!"); Console.WriteLine($"\n{new string('=', 70)}\n Resource Type: {resourceType.Type.ToUpper()} -- {resourceType.SpecificType}\n{new string('-', 70)}");
BaseResourceType resourceTypeDefinition; BaseResourceType resourceTypeDefinition;
try try
{ {
...@@ -31,8 +33,7 @@ namespace IPConnectivityChecker.Implementations ...@@ -31,8 +33,7 @@ namespace IPConnectivityChecker.Implementations
} }
catch (Exception e) catch (Exception e)
{ {
Console.WriteLine("Error on resourcetype with type '" + resourceType.Type + "' and specific type '" + resourceType.SpecificType + "'!"); Console.Error.WriteLine($"!! Error inside Resource Type Factory: {e.Message}");
Console.WriteLine(e);
working = false; working = false;
continue; continue;
} }
...@@ -41,62 +42,71 @@ namespace IPConnectivityChecker.Implementations ...@@ -41,62 +42,71 @@ namespace IPConnectivityChecker.Implementations
var rdsResourceTypeDefinition = (RdsResourceType)resourceTypeDefinition; var rdsResourceTypeDefinition = (RdsResourceType)resourceTypeDefinition;
var rdsResourceTypeConfiguration = rdsResourceTypeDefinition.RdsResourceTypeConfiguration; var rdsResourceTypeConfiguration = rdsResourceTypeDefinition.RdsResourceTypeConfiguration;
working = working && await S3ClientCheck(rdsResourceTypeConfiguration.Endpoint, rdsResourceTypeConfiguration.AccessKey, rdsResourceTypeConfiguration.SecretKey, resourceType);
var s3Check = await S3ClientCheck(rdsResourceTypeConfiguration.Endpoint, rdsResourceTypeConfiguration.AccessKey, rdsResourceTypeConfiguration.SecretKey, resourceType);
working = working && s3Check;
var ecsManager = new EcsManager var ecsManager = new EcsManager
{ {
EcsManagerConfiguration = rdsResourceTypeConfiguration.EcsManagerConfiguration EcsManagerConfiguration = rdsResourceTypeConfiguration.EcsManagerConfiguration
}; };
working = working && await LoginToECS(ecsManager.EcsManagerConfiguration, resourceType); var ecsLogin = await LoginToECS(ecsManager.EcsManagerConfiguration, resourceType);
working = working && ecsLogin;
} }
else if (resourceType.Type == "rdss3") else if (resourceType.Type == "rdss3")
{ {
var rdss3ResourceTypeDefinition = (RdsS3ResourceType)resourceTypeDefinition; var rdss3ResourceTypeDefinition = (RdsS3ResourceType)resourceTypeDefinition;
var rdsS3ResourceTypeConfiguration = rdss3ResourceTypeDefinition.RdsS3ResourceTypeConfiguration; var rdsS3ResourceTypeConfiguration = rdss3ResourceTypeDefinition.RdsS3ResourceTypeConfiguration;
working = working && await S3ClientCheck(rdsS3ResourceTypeConfiguration.Endpoint, rdsS3ResourceTypeConfiguration.AccessKey, rdsS3ResourceTypeConfiguration.SecretKey, resourceType); var s3Check = await S3ClientCheck(rdsS3ResourceTypeConfiguration.Endpoint, rdsS3ResourceTypeConfiguration.AccessKey, rdsS3ResourceTypeConfiguration.SecretKey, resourceType);
working = working && s3Check;
var rdsS3EcsManager = new EcsManager var rdsS3EcsManager = new EcsManager
{ {
EcsManagerConfiguration = rdsS3ResourceTypeConfiguration.RdsS3EcsManagerConfiguration EcsManagerConfiguration = rdsS3ResourceTypeConfiguration.RdsS3EcsManagerConfiguration
}; };
working = working && await LoginToECS(rdsS3EcsManager.EcsManagerConfiguration, resourceType); var ecsLogin = await LoginToECS(rdsS3EcsManager.EcsManagerConfiguration, resourceType);
working = working && ecsLogin;
var userEcsManager = new EcsManager var userEcsManager = new EcsManager
{ {
EcsManagerConfiguration = rdsS3ResourceTypeConfiguration.UserEcsManagerConfiguration EcsManagerConfiguration = rdsS3ResourceTypeConfiguration.UserEcsManagerConfiguration
}; };
working = working && await LoginToECS(userEcsManager.EcsManagerConfiguration, resourceType); var ecsUserLogin = await LoginToECS(userEcsManager.EcsManagerConfiguration, resourceType, " user ");
working = working && ecsUserLogin;
} }
else if (resourceType.Type == "rdss3worm") else if (resourceType.Type == "rdss3worm")
{ {
var rdss3wormResourceTypeDefinition = (RdsS3WormResourceType)resourceTypeDefinition; var rdss3wormResourceTypeDefinition = (RdsS3WormResourceType)resourceTypeDefinition;
var rdsS3WormResourceTypeConfiguration = rdss3wormResourceTypeDefinition.RdsS3WormResourceTypeConfiguration; var rdsS3WormResourceTypeConfiguration = rdss3wormResourceTypeDefinition.RdsS3WormResourceTypeConfiguration;
working = working && await S3ClientCheck(rdsS3WormResourceTypeConfiguration.Endpoint, rdsS3WormResourceTypeConfiguration.AccessKey, rdsS3WormResourceTypeConfiguration.SecretKey, resourceType); var s3Check = await S3ClientCheck(rdsS3WormResourceTypeConfiguration.Endpoint, rdsS3WormResourceTypeConfiguration.AccessKey, rdsS3WormResourceTypeConfiguration.SecretKey, resourceType);
working = working && s3Check;
var rdsS3EcsManager = new EcsManager var rdsS3EcsManager = new EcsManager
{ {
EcsManagerConfiguration = rdsS3WormResourceTypeConfiguration.RdsS3EcsManagerConfiguration EcsManagerConfiguration = rdsS3WormResourceTypeConfiguration.RdsS3EcsManagerConfiguration
}; };
working = working && await LoginToECS(rdsS3EcsManager.EcsManagerConfiguration, resourceType); var ecsLogin = await LoginToECS(rdsS3EcsManager.EcsManagerConfiguration, resourceType);
working = working && ecsLogin;
var userEcsManager = new EcsManager var userEcsManager = new EcsManager
{ {
EcsManagerConfiguration = rdsS3WormResourceTypeConfiguration.UserEcsManagerConfiguration EcsManagerConfiguration = rdsS3WormResourceTypeConfiguration.UserEcsManagerConfiguration
}; };
working = working && await LoginToECS(userEcsManager.EcsManagerConfiguration, resourceType); var ecsUserLogin = await LoginToECS(userEcsManager.EcsManagerConfiguration, resourceType, " user ");
working = working && ecsUserLogin;
}
else
{
Console.WriteLine($"!! Could not correctly identify the provided {resourceType.Type}!");
} }
Console.WriteLine();
} }
} }
return working; return working;
} }
private async Task<bool> S3ClientCheck(string endpoint, string accessKey, string secretKey, ResourceType resourceType) private async Task<bool> S3ClientCheck(string? endpoint, string? accessKey, string? secretKey, ResourceType resourceType)
{ {
try try
{ {
...@@ -106,33 +116,43 @@ namespace IPConnectivityChecker.Implementations ...@@ -106,33 +116,43 @@ namespace IPConnectivityChecker.Implementations
ForcePathStyle = true ForcePathStyle = true
}; };
using var _s3client = new AmazonS3Client(accessKey, secretKey, amazonS3Config); using var _s3client = new AmazonS3Client(accessKey, secretKey, amazonS3Config);
await _s3client.ListBucketsAsync(); var output = await _s3client.ListBucketsAsync();
Console.WriteLine(string.Format(format, "S3 Client Check", output.HttpStatusCode, $"Found {output.Buckets.Count} entries"));
} }
catch (Exception e) catch (Exception e)
{ {
Console.WriteLine("S3 Client Check: FAILED for resourcetype with type '" + resourceType.Type + "' and specific type '" + resourceType.SpecificType + "'!"); Console.WriteLine(string.Format(format, "S3 Client Check", "FAILED", $"For type {resourceType.Type} with specific type {resourceType.SpecificType}!"));
Console.WriteLine(e); Console.WriteLine($"\tException: {e.Message}");
if (e.InnerException is not null)
{
Console.WriteLine($"\tInner Exception: {e.InnerException.Message}");
}
return false; return false;
} }
return true; return true;
} }
private async Task<bool> LoginToECS(EcsManagerConfiguration EcsManagerConfiguration, ResourceType resourceType) private async Task<bool> LoginToECS(EcsManagerConfiguration? EcsManagerConfiguration, ResourceType resourceType, string loginType = " ")
{ {
try try
{ {
// create new management client USING NAMESPACE ADMINISTRATOR to obtain token // create new management client USING NAMESPACE ADMINISTRATOR to obtain token
using var client = new CoscineECSManagementClient(EcsManagerConfiguration.NamespaceAdminName, EcsManagerConfiguration.NamespaceAdminPassword, EcsManagerConfiguration.ManagerApiEndpoint); using var client = new CoscineECSManagementClient(EcsManagerConfiguration!.NamespaceAdminName, EcsManagerConfiguration!.NamespaceAdminPassword, EcsManagerConfiguration!.ManagerApiEndpoint);
// authenticate // authenticate
await client.Authenticate(); await client.Authenticate();
// log out // log out
await client.LogOut(); await client.LogOut();
Console.WriteLine(string.Format(format, "Login Check", "OK", $"ECS{loginType}login & logout successful"));
} }
catch (Exception e) catch (Exception e)
{ {
Console.WriteLine("Login Check: FAILED for resourcetype with type '" + resourceType.Type + "' and specific type '" + resourceType.SpecificType + "'!"); Console.WriteLine(string.Format(format, "Login Check", "FAILED", $"ECS{loginType}login & logout failed for type {resourceType.Type} with specific type {resourceType.SpecificType}!"));
Console.WriteLine(e); Console.WriteLine($"\tException: {e.Message}");
return false; if (e.InnerException is not null)
{
Console.WriteLine($"\tInner Exception: {e.InnerException.Message}");
}
} }
return true; return true;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment