From b2dd00dd5b83fc7e8b311a55f5a2536e4f3d45a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Espino?= Date: Wed, 7 Mar 2018 20:04:18 +0000 Subject: Adding enterprise commands support (#8327) --- cmd/commands/jobserver.go | 64 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 cmd/commands/jobserver.go (limited to 'cmd/commands/jobserver.go') diff --git a/cmd/commands/jobserver.go b/cmd/commands/jobserver.go new file mode 100644 index 000000000..b96984b41 --- /dev/null +++ b/cmd/commands/jobserver.go @@ -0,0 +1,64 @@ +// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +package commands + +import ( + "os" + "os/signal" + "syscall" + + l4g "github.com/alecthomas/log4go" + "github.com/mattermost/mattermost-server/cmd" + "github.com/spf13/cobra" +) + +var JobserverCmd = &cobra.Command{ + Use: "jobserver", + Short: "Start the Mattermost job server", + Run: jobserverCmdF, +} + +func init() { + JobserverCmd.Flags().Bool("nojobs", false, "Do not run jobs on this jobserver.") + JobserverCmd.Flags().Bool("noschedule", false, "Do not schedule jobs from this jobserver.") + + cmd.RootCmd.AddCommand(JobserverCmd) +} + +func jobserverCmdF(command *cobra.Command, args []string) { + // Options + noJobs, _ := command.Flags().GetBool("nojobs") + noSchedule, _ := command.Flags().GetBool("noschedule") + + // Initialize + a, err := cmd.InitDBCommandContext("config.json") + if err != nil { + panic(err.Error()) + } + defer l4g.Close() + defer a.Shutdown() + + a.LoadLicense() + + // Run jobs + l4g.Info("Starting Mattermost job server") + if !noJobs { + a.Jobs.StartWorkers() + } + if !noSchedule { + a.Jobs.StartSchedulers() + } + + signalChan := make(chan os.Signal, 1) + signal.Notify(signalChan, os.Interrupt, syscall.SIGINT, syscall.SIGTERM) + <-signalChan + + // Cleanup anything that isn't handled by a defer statement + l4g.Info("Stopping Mattermost job server") + + a.Jobs.StopSchedulers() + a.Jobs.StopWorkers() + + l4g.Info("Stopped Mattermost job server") +} -- cgit v1.2.3-1-g7c22