[#232] Use contract to get container info
All checks were successful
/ DCO (pull_request) Successful in 26s
/ Vulncheck (pull_request) Successful in 49s
/ Builds (pull_request) Successful in 1m44s
/ OCI image (pull_request) Successful in 2m6s
/ Lint (pull_request) Successful in 2m17s
/ Tests (pull_request) Successful in 1m57s
/ Integration tests (pull_request) Successful in 6m37s
All checks were successful
/ DCO (pull_request) Successful in 26s
/ Vulncheck (pull_request) Successful in 49s
/ Builds (pull_request) Successful in 1m44s
/ OCI image (pull_request) Successful in 2m6s
/ Lint (pull_request) Successful in 2m17s
/ Tests (pull_request) Successful in 1m57s
/ Integration tests (pull_request) Successful in 6m37s
Signed-off-by: Nikita Zinkevich <n.zinkevich@yadro.com>
This commit is contained in:
parent
ee628617a3
commit
3f12b85a2d
13 changed files with 274 additions and 90 deletions
|
@ -22,6 +22,8 @@ import (
|
|||
"git.frostfs.info/TrueCloudLab/frostfs-http-gw/internal/handler/middleware"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-http-gw/internal/logs"
|
||||
internalnet "git.frostfs.info/TrueCloudLab/frostfs-http-gw/internal/net"
|
||||
containerClient "git.frostfs.info/TrueCloudLab/frostfs-http-gw/internal/service/contracts/frostfs/container"
|
||||
contractsUtil "git.frostfs.info/TrueCloudLab/frostfs-http-gw/internal/service/contracts/util"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-http-gw/internal/service/frostfs"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-http-gw/internal/templates"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-http-gw/metrics"
|
||||
|
@ -39,6 +41,7 @@ import (
|
|||
"github.com/nspcc-dev/neo-go/cli/flags"
|
||||
"github.com/nspcc-dev/neo-go/cli/input"
|
||||
"github.com/nspcc-dev/neo-go/pkg/crypto/keys"
|
||||
"github.com/nspcc-dev/neo-go/pkg/rpcclient"
|
||||
"github.com/nspcc-dev/neo-go/pkg/util"
|
||||
"github.com/nspcc-dev/neo-go/pkg/wallet"
|
||||
"github.com/panjf2000/ants/v2"
|
||||
|
@ -275,6 +278,14 @@ func (a *app) initContainers(ctx context.Context) {
|
|||
a.corsCnrID = *corsCnrID
|
||||
}
|
||||
|
||||
func (a *app) initRPCClient(ctx context.Context) *rpcclient.Client {
|
||||
rpcCli, err := rpcclient.New(ctx, a.config().GetString(cfgRPCEndpoint), rpcclient.Options{})
|
||||
if err != nil {
|
||||
a.log.Fatal(logs.InitRPCClientFailed, zap.Error(err), logs.TagField(logs.TagApp))
|
||||
}
|
||||
return rpcCli
|
||||
}
|
||||
|
||||
func (a *app) initAppSettings(lc *logLevelConfig) {
|
||||
a.settings = &appSettings{
|
||||
reconnectInterval: fetchReconnectInterval(a.config()),
|
||||
|
@ -408,7 +419,7 @@ func (s *appSettings) FormContainerZone(ns string) string {
|
|||
s.mu.RLock()
|
||||
namespaces := s.defaultNamespaces
|
||||
s.mu.RUnlock()
|
||||
if slices.Contains(namespaces, ns) {
|
||||
if len(ns) == 0 || slices.Contains(namespaces, ns) {
|
||||
return v2container.SysAttributeZoneDefault
|
||||
}
|
||||
|
||||
|
@ -741,7 +752,22 @@ func (a *app) stopServices() {
|
|||
}
|
||||
|
||||
func (a *app) configureRouter(workerPool *ants.Pool) {
|
||||
a.handle = handler.New(a.AppParams(), a.settings, tree.NewTree(frostfs.NewPoolWrapper(a.treePool), a.log), workerPool)
|
||||
rpcCli := a.initRPCClient(a.ctx)
|
||||
cnrContractName := a.config().GetString(cfgContractsContainerName)
|
||||
rpcEndpoint := a.config().GetString(cfgRPCEndpoint)
|
||||
cnrAddr, err := contractsUtil.ResolveContractHash(cnrContractName, rpcEndpoint)
|
||||
if err != nil {
|
||||
a.log.Fatal(logs.FailedToResolveContractHash, zap.Error(err), logs.TagField(logs.TagApp))
|
||||
}
|
||||
cnrClient, err := containerClient.New(containerClient.Config{
|
||||
ContractHash: cnrAddr,
|
||||
Key: a.key,
|
||||
RPCClient: rpcCli,
|
||||
})
|
||||
if err != nil {
|
||||
a.log.Fatal(logs.InitContainerContractFailed, zap.Error(err), logs.TagField(logs.TagApp))
|
||||
}
|
||||
a.handle = handler.New(a.AppParams(), a.settings, tree.NewTree(frostfs.NewPoolWrapper(a.treePool), a.log), cnrClient, workerPool)
|
||||
|
||||
r := router.New()
|
||||
r.RedirectTrailingSlash = true
|
||||
|
|
|
@ -62,6 +62,8 @@ const (
|
|||
|
||||
defaultMultinetFallbackDelay = 300 * time.Millisecond
|
||||
|
||||
defaultContainerContractName = "container.frostfs"
|
||||
|
||||
cfgServer = "server"
|
||||
cfgTLSEnabled = "tls.enabled"
|
||||
cfgTLSCertFile = "tls.cert_file"
|
||||
|
@ -196,6 +198,9 @@ const (
|
|||
cmdConfig = "config"
|
||||
cmdConfigDir = "config-dir"
|
||||
cmdListenAddress = "listen_address"
|
||||
|
||||
// Contracts.
|
||||
cfgContractsContainerName = "contracts.container.name"
|
||||
)
|
||||
|
||||
var ignore = map[string]struct{}{
|
||||
|
@ -400,6 +405,9 @@ func setDefaults(v *viper.Viper, flags *pflag.FlagSet) {
|
|||
// multinet
|
||||
v.SetDefault(cfgMultinetFallbackDelay, defaultMultinetFallbackDelay)
|
||||
|
||||
// contracts
|
||||
v.SetDefault(cfgContractsContainerName, defaultContainerContractName)
|
||||
|
||||
if resolveMethods, err := flags.GetStringSlice(cfgResolveOrder); err == nil {
|
||||
v.SetDefault(cfgResolveOrder, resolveMethods)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue