diff options
| author | mo khan <mo@mokhan.ca> | 2025-07-25 15:11:57 -0600 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2025-07-25 15:11:57 -0600 |
| commit | 2d7af07415e7b843da03ef572f56057f6d5970ff (patch) | |
| tree | 7f2be4529c2cd86531d911a598c334b48a0d3428 | |
| parent | cc24c8fe6a045ea98ab9b4cd757a531389a50ac5 (diff) | |
refactor: extract init to load ioc container with dependencies
| -rw-r--r-- | cmd/authzd/main.go | 51 | ||||
| -rw-r--r-- | pkg/authz/spice.go | 9 |
2 files changed, 45 insertions, 15 deletions
diff --git a/cmd/authzd/main.go b/cmd/authzd/main.go index f79814c..ebc23f7 100644 --- a/cmd/authzd/main.go +++ b/cmd/authzd/main.go @@ -7,30 +7,58 @@ import ( "os/signal" "syscall" + "github.com/authzed/authzed-go/v1" + "github.com/rs/zerolog" "github.com/xlgmokha/x/pkg/env" + "github.com/xlgmokha/x/pkg/ioc" "github.com/xlgmokha/x/pkg/log" "github.com/xlgmokha/x/pkg/x" "gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/pkg/authz" "gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/pkg/pls" + "google.golang.org/grpc" ) +func init() { + c := ioc.Default + + ioc.RegisterSingleton[*zerolog.Logger](c, func() *zerolog.Logger { + return log.New(os.Stdout, log.Fields{"app": "authzd"}) + }) + ioc.RegisterSingleton[context.Context](c, func() context.Context { + logger := ioc.MustResolve[*zerolog.Logger](ioc.Default) + return logger.WithContext(context.Background()) + }) + + ioc.RegisterSingleton[*grpc.ClientConn](c, func() *grpc.ClientConn { + ctx := ioc.MustResolve[context.Context](ioc.Default) + return authz.NewGrpcConnection(ctx, env.Fetch("AUTHZD_HOST", ":20000")) + }) + + ioc.RegisterSingleton[*authzed.Client](c, func() *authzed.Client { + ctx := ioc.MustResolve[context.Context](ioc.Default) + return authz.NewSpiceDBClient( + ctx, + env.Fetch("ZED_ENDPOINT", ":50051"), + env.Fetch("ZED_TOKEN", "secret"), + ) + }) +} + func main() { - logger := log.New(os.Stdout, log.Fields{"app": "authzd"}) - ctx := logger.WithContext(context.Background()) + ctx := ioc.MustResolve[context.Context](ioc.Default) - connection := authz.NewGrpcConnection(ctx, env.Fetch("AUTHZD_HOST", ":20000")) + connection := ioc.MustResolve[*grpc.ClientConn](ioc.Default) defer connection.Close() - client := authz.NewSpiceDBClient( - ctx, - env.Fetch("ZED_ENDPOINT", ":50051"), - env.Fetch("ZED_TOKEN", "secret"), - ) + client := ioc.MustResolve[*authzed.Client](ioc.Default) defer client.Close() - err := authz.LoadSpiceSchema(ctx, client, "./etc/authzd/schema.zed") + + response, err := authz.WriteSchema(ctx, client, "./etc/authzd/schema.zed") if err != nil { pls.LogErrorNow(ctx, err) + os.Exit(1) } + pls.LogNow(ctx, log.Fields{"schema.write": response}) ctx = authz.Connection.With(ctx, connection) ctx = authz.Client.With(ctx, client) @@ -41,11 +69,12 @@ func main() { go func() { <-c server.GracefulStop() - logger.Log().Str("status", "goodbye").Send() + pls.LogNow(ctx, log.Fields{"status": "goodbye"}) }() defer server.GracefulStop() - logger.Log().Str("status", "ready").Send() + + pls.LogNow(ctx, log.Fields{"status": "read"}) socket := x.Must(net.Listen("tcp", ":10003")) pls.LogErrorNow(ctx, server.Serve(socket)) } diff --git a/pkg/authz/spice.go b/pkg/authz/spice.go index 97adbd4..e563375 100644 --- a/pkg/authz/spice.go +++ b/pkg/authz/spice.go @@ -26,12 +26,13 @@ type CheckPermissionService interface { CheckPermission(ctx context.Context, in *v1.CheckPermissionRequest, opts ...grpc.CallOption) (*v1.CheckPermissionResponse, error) } -func LoadSpiceSchema(ctx context.Context, client *authzed.Client, path string) error { +func WriteSchema(ctx context.Context, client *authzed.Client, path string) (*v1.WriteSchemaResponse, error) { content, err := os.ReadFile(path) - _, err = client.WriteSchema(ctx, &v1.WriteSchemaRequest{Schema: string(content)}) if err != nil { - return err + return nil, err } - return nil + return client.WriteSchema(ctx, &v1.WriteSchemaRequest{ + Schema: string(content), + }) } |
