summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2025-07-25 15:11:57 -0600
committermo khan <mo@mokhan.ca>2025-07-25 15:11:57 -0600
commit2d7af07415e7b843da03ef572f56057f6d5970ff (patch)
tree7f2be4529c2cd86531d911a598c334b48a0d3428
parentcc24c8fe6a045ea98ab9b4cd757a531389a50ac5 (diff)
refactor: extract init to load ioc container with dependencies
-rw-r--r--cmd/authzd/main.go51
-rw-r--r--pkg/authz/spice.go9
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),
+ })
}