sync-server config: Read from a YAML file rather than hard-coded variables (#53)
This commit is contained in:
parent
a423008987
commit
2d2c7e7169
3 changed files with 47 additions and 16 deletions
|
@ -22,9 +22,9 @@ type ClientAPI struct {
|
|||
// Sync contains the config information necessary to spin up a sync-server process.
|
||||
type Sync struct {
|
||||
// The topic for events which are written by the room server output log.
|
||||
RoomserverOutputTopic string
|
||||
RoomserverOutputTopic string `yaml:"roomserver_topic"`
|
||||
// A list of URIs to consume events from. These kafka logs should be produced by a Room Server.
|
||||
KafkaConsumerURIs []string
|
||||
KafkaConsumerURIs []string `yaml:"consumer_uris"`
|
||||
// The postgres connection config for connecting to the database e.g a postgres:// URI
|
||||
DataSource string
|
||||
DataSource string `yaml:"database"`
|
||||
}
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
@ -12,8 +14,12 @@ import (
|
|||
|
||||
log "github.com/Sirupsen/logrus"
|
||||
"github.com/matrix-org/dugong"
|
||||
yaml "gopkg.in/yaml.v2"
|
||||
)
|
||||
|
||||
var configPath = flag.String("config", "sync-server-config.yaml", "The path to the config file. For more information, see the config file in this repository.")
|
||||
var bindAddr = flag.String("listen", ":4200", "The port to listen on.")
|
||||
|
||||
func setupLogging(logDir string) {
|
||||
_ = os.Mkdir(logDir, os.ModePerm)
|
||||
log.AddHook(dugong.NewFSHook(
|
||||
|
@ -29,30 +35,46 @@ func setupLogging(logDir string) {
|
|||
))
|
||||
}
|
||||
|
||||
func loadConfig(configPath string) (*config.Sync, error) {
|
||||
contents, err := ioutil.ReadFile(configPath)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
var cfg config.Sync
|
||||
if err = yaml.Unmarshal(contents, &cfg); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// check required fields
|
||||
return &cfg, nil
|
||||
}
|
||||
|
||||
func main() {
|
||||
bindAddr := os.Getenv("BIND_ADDRESS")
|
||||
if bindAddr == "" {
|
||||
log.Panic("No BIND_ADDRESS environment variable found.")
|
||||
flag.Parse()
|
||||
|
||||
if *configPath == "" {
|
||||
log.Fatal("--config must be supplied")
|
||||
}
|
||||
cfg, err := loadConfig(*configPath)
|
||||
if err != nil {
|
||||
log.Fatalf("Invalid config file: %s", err)
|
||||
}
|
||||
|
||||
if *bindAddr == "" {
|
||||
log.Fatal("--listen must be supplied")
|
||||
}
|
||||
logDir := os.Getenv("LOG_DIR")
|
||||
if logDir != "" {
|
||||
setupLogging(logDir)
|
||||
}
|
||||
|
||||
cfg := config.Sync{
|
||||
KafkaConsumerURIs: []string{"localhost:9092"},
|
||||
RoomserverOutputTopic: "roomserverOutput",
|
||||
DataSource: "postgres://dendrite:itsasecret@localhost/syncserver?sslmode=disable",
|
||||
}
|
||||
|
||||
log.Info("Starting sync server")
|
||||
log.Info("sync server config: ", cfg)
|
||||
|
||||
db, err := storage.NewSyncServerDatabase(cfg.DataSource)
|
||||
if err != nil {
|
||||
log.Panicf("startup: failed to create sync server database with data source %s : %s", cfg.DataSource, err)
|
||||
}
|
||||
|
||||
server, err := sync.NewServer(&cfg, db)
|
||||
server, err := sync.NewServer(cfg, db)
|
||||
if err != nil {
|
||||
log.Panicf("startup: failed to create sync server: %s", err)
|
||||
}
|
||||
|
@ -60,6 +82,7 @@ func main() {
|
|||
log.Panicf("startup: failed to start sync server")
|
||||
}
|
||||
|
||||
routing.SetupSyncServerListeners(http.DefaultServeMux, http.DefaultClient, cfg)
|
||||
log.Fatal(http.ListenAndServe(bindAddr, nil))
|
||||
log.Info("Starting sync server on ", *bindAddr)
|
||||
routing.SetupSyncServerListeners(http.DefaultServeMux, http.DefaultClient, *cfg)
|
||||
log.Fatal(http.ListenAndServe(*bindAddr, nil))
|
||||
}
|
||||
|
|
8
sync-server-config.yaml
Normal file
8
sync-server-config.yaml
Normal file
|
@ -0,0 +1,8 @@
|
|||
# A list of URIs which host Kafka logs.
|
||||
consumer_uris: ["localhost:9092"]
|
||||
|
||||
# The name of the topic which the sync server will consume events from.
|
||||
roomserver_topic: "roomserverOutput"
|
||||
|
||||
# The database URI to store sync server information.
|
||||
database: "postgres://dendrite:itsasecret@localhost/syncserver?sslmode=disable"
|
Loading…
Reference in a new issue