[#1] Map BasicACL to/from GRPC message
Signed-off-by: Ivan Pchelintsev <i.pchelintsev@yadro.com>
This commit is contained in:
parent
bb6e187b61
commit
ee1bf29304
4 changed files with 33 additions and 3 deletions
|
@ -1,3 +1,4 @@
|
||||||
|
using System.Runtime.InteropServices.ComTypes;
|
||||||
using FrostFS.SDK.ClientV2.Mappers.GRPC.Netmap;
|
using FrostFS.SDK.ClientV2.Mappers.GRPC.Netmap;
|
||||||
using FrostFS.SDK.Cryptography;
|
using FrostFS.SDK.Cryptography;
|
||||||
using Google.Protobuf;
|
using Google.Protobuf;
|
||||||
|
@ -10,6 +11,7 @@ public static class ContainerMapper
|
||||||
{
|
{
|
||||||
return new Container.Container
|
return new Container.Container
|
||||||
{
|
{
|
||||||
|
BasicAcl = (uint)container.BasicAcl,
|
||||||
PlacementPolicy = container.PlacementPolicy.ToGrpcMessage(),
|
PlacementPolicy = container.PlacementPolicy.ToGrpcMessage(),
|
||||||
Nonce = ByteString.CopyFrom(container.Nonce.ToBytes())
|
Nonce = ByteString.CopyFrom(container.Nonce.ToBytes())
|
||||||
};
|
};
|
||||||
|
@ -17,7 +19,16 @@ public static class ContainerMapper
|
||||||
|
|
||||||
public static ModelsV2.Container ToModel(this Container.Container container)
|
public static ModelsV2.Container ToModel(this Container.Container container)
|
||||||
{
|
{
|
||||||
return new ModelsV2.Container(container.PlacementPolicy.ToModel())
|
var basicAclName = Enum.GetName(typeof(ModelsV2.Enums.BasicACL), container.BasicAcl);
|
||||||
|
if (basicAclName is null)
|
||||||
|
{
|
||||||
|
throw new ArgumentException($"Unknown BasicACL rule. Value: '{container.BasicAcl}'.");
|
||||||
|
}
|
||||||
|
|
||||||
|
return new ModelsV2.Container(
|
||||||
|
Enum.Parse<ModelsV2.Enums.BasicACL>(basicAclName),
|
||||||
|
container.PlacementPolicy.ToModel()
|
||||||
|
)
|
||||||
{
|
{
|
||||||
Nonce = container.Nonce.ToUuid(),
|
Nonce = container.Nonce.ToUuid(),
|
||||||
Version = container.Version.ToModel()
|
Version = container.Version.ToModel()
|
||||||
|
|
|
@ -36,7 +36,6 @@ public partial class Client
|
||||||
|
|
||||||
public async Task<PutResponse> CreateContainerAsync(Container.Container container)
|
public async Task<PutResponse> CreateContainerAsync(Container.Container container)
|
||||||
{
|
{
|
||||||
container.BasicAcl = 0x1FBFBFFF;
|
|
||||||
container.OwnerId = _owner.ToGrpcMessage();
|
container.OwnerId = _owner.ToGrpcMessage();
|
||||||
container.Version = Version.ToGrpcMessage();
|
container.Version = Version.ToGrpcMessage();
|
||||||
var request = new PutRequest
|
var request = new PutRequest
|
||||||
|
|
|
@ -5,12 +5,14 @@ namespace FrostFS.SDK.ModelsV2;
|
||||||
public class Container
|
public class Container
|
||||||
{
|
{
|
||||||
public Guid Nonce { get; set; }
|
public Guid Nonce { get; set; }
|
||||||
|
public Enums.BasicACL BasicAcl { get; set; }
|
||||||
public PlacementPolicy PlacementPolicy { get; set; }
|
public PlacementPolicy PlacementPolicy { get; set; }
|
||||||
public Version? Version { get; set; }
|
public Version? Version { get; set; }
|
||||||
|
|
||||||
public Container(PlacementPolicy placementPolicy)
|
public Container(Enums.BasicACL basicAcl, PlacementPolicy placementPolicy)
|
||||||
{
|
{
|
||||||
Nonce = Guid.NewGuid();
|
Nonce = Guid.NewGuid();
|
||||||
|
BasicAcl = basicAcl;
|
||||||
PlacementPolicy = placementPolicy;
|
PlacementPolicy = placementPolicy;
|
||||||
}
|
}
|
||||||
}
|
}
|
18
sdk/src/FrostFS.SDK.ModelsV2/Enums/BasicACL.cs
Normal file
18
sdk/src/FrostFS.SDK.ModelsV2/Enums/BasicACL.cs
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
|
namespace FrostFS.SDK.ModelsV2.Enums;
|
||||||
|
|
||||||
|
public enum BasicACL
|
||||||
|
{
|
||||||
|
[Description("Basic ACL for private container")]
|
||||||
|
Private = 0x1C8C8CCC,
|
||||||
|
|
||||||
|
[Description("Basic ACL for public RO container")]
|
||||||
|
PublicRO = 0x1FBF8CFF,
|
||||||
|
|
||||||
|
[Description("Basic ACL for public RW container")]
|
||||||
|
PublicRW = 0x1FBFBFFF,
|
||||||
|
|
||||||
|
[Description("Basic ACL for public append container")]
|
||||||
|
PublicAppend = 0x1FBF9FFF,
|
||||||
|
}
|
Loading…
Reference in a new issue