diff --git a/src/Action.Tests/Action.Tests.csproj b/src/Action.Tests/Action.Tests.csproj index 8a535cc197b7387966c4e7b29ad138f1fa1bd11f..fb6de6555c21841054873ce8201861bf04ba01c9 100644 --- a/src/Action.Tests/Action.Tests.csproj +++ b/src/Action.Tests/Action.Tests.csproj @@ -46,11 +46,11 @@ <Reference Include="Coscine.Configuration, Version=1.5.0.0, Culture=neutral, PublicKeyToken=ce3d7a32d7dc1e5a, processorArchitecture=MSIL"> <HintPath>..\packages\Coscine.Configuration.1.5.0\lib\net461\Coscine.Configuration.dll</HintPath> </Reference> - <Reference Include="Coscine.Database, Version=1.24.0.0, Culture=neutral, PublicKeyToken=767d77427707b70a, processorArchitecture=MSIL"> - <HintPath>..\packages\Coscine.Database.1.24.0\lib\net461\Coscine.Database.dll</HintPath> + <Reference Include="Coscine.Database, Version=1.27.0.0, Culture=neutral, PublicKeyToken=767d77427707b70a, processorArchitecture=MSIL"> + <HintPath>..\packages\Coscine.Database.1.27.0\lib\net461\Coscine.Database.dll</HintPath> </Reference> - <Reference Include="Coscine.Database.T4, Version=1.24.0.0, Culture=neutral, PublicKeyToken=84b4c404a0696261, processorArchitecture=MSIL"> - <HintPath>..\packages\Coscine.Database.1.24.0\lib\net461\Coscine.Database.T4.dll</HintPath> + <Reference Include="Coscine.Database.T4, Version=1.27.0.0, Culture=neutral, PublicKeyToken=84b4c404a0696261, processorArchitecture=MSIL"> + <HintPath>..\packages\Coscine.Database.1.27.0\lib\net461\Coscine.Database.T4.dll</HintPath> </Reference> <Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> <HintPath>..\packages\EntityFramework.6.4.4\lib\net45\EntityFramework.dll</HintPath> diff --git a/src/Action.Tests/Properties/AssemblyInfo.cs b/src/Action.Tests/Properties/AssemblyInfo.cs index e5e7a3a82cd41a2339c85805fd2dc18e54edbe2f..002daba231db1de02f7faefbb2977fcf85441f27 100644 --- a/src/Action.Tests/Properties/AssemblyInfo.cs +++ b/src/Action.Tests/Properties/AssemblyInfo.cs @@ -9,8 +9,8 @@ using System.Reflection; [assembly: AssemblyDescription("Action.Tests is a part of the CoScInE group.")] [assembly: AssemblyCompany("IT Center, RWTH Aachen University")] [assembly: AssemblyProduct("Action.Tests")] -[assembly: AssemblyVersion("1.16.0")] -[assembly: AssemblyFileVersion("1.16.0")] -[assembly: AssemblyInformationalVersion("1.16.0-topic-1062-pidpa0009")] +[assembly: AssemblyVersion("1.17.0")] +[assembly: AssemblyFileVersion("1.17.0")] +[assembly: AssemblyInformationalVersion("1.17.0-topic-1163-admin0001")] [assembly: AssemblyCopyright("2020 IT Center, RWTH Aachen University")] diff --git a/src/Action.Tests/packages.config b/src/Action.Tests/packages.config index fdfe66f032df69b23f536e2bd4f9e016604af4b2..9030d20250a2f6c6346aab58c00aee582914f1f7 100644 --- a/src/Action.Tests/packages.config +++ b/src/Action.Tests/packages.config @@ -2,7 +2,7 @@ <packages> <package id="Consul" version="0.7.2.6" targetFramework="net461" /> <package id="Coscine.Configuration" version="1.5.0" targetFramework="net461" /> - <package id="Coscine.Database" version="1.24.0" targetFramework="net461" /> + <package id="Coscine.Database" version="1.27.0" targetFramework="net461" /> <package id="EntityFramework" version="6.4.4" targetFramework="net461" /> <package id="linq2db" version="3.1.1" targetFramework="net461" /> <package id="linq2db.SqlServer" version="2.6.4" targetFramework="net461" /> diff --git a/src/Action/Action.csproj b/src/Action/Action.csproj index 1355cbd8dc4a5cd9fd884f891bcdd39fcf3c3278..372042e780a1ac8dbdbd32b9d218a0589f8c4441 100644 --- a/src/Action/Action.csproj +++ b/src/Action/Action.csproj @@ -44,11 +44,11 @@ <Reference Include="Coscine.Configuration, Version=1.5.0.0, Culture=neutral, PublicKeyToken=ce3d7a32d7dc1e5a, processorArchitecture=MSIL"> <HintPath>..\packages\Coscine.Configuration.1.5.0\lib\net461\Coscine.Configuration.dll</HintPath> </Reference> - <Reference Include="Coscine.Database, Version=1.24.0.0, Culture=neutral, PublicKeyToken=767d77427707b70a, processorArchitecture=MSIL"> - <HintPath>..\packages\Coscine.Database.1.24.0\lib\net461\Coscine.Database.dll</HintPath> + <Reference Include="Coscine.Database, Version=1.27.0.0, Culture=neutral, PublicKeyToken=767d77427707b70a, processorArchitecture=MSIL"> + <HintPath>..\packages\Coscine.Database.1.27.0\lib\net461\Coscine.Database.dll</HintPath> </Reference> - <Reference Include="Coscine.Database.T4, Version=1.24.0.0, Culture=neutral, PublicKeyToken=84b4c404a0696261, processorArchitecture=MSIL"> - <HintPath>..\packages\Coscine.Database.1.24.0\lib\net461\Coscine.Database.T4.dll</HintPath> + <Reference Include="Coscine.Database.T4, Version=1.27.0.0, Culture=neutral, PublicKeyToken=84b4c404a0696261, processorArchitecture=MSIL"> + <HintPath>..\packages\Coscine.Database.1.27.0\lib\net461\Coscine.Database.T4.dll</HintPath> </Reference> <Reference Include="Coscine.ProxyApi, Version=1.3.0.0, Culture=neutral, processorArchitecture=MSIL"> <HintPath>..\packages\Coscine.ProxyApi.1.3.0\lib\net461\Coscine.ProxyApi.dll</HintPath> @@ -109,12 +109,14 @@ <ItemGroup> <Compile Include="Emitter.cs" /> <Compile Include="EventArgs\ActionEventArgs.cs" /> + <Compile Include="EventArgs\AdminEventArgs.cs" /> <Compile Include="EventArgs\ProjectEventArgs.cs" /> <Compile Include="EventArgs\PIDEventArgs.cs" /> <Compile Include="EventArgs\ResourceEventArgs.cs" /> <Compile Include="EventArgs\UserEventArgs.cs" /> <Compile Include="Exceptions\ActionException.cs" /> <Compile Include="IAction.cs" /> + <Compile Include="Implementations\Admin\NotificationAction.cs" /> <Compile Include="Implementations\PID\NotificationAction.cs" /> <Compile Include="Implementations\Project\NotificationAction.cs" /> <Compile Include="Implementations\Project\PIDAction.cs" /> @@ -124,6 +126,7 @@ <Compile Include="Implementations\Resource\PIDAction.cs" /> <Compile Include="Implementations\User\NotificationAction.cs" /> <Compile Include="Implementations\User\SPGroupAction.cs" /> + <Compile Include="IAdminAction.cs" /> <Compile Include="IProjectAction.cs" /> <Compile Include="IPIDAction.cs" /> <Compile Include="IResourceAction.cs" /> diff --git a/src/Action/Emitter.cs b/src/Action/Emitter.cs index 984e28b2c482f75f540be3b5c27679ef9cd52b95..0b06479ed098355d1784f997f665b757776b4920 100644 --- a/src/Action/Emitter.cs +++ b/src/Action/Emitter.cs @@ -14,6 +14,7 @@ namespace Coscine.Action private readonly List<IUserAction> userActions = new List<IUserAction>(); private readonly List<IResourceAction> resourceActions = new List<IResourceAction>(); private readonly List<IPIDAction> pidActions = new List<IPIDAction>(); + private readonly List<IAdminAction> adminActions = new List<IAdminAction>(); public IConfiguration Configuration { get; } @@ -38,6 +39,9 @@ namespace Coscine.Action var pida = InstantiateAllImplementations<IPIDAction>(assembly); pidActions.AddRange(pida); + + var adminA = InstantiateAllImplementations<IAdminAction>(assembly); + adminActions.AddRange(adminA); } private static IEnumerable<T> InstantiateAllImplementations<T>(System.Reflection.Assembly assembly) where T : IAction @@ -105,6 +109,12 @@ namespace Coscine.Action a.OnPIDOwnerContact(args); } } - + public void EmitQuotaChanged(AdminEventArgs args) + { + foreach (var a in adminActions) + { + a.OnQutaChanged(args); + } + } } } diff --git a/src/Action/EventArgs/AdminEventArgs.cs b/src/Action/EventArgs/AdminEventArgs.cs new file mode 100644 index 0000000000000000000000000000000000000000..8533b33345929ce58ed32bbce32cc60e30fcf844 --- /dev/null +++ b/src/Action/EventArgs/AdminEventArgs.cs @@ -0,0 +1,20 @@ +using Coscine.Configuration; +using System; + +namespace Coscine.Action.EventArgs +{ + public class AdminEventArgs : ActionEventArgs + { + public IConfiguration Configuration { get; set; } + public Guid ProjectId { get; set; } + + public AdminEventArgs(IConfiguration configuration, object[] args) : base(args) + { + Configuration = configuration; + } + + public AdminEventArgs(IConfiguration configuration) : this(configuration, new object[0]) + { + } + } +} diff --git a/src/Action/IAdminAction.cs b/src/Action/IAdminAction.cs new file mode 100644 index 0000000000000000000000000000000000000000..d7e63020b694c4b96bf92e4344557bcbfaf87434 --- /dev/null +++ b/src/Action/IAdminAction.cs @@ -0,0 +1,9 @@ +using Coscine.Action.EventArgs; + +namespace Coscine.Action +{ + public interface IAdminAction : IAction + { + void OnQutaChanged(AdminEventArgs pidEventArgs); + } +} diff --git a/src/Action/Implementations/Admin/NotificationAction.cs b/src/Action/Implementations/Admin/NotificationAction.cs new file mode 100644 index 0000000000000000000000000000000000000000..66ab43d1138366ba9095ef68f7ee9b6cda523644 --- /dev/null +++ b/src/Action/Implementations/Admin/NotificationAction.cs @@ -0,0 +1,16 @@ +using Coscine.Action.EventArgs; +using Coscine.Action.Utils; + +namespace Coscine.Action.Implementations.Admin +{ + public class NotificationAction : IAdminAction + { + public int Priority => 1; + public bool Enabled => true; + + public void OnQutaChanged(AdminEventArgs adminEventArgs) + { + NotificationBusUtil.SendAsync(adminEventArgs.Configuration, "quota_changed", NotificationBusUtil.GetAllOwnersForProjectId(adminEventArgs.ProjectId), adminEventArgs.ProjectId.ToString(), new Newtonsoft.Json.Linq.JObject()); + } + } +} diff --git a/src/Action/Properties/AssemblyInfo.cs b/src/Action/Properties/AssemblyInfo.cs index 0bf4a2005ba493cd7f1e9a0e19e7dbfc4c86ddba..355aac7d55ad83913227d4d295b76fb771d41b10 100644 --- a/src/Action/Properties/AssemblyInfo.cs +++ b/src/Action/Properties/AssemblyInfo.cs @@ -9,8 +9,8 @@ using System.Reflection; [assembly: AssemblyDescription("Action is a part of the CoScInE group.")] [assembly: AssemblyCompany("IT Center, RWTH Aachen University")] [assembly: AssemblyProduct("Action")] -[assembly: AssemblyVersion("1.16.0")] -[assembly: AssemblyFileVersion("1.16.0")] -[assembly: AssemblyInformationalVersion("1.16.0-topic-1062-pidpa0009")] +[assembly: AssemblyVersion("1.17.0")] +[assembly: AssemblyFileVersion("1.17.0")] +[assembly: AssemblyInformationalVersion("1.17.0-topic-1163-admin0001")] [assembly: AssemblyCopyright("2020 IT Center, RWTH Aachen University")] diff --git a/src/Action/packages.config b/src/Action/packages.config index 218e7e6aac9daca33f3c57eaa1a342c0366e232c..4beb8148bb4feb83e6519bac09e0508f4b9e97c5 100644 --- a/src/Action/packages.config +++ b/src/Action/packages.config @@ -2,7 +2,7 @@ <packages> <package id="Consul" version="0.7.2.6" targetFramework="net461" /> <package id="Coscine.Configuration" version="1.5.0" targetFramework="net461" /> - <package id="Coscine.Database" version="1.24.0" targetFramework="net461" /> + <package id="Coscine.Database" version="1.27.0" targetFramework="net461" /> <package id="Coscine.ProxyApi" version="1.3.0" targetFramework="net461" /> <package id="EntityFramework" version="6.4.4" targetFramework="net461" /> <package id="linq2db" version="3.1.1" targetFramework="net461" />