github.com/psyb0t/mattermost-server@v4.6.1-0.20180125161845-5503a1351abf+incompatible/jobs/server.go (about) 1 // Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved. 2 // See License.txt for license information. 3 4 package jobs 5 6 import ( 7 l4g "github.com/alecthomas/log4go" 8 9 ejobs "github.com/mattermost/mattermost-server/einterfaces/jobs" 10 "github.com/mattermost/mattermost-server/model" 11 "github.com/mattermost/mattermost-server/store" 12 "github.com/mattermost/mattermost-server/utils" 13 ) 14 15 type ConfigService interface { 16 Config() *model.Config 17 AddConfigListener(func(old, current *model.Config)) string 18 RemoveConfigListener(string) 19 } 20 21 type StaticConfigService struct { 22 Cfg *model.Config 23 } 24 25 func (s StaticConfigService) Config() *model.Config { return s.Cfg } 26 func (StaticConfigService) AddConfigListener(func(old, current *model.Config)) string { return "" } 27 func (StaticConfigService) RemoveConfigListener(string) {} 28 29 type JobServer struct { 30 ConfigService ConfigService 31 Store store.Store 32 Workers *Workers 33 Schedulers *Schedulers 34 35 DataRetentionJob ejobs.DataRetentionJobInterface 36 MessageExportJob ejobs.MessageExportJobInterface 37 ElasticsearchAggregator ejobs.ElasticsearchAggregatorInterface 38 ElasticsearchIndexer ejobs.ElasticsearchIndexerInterface 39 LdapSync ejobs.LdapSyncInterface 40 } 41 42 func NewJobServer(configService ConfigService, store store.Store) *JobServer { 43 return &JobServer{ 44 ConfigService: configService, 45 Store: store, 46 } 47 } 48 49 func (srv *JobServer) Config() *model.Config { 50 return srv.ConfigService.Config() 51 } 52 53 func (srv *JobServer) LoadLicense() { 54 licenseId := "" 55 if result := <-srv.Store.System().Get(); result.Err == nil { 56 props := result.Data.(model.StringMap) 57 licenseId = props[model.SYSTEM_ACTIVE_LICENSE_ID] 58 } 59 60 var licenseBytes []byte 61 62 if len(licenseId) != 26 { 63 // Lets attempt to load the file from disk since it was missing from the DB 64 _, licenseBytes = utils.GetAndValidateLicenseFileFromDisk(*srv.ConfigService.Config().ServiceSettings.LicenseFileLocation) 65 } else { 66 if result := <-srv.Store.License().Get(licenseId); result.Err == nil { 67 record := result.Data.(*model.LicenseRecord) 68 licenseBytes = []byte(record.Bytes) 69 l4g.Info("License key valid unlocking enterprise features.") 70 } else { 71 l4g.Info(utils.T("mattermost.load_license.find.warn")) 72 } 73 } 74 75 if licenseBytes != nil { 76 utils.LoadLicense(licenseBytes) 77 l4g.Info("License key valid unlocking enterprise features.") 78 } else { 79 l4g.Info(utils.T("mattermost.load_license.find.warn")) 80 } 81 } 82 83 func (srv *JobServer) StartWorkers() { 84 srv.Workers = srv.InitWorkers().Start() 85 } 86 87 func (srv *JobServer) StartSchedulers() { 88 srv.Schedulers = srv.InitSchedulers().Start() 89 } 90 91 func (srv *JobServer) StopWorkers() { 92 if srv.Workers != nil { 93 srv.Workers.Stop() 94 } 95 } 96 97 func (srv *JobServer) StopSchedulers() { 98 if srv.Schedulers != nil { 99 srv.Schedulers.Stop() 100 } 101 }