feat(tfstated): use environment variables to customize listening hostname and port
This commit is contained in:
parent
4b538d43ed
commit
6d00e12097
2 changed files with 22 additions and 22 deletions
|
@ -17,14 +17,8 @@ import (
|
||||||
"git.adyxax.org/adyxax/tfstated/pkg/logger"
|
"git.adyxax.org/adyxax/tfstated/pkg/logger"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Config struct {
|
|
||||||
Host string
|
|
||||||
Port string
|
|
||||||
}
|
|
||||||
|
|
||||||
func run(
|
func run(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
config *Config,
|
|
||||||
db *database.DB,
|
db *database.DB,
|
||||||
//args []string,
|
//args []string,
|
||||||
getenv func(string) string,
|
getenv func(string) string,
|
||||||
|
@ -45,14 +39,23 @@ func run(
|
||||||
db,
|
db,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
host := getenv("TFSTATED_HOST")
|
||||||
|
if host == "" {
|
||||||
|
host = "127.0.0.1"
|
||||||
|
}
|
||||||
|
port := getenv("TFSTATED_PORT")
|
||||||
|
if port == "" {
|
||||||
|
port = "8080"
|
||||||
|
}
|
||||||
|
|
||||||
httpServer := &http.Server{
|
httpServer := &http.Server{
|
||||||
Addr: net.JoinHostPort(config.Host, config.Port),
|
Addr: net.JoinHostPort(host, port),
|
||||||
Handler: logger.Middleware(mux, false),
|
Handler: logger.Middleware(mux, false),
|
||||||
}
|
}
|
||||||
go func() {
|
go func() {
|
||||||
log.Printf("listening on %s\n", httpServer.Addr)
|
log.Printf("listening on %s\n", httpServer.Addr)
|
||||||
if err := httpServer.ListenAndServe(); err != nil && err != http.ErrServerClosed {
|
if err := httpServer.ListenAndServe(); err != nil && err != http.ErrServerClosed {
|
||||||
fmt.Fprintf(stderr, "error listening and serving: %+v\n", err)
|
_, _ = fmt.Fprintf(stderr, "error listening and serving: %+v\n", err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
|
@ -64,7 +67,7 @@ func run(
|
||||||
shutdownCtx, cancel := context.WithTimeout(shutdownCtx, 10*time.Second)
|
shutdownCtx, cancel := context.WithTimeout(shutdownCtx, 10*time.Second)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
if err := httpServer.Shutdown(shutdownCtx); err != nil {
|
if err := httpServer.Shutdown(shutdownCtx); err != nil {
|
||||||
fmt.Fprintf(stderr, "error shutting down http server: %+v\n", err)
|
_, _ = fmt.Fprintf(stderr, "error shutting down http server: %+v\n", err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
|
@ -76,7 +79,7 @@ func main() {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|
||||||
var opts *slog.HandlerOptions
|
var opts *slog.HandlerOptions
|
||||||
if os.Getenv("TFSTATE_DEBUG") != "" {
|
if os.Getenv("TFSTATED_DEBUG") != "" {
|
||||||
opts = &slog.HandlerOptions{
|
opts = &slog.HandlerOptions{
|
||||||
AddSource: true,
|
AddSource: true,
|
||||||
Level: slog.LevelDebug,
|
Level: slog.LevelDebug,
|
||||||
|
@ -85,12 +88,11 @@ func main() {
|
||||||
logger := slog.New(slog.NewJSONHandler(os.Stdout, opts))
|
logger := slog.New(slog.NewJSONHandler(os.Stdout, opts))
|
||||||
slog.SetDefault(logger)
|
slog.SetDefault(logger)
|
||||||
|
|
||||||
config := Config{
|
db, err := database.NewDB(
|
||||||
Host: "0.0.0.0",
|
ctx,
|
||||||
Port: "8080",
|
"./tfstate.db?_txlock=immediate",
|
||||||
}
|
os.Getenv,
|
||||||
|
)
|
||||||
db, err := database.NewDB(ctx, "./tfstate.db?_txlock=immediate", os.Getenv)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Fprintf(os.Stderr, "database init error: %+v\n", err)
|
fmt.Fprintf(os.Stderr, "database init error: %+v\n", err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
|
@ -99,7 +101,6 @@ func main() {
|
||||||
|
|
||||||
if err := run(
|
if err := run(
|
||||||
ctx,
|
ctx,
|
||||||
&config,
|
|
||||||
db,
|
db,
|
||||||
//os.Args,
|
//os.Args,
|
||||||
os.Getenv,
|
os.Getenv,
|
||||||
|
|
|
@ -24,14 +24,14 @@ var adminPassword string
|
||||||
var adminPasswordMutex sync.Mutex
|
var adminPasswordMutex sync.Mutex
|
||||||
|
|
||||||
func TestMain(m *testing.M) {
|
func TestMain(m *testing.M) {
|
||||||
config := Config{
|
|
||||||
Host: "127.0.0.1",
|
|
||||||
Port: "8081",
|
|
||||||
}
|
|
||||||
getenv := func(key string) string {
|
getenv := func(key string) string {
|
||||||
switch key {
|
switch key {
|
||||||
case "DATA_ENCRYPTION_KEY":
|
case "DATA_ENCRYPTION_KEY":
|
||||||
return "hP3ZSCnY3LMgfTQjwTaGrhKwdA0yXMXIfv67OJnntqM="
|
return "hP3ZSCnY3LMgfTQjwTaGrhKwdA0yXMXIfv67OJnntqM="
|
||||||
|
case "TFSTATED_HOST":
|
||||||
|
return "127.0.0.1"
|
||||||
|
case "TFSTATED_PORT":
|
||||||
|
return "8081"
|
||||||
case "VERSIONS_HISTORY_LIMIT":
|
case "VERSIONS_HISTORY_LIMIT":
|
||||||
return "3"
|
return "3"
|
||||||
default:
|
default:
|
||||||
|
@ -55,7 +55,6 @@ func TestMain(m *testing.M) {
|
||||||
}
|
}
|
||||||
go run(
|
go run(
|
||||||
ctx,
|
ctx,
|
||||||
&config,
|
|
||||||
db,
|
db,
|
||||||
getenv,
|
getenv,
|
||||||
os.Stderr,
|
os.Stderr,
|
||||||
|
|
Loading…
Add table
Reference in a new issue