All checks were successful
Vulncheck / Vulncheck (push) Successful in 1m12s
Pre-commit hooks / Pre-commit (push) Successful in 1m41s
Build / Build Components (push) Successful in 1m54s
Tests and linters / Run gofumpt (push) Successful in 3m35s
Tests and linters / Lint (push) Successful in 4m5s
Tests and linters / Staticcheck (push) Successful in 4m9s
Tests and linters / gopls check (push) Successful in 4m29s
Tests and linters / Tests (push) Successful in 4m52s
OCI image / Build container images (push) Successful in 5m9s
Tests and linters / Tests with -race (push) Successful in 6m14s
Applicable for both cases: when node uses local cache for netmap and when it disabled. Change-Id: I3050f537e20312a4b39e944aca763b77bd1e74c4 Signed-off-by: Anton Nikiforov <an.nikiforov@yadro.com>
55 lines
1.3 KiB
Go
55 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
|
|
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/core/netmap"
|
|
netmapClient "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/morph/client/netmap"
|
|
netmapSDK "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/netmap"
|
|
)
|
|
|
|
type rawNetmapSource struct {
|
|
client *netmapClient.Client
|
|
}
|
|
|
|
func newRawNetmapStorage(client *netmapClient.Client) netmap.Source {
|
|
return &rawNetmapSource{
|
|
client: client,
|
|
}
|
|
}
|
|
|
|
func (s *rawNetmapSource) GetNetMap(ctx context.Context, diff uint64) (*netmapSDK.NetMap, error) {
|
|
nm, err := s.client.GetNetMap(ctx, diff)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
candidates, err := s.client.GetCandidates(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
updates := getNetMapNodesToUpdate(nm, candidates)
|
|
if len(updates) > 0 {
|
|
mergeNetmapWithCandidates(updates, nm)
|
|
}
|
|
return nm, nil
|
|
}
|
|
|
|
func (s *rawNetmapSource) GetNetMapByEpoch(ctx context.Context, epoch uint64) (*netmapSDK.NetMap, error) {
|
|
nm, err := s.client.GetNetMapByEpoch(ctx, epoch)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
candidates, err := s.client.GetCandidates(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
updates := getNetMapNodesToUpdate(nm, candidates)
|
|
if len(updates) > 0 {
|
|
mergeNetmapWithCandidates(updates, nm)
|
|
}
|
|
return nm, nil
|
|
}
|
|
|
|
func (s *rawNetmapSource) Epoch(ctx context.Context) (uint64, error) {
|
|
return s.client.Epoch(ctx)
|
|
}
|