forked from TrueCloudLab/frostfs-node
[#2038] neofs-cli: Check the sufficiency of the number of nodes in the selector for replicas
Perform this check on container creation. Signed-off-by: Anton Nikiforov <an.nikiforov@yadro.com>
This commit is contained in:
parent
50d28b72c3
commit
afabd6be91
2 changed files with 13 additions and 1 deletions
|
@ -46,6 +46,7 @@ Changelog for NeoFS Node
|
||||||
- Closing `neo-go` WS clients on shutdown and switch processes (#2080)
|
- Closing `neo-go` WS clients on shutdown and switch processes (#2080)
|
||||||
- Making notary deposits with a zero GAS balance (#2080)
|
- Making notary deposits with a zero GAS balance (#2080)
|
||||||
- Notary requests on shutdown (#2075)
|
- Notary requests on shutdown (#2075)
|
||||||
|
- `neofs-cli container create ` check the sufficiency of the number of nodes in the selector for replicas (#2038)
|
||||||
|
|
||||||
### Removed
|
### Removed
|
||||||
- `-g` option from `neofs-cli control ...` and `neofs-cli container create` commands (#2089)
|
- `-g` option from `neofs-cli control ...` and `neofs-cli container create` commands (#2089)
|
||||||
|
|
|
@ -50,9 +50,20 @@ It will be stored in sidechain when inner ring will accepts it.`,
|
||||||
common.ExitOnErr(cmd, "unable to get netmap snapshot to validate container placement, "+
|
common.ExitOnErr(cmd, "unable to get netmap snapshot to validate container placement, "+
|
||||||
"use --force option to skip this check: %w", err)
|
"use --force option to skip this check: %w", err)
|
||||||
|
|
||||||
_, err = resmap.NetMap().ContainerNodes(*placementPolicy, nil)
|
nodesByRep, err := resmap.NetMap().ContainerNodes(*placementPolicy, nil)
|
||||||
common.ExitOnErr(cmd, "could not build container nodes based on given placement policy, "+
|
common.ExitOnErr(cmd, "could not build container nodes based on given placement policy, "+
|
||||||
"use --force option to skip this check: %w", err)
|
"use --force option to skip this check: %w", err)
|
||||||
|
|
||||||
|
for i, nodes := range nodesByRep {
|
||||||
|
if placementPolicy.ReplicaNumberByIndex(i) > uint32(len(nodes)) {
|
||||||
|
common.ExitOnErr(cmd, "", fmt.Errorf(
|
||||||
|
"the number of nodes '%d' in selector is not enough for the number of replicas '%d', "+
|
||||||
|
"use --force option to skip this check",
|
||||||
|
len(nodes),
|
||||||
|
placementPolicy.ReplicaNumberByIndex(i),
|
||||||
|
))
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if containerSubnet != "" {
|
if containerSubnet != "" {
|
||||||
|
|
Loading…
Reference in a new issue