remove more global refs (#7480)
Этот коммит содержится в:
коммит произвёл
George Goldberg
родитель
adab1a660f
Коммит
266ff86702
@@ -149,7 +149,7 @@ func (a *App) SaveConfig(cfg *model.Config, sendConfigChangeClusterMessage bool)
|
||||
return err
|
||||
}
|
||||
|
||||
if err := utils.ValidateLdapFilter(cfg); err != nil {
|
||||
if err := utils.ValidateLdapFilter(cfg, a.Ldap); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -187,7 +187,7 @@ func (a *App) RecycleDatabaseConnection() {
|
||||
oldStore := a.Srv.Store
|
||||
|
||||
l4g.Warn(utils.T("api.admin.recycle_db_start.warn"))
|
||||
a.Srv.Store = store.NewLayeredStore()
|
||||
a.Srv.Store = store.NewLayeredStore(a.Metrics, a.Cluster)
|
||||
|
||||
jobs.Srv.Store = a.Srv.Store
|
||||
|
||||
|
||||
94
app/app.go
94
app/app.go
@@ -9,7 +9,9 @@ import (
|
||||
"sync"
|
||||
|
||||
"github.com/mattermost/mattermost-server/einterfaces"
|
||||
"github.com/mattermost/mattermost-server/model"
|
||||
"github.com/mattermost/mattermost-server/plugin/pluginenv"
|
||||
"github.com/mattermost/mattermost-server/utils"
|
||||
)
|
||||
|
||||
type App struct {
|
||||
@@ -35,19 +37,93 @@ var initEnterprise sync.Once
|
||||
|
||||
func Global() *App {
|
||||
initEnterprise.Do(func() {
|
||||
globalApp.AccountMigration = einterfaces.GetAccountMigrationInterface()
|
||||
globalApp.Brand = einterfaces.GetBrandInterface()
|
||||
globalApp.Cluster = einterfaces.GetClusterInterface()
|
||||
globalApp.Compliance = einterfaces.GetComplianceInterface()
|
||||
globalApp.Elasticsearch = einterfaces.GetElasticsearchInterface()
|
||||
globalApp.Ldap = einterfaces.GetLdapInterface()
|
||||
globalApp.Metrics = einterfaces.GetMetricsInterface()
|
||||
globalApp.Mfa = einterfaces.GetMfaInterface()
|
||||
globalApp.Saml = einterfaces.GetSamlInterface()
|
||||
globalApp.initEnterprise()
|
||||
})
|
||||
return &globalApp
|
||||
}
|
||||
|
||||
var accountMigrationInterface func(*App) einterfaces.AccountMigrationInterface
|
||||
|
||||
func RegisterAccountMigrationInterface(f func(*App) einterfaces.AccountMigrationInterface) {
|
||||
accountMigrationInterface = f
|
||||
}
|
||||
|
||||
var clusterInterface func(*App) einterfaces.ClusterInterface
|
||||
|
||||
func RegisterClusterInterface(f func(*App) einterfaces.ClusterInterface) {
|
||||
clusterInterface = f
|
||||
}
|
||||
|
||||
var complianceInterface func(*App) einterfaces.ComplianceInterface
|
||||
|
||||
func RegisterComplianceInterface(f func(*App) einterfaces.ComplianceInterface) {
|
||||
complianceInterface = f
|
||||
}
|
||||
|
||||
var ldapInterface func(*App) einterfaces.LdapInterface
|
||||
|
||||
func RegisterLdapInterface(f func(*App) einterfaces.LdapInterface) {
|
||||
ldapInterface = f
|
||||
}
|
||||
|
||||
var metricsInterface func(*App) einterfaces.MetricsInterface
|
||||
|
||||
func RegisterMetricsInterface(f func(*App) einterfaces.MetricsInterface) {
|
||||
metricsInterface = f
|
||||
}
|
||||
|
||||
var mfaInterface func(*App) einterfaces.MfaInterface
|
||||
|
||||
func RegisterMfaInterface(f func(*App) einterfaces.MfaInterface) {
|
||||
mfaInterface = f
|
||||
}
|
||||
|
||||
var samlInterface func(*App) einterfaces.SamlInterface
|
||||
|
||||
func RegisterSamlInterface(f func(*App) einterfaces.SamlInterface) {
|
||||
samlInterface = f
|
||||
}
|
||||
|
||||
func (a *App) initEnterprise() {
|
||||
if accountMigrationInterface != nil {
|
||||
a.AccountMigration = accountMigrationInterface(a)
|
||||
}
|
||||
a.Brand = einterfaces.GetBrandInterface()
|
||||
if clusterInterface != nil {
|
||||
a.Cluster = clusterInterface(a)
|
||||
}
|
||||
if complianceInterface != nil {
|
||||
a.Compliance = complianceInterface(a)
|
||||
}
|
||||
a.Elasticsearch = einterfaces.GetElasticsearchInterface()
|
||||
if ldapInterface != nil {
|
||||
a.Ldap = ldapInterface(a)
|
||||
utils.AddConfigListener(func(_, cfg *model.Config) {
|
||||
if err := utils.ValidateLdapFilter(cfg, a.Ldap); err != nil {
|
||||
panic(utils.T(err.Id))
|
||||
}
|
||||
|
||||
a.Ldap.StartLdapSyncJob()
|
||||
})
|
||||
}
|
||||
if metricsInterface != nil {
|
||||
a.Metrics = metricsInterface(a)
|
||||
}
|
||||
if mfaInterface != nil {
|
||||
a.Mfa = mfaInterface(a)
|
||||
}
|
||||
if samlInterface != nil {
|
||||
a.Saml = samlInterface(a)
|
||||
utils.AddConfigListener(func(_, cfg *model.Config) {
|
||||
a.Saml.ConfigureSP()
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func (a *App) Config() *model.Config {
|
||||
return utils.Cfg
|
||||
}
|
||||
|
||||
func CloseBody(r *http.Response) {
|
||||
if r.Body != nil {
|
||||
ioutil.ReadAll(r.Body)
|
||||
|
||||
@@ -18,12 +18,14 @@ const (
|
||||
|
||||
type ClusterDiscoveryService struct {
|
||||
model.ClusterDiscovery
|
||||
app *App
|
||||
stop chan bool
|
||||
}
|
||||
|
||||
func NewClusterDiscoveryService() *ClusterDiscoveryService {
|
||||
func (a *App) NewClusterDiscoveryService() *ClusterDiscoveryService {
|
||||
ds := &ClusterDiscoveryService{
|
||||
ClusterDiscovery: model.ClusterDiscovery{},
|
||||
app: a,
|
||||
stop: make(chan bool),
|
||||
}
|
||||
|
||||
@@ -32,19 +34,19 @@ func NewClusterDiscoveryService() *ClusterDiscoveryService {
|
||||
|
||||
func (me *ClusterDiscoveryService) Start() {
|
||||
|
||||
<-Global().Srv.Store.ClusterDiscovery().Cleanup()
|
||||
<-me.app.Srv.Store.ClusterDiscovery().Cleanup()
|
||||
|
||||
if cresult := <-Global().Srv.Store.ClusterDiscovery().Exists(&me.ClusterDiscovery); cresult.Err != nil {
|
||||
if cresult := <-me.app.Srv.Store.ClusterDiscovery().Exists(&me.ClusterDiscovery); cresult.Err != nil {
|
||||
l4g.Error(fmt.Sprintf("ClusterDiscoveryService failed to check if row exists for %v with err=%v", me.ClusterDiscovery.ToJson(), cresult.Err))
|
||||
} else {
|
||||
if cresult.Data.(bool) {
|
||||
if u := <-Global().Srv.Store.ClusterDiscovery().Delete(&me.ClusterDiscovery); u.Err != nil {
|
||||
if u := <-me.app.Srv.Store.ClusterDiscovery().Delete(&me.ClusterDiscovery); u.Err != nil {
|
||||
l4g.Error(fmt.Sprintf("ClusterDiscoveryService failed to start clean for %v with err=%v", me.ClusterDiscovery.ToJson(), u.Err))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if result := <-Global().Srv.Store.ClusterDiscovery().Save(&me.ClusterDiscovery); result.Err != nil {
|
||||
if result := <-me.app.Srv.Store.ClusterDiscovery().Save(&me.ClusterDiscovery); result.Err != nil {
|
||||
l4g.Error(fmt.Sprintf("ClusterDiscoveryService failed to save for %v with err=%v", me.ClusterDiscovery.ToJson(), result.Err))
|
||||
return
|
||||
}
|
||||
@@ -54,7 +56,7 @@ func (me *ClusterDiscoveryService) Start() {
|
||||
ticker := time.NewTicker(DISCOVERY_SERVICE_WRITE_PING)
|
||||
defer func() {
|
||||
ticker.Stop()
|
||||
if u := <-Global().Srv.Store.ClusterDiscovery().Delete(&me.ClusterDiscovery); u.Err != nil {
|
||||
if u := <-me.app.Srv.Store.ClusterDiscovery().Delete(&me.ClusterDiscovery); u.Err != nil {
|
||||
l4g.Error(fmt.Sprintf("ClusterDiscoveryService failed to cleanup for %v with err=%v", me.ClusterDiscovery.ToJson(), u.Err))
|
||||
}
|
||||
l4g.Debug(fmt.Sprintf("ClusterDiscoveryService ping writer stopped for %v", me.ClusterDiscovery.ToJson()))
|
||||
@@ -63,7 +65,7 @@ func (me *ClusterDiscoveryService) Start() {
|
||||
for {
|
||||
select {
|
||||
case <-ticker.C:
|
||||
if u := <-Global().Srv.Store.ClusterDiscovery().SetLastPingAt(&me.ClusterDiscovery); u.Err != nil {
|
||||
if u := <-me.app.Srv.Store.ClusterDiscovery().SetLastPingAt(&me.ClusterDiscovery); u.Err != nil {
|
||||
l4g.Error(fmt.Sprintf("ClusterDiscoveryService failed to write ping for %v with err=%v", me.ClusterDiscovery.ToJson(), u.Err))
|
||||
}
|
||||
case <-me.stop:
|
||||
|
||||
@@ -12,9 +12,9 @@ import (
|
||||
)
|
||||
|
||||
func TestClusterDiscoveryService(t *testing.T) {
|
||||
Setup()
|
||||
th := Setup()
|
||||
|
||||
ds := NewClusterDiscoveryService()
|
||||
ds := th.App.NewClusterDiscoveryService()
|
||||
ds.Type = model.CDS_TYPE_APP
|
||||
ds.ClusterName = "ClusterA"
|
||||
ds.AutoFillHostname()
|
||||
|
||||
@@ -84,7 +84,7 @@ func (a *App) NewServer() {
|
||||
}
|
||||
|
||||
func (a *App) InitStores() {
|
||||
a.Srv.Store = store.NewLayeredStore()
|
||||
a.Srv.Store = store.NewLayeredStore(a.Metrics, a.Cluster)
|
||||
}
|
||||
|
||||
type VaryBy struct{}
|
||||
|
||||
Ссылка в новой задаче
Block a user