forked from TrueCloudLab/frostfs-node
* Added new method for listing containers to container service. It opens stream and sends containers in batches. * Added TransportSplitter wrapper around ExecutionService to split container ID list read from contract in parts that are smaller than grpc max message size. Batch size can be changed in node configuration file (as in example config file). * Changed `container list` implementaion in cli: now ListStream is called by default. Old List is called only if ListStream is not implemented. * Changed `internalclient.ListContainersPrm`.`Account` to `OwnerID` since `client.PrmContainerList`.`Account` was renamed to `OwnerID` in sdk. Signed-off-by: Ekaterina Lebedeva <ekaterina.lebedeva@yadro.com>
27 lines
882 B
Go
27 lines
882 B
Go
package containerconfig
|
|
|
|
import "git.frostfs.info/TrueCloudLab/frostfs-node/cmd/frostfs-node/config"
|
|
|
|
const (
|
|
subsection = "container"
|
|
listStreamSubsection = "list_stream"
|
|
|
|
// ContainerBatchSizeDefault represents he maximum amount of containers to send via stream at once.
|
|
ContainerBatchSizeDefault = 1000
|
|
)
|
|
|
|
// ContainerBatchSize returns the value of "batch_size" config parameter
|
|
// from "list_stream" subsection of "container" section.
|
|
//
|
|
// Returns ContainerBatchSizeDefault if the value is missing or if
|
|
// the value is not positive integer.
|
|
func ContainerBatchSize(c *config.Config) uint32 {
|
|
if c.Sub(subsection).Sub(listStreamSubsection).Value("batch_size") == nil {
|
|
return ContainerBatchSizeDefault
|
|
}
|
|
size := config.Uint32Safe(c.Sub(subsection).Sub(listStreamSubsection), "batch_size")
|
|
if size == 0 {
|
|
return ContainerBatchSizeDefault
|
|
}
|
|
return size
|
|
}
|