Skip to content

Commit

Permalink
fix compose and list pats
Browse files Browse the repository at this point in the history
Signed-off-by: Arvindh <arvindh91@gmail.com>
  • Loading branch information
arvindh123 committed Jul 12, 2024
1 parent f811a66 commit 9d4f0e3
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 21 deletions.
33 changes: 20 additions & 13 deletions auth/bolt/pat.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,11 @@ func (pr *patRepo) Save(ctx context.Context, pat auth.PAT) error {
return err
}
return pr.db.Update(func(tx *bolt.Tx) error {
b, err := pr.createRetrieveUserBucket(tx, pat.User)
rootBucket, err := pr.retrieveRootBucket(tx)
if err != nil {
return errors.Wrap(repoerr.ErrCreateEntity, err)
}
b, err := pr.createUserBucket(rootBucket, pat.User)
if err != nil {
return errors.Wrap(repoerr.ErrCreateEntity, err)
}
Expand All @@ -74,7 +78,7 @@ func (pr *patRepo) Save(ctx context.Context, pat auth.PAT) error {
return errors.Wrap(repoerr.ErrCreateEntity, err)
}
}
if err := b.Put([]byte(pat.User+keySeparator+patKey+pat.ID), []byte(pat.ID)); err != nil {
if err := rootBucket.Put([]byte(pat.User+keySeparator+patKey+keySeparator+pat.ID), []byte(pat.ID)); err != nil {
return errors.Wrap(repoerr.ErrCreateEntity, err)
}
return nil
Expand Down Expand Up @@ -139,7 +143,7 @@ func (pr *patRepo) RetrieveAll(ctx context.Context, userID string, pm auth.PATSP

patIDs := []string{}
if err := pr.db.View(func(tx *bolt.Tx) error {
b, err := pr.retrieveUserBucket(tx, userID)
b, err := pr.retrieveRootBucket(tx)
if err != nil {
return errors.Wrap(repoerr.ErrViewEntity, err)
}
Expand Down Expand Up @@ -175,7 +179,7 @@ func (pr *patRepo) RetrieveAll(ctx context.Context, userID string, pm auth.PATSP
}

for i := pm.Offset; i < aLimit; i++ {
if total < int(i) {
if int(i) < total {
pat, err := pr.Retrieve(ctx, userID, patIDs[i])
if err != nil {
return patsPage, err
Expand Down Expand Up @@ -319,12 +323,7 @@ func (pr *patRepo) RemoveAllScopeEntry(ctx context.Context, userID, patID string
return nil
}

func (pr *patRepo) createRetrieveUserBucket(tx *bolt.Tx, userID string) (*bolt.Bucket, error) {
rootBucket := tx.Bucket([]byte(pr.bucketName))
if rootBucket == nil {
return nil, errors.Wrap(repoerr.ErrCreateEntity, fmt.Errorf("bucket %s not found", pr.bucketName))
}

func (pr *patRepo) createUserBucket(rootBucket *bolt.Bucket, userID string) (*bolt.Bucket, error) {
userBucket, err := rootBucket.CreateBucketIfNotExists([]byte(userID))
if err != nil {
return nil, errors.Wrap(repoerr.ErrCreateEntity, fmt.Errorf("failed to retrieve or create bucket for user %s : %w", userID, err))
Expand All @@ -334,9 +333,9 @@ func (pr *patRepo) createRetrieveUserBucket(tx *bolt.Tx, userID string) (*bolt.B
}

func (pr *patRepo) retrieveUserBucket(tx *bolt.Tx, userID string) (*bolt.Bucket, error) {
rootBucket := tx.Bucket([]byte(pr.bucketName))
if rootBucket == nil {
return nil, fmt.Errorf("bucket %s not found", pr.bucketName)
rootBucket, err := pr.retrieveRootBucket(tx)
if err != nil {
return nil, err
}

userBucket := rootBucket.Bucket([]byte(userID))
Expand All @@ -346,6 +345,14 @@ func (pr *patRepo) retrieveUserBucket(tx *bolt.Tx, userID string) (*bolt.Bucket,
return userBucket, nil
}

func (pr *patRepo) retrieveRootBucket(tx *bolt.Tx) (*bolt.Bucket, error) {
rootBucket := tx.Bucket([]byte(pr.bucketName))
if rootBucket == nil {
return nil, fmt.Errorf("bucket %s not found", pr.bucketName)
}
return rootBucket, nil
}

func (pr *patRepo) updatePATField(_ context.Context, userID, patID, key string, value []byte) (auth.PAT, error) {
prefix := []byte(patID + keySeparator)
kv := map[string][]byte{}
Expand Down
11 changes: 8 additions & 3 deletions cmd/auth/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ const (
envPrefixHTTP = "MG_AUTH_HTTP_"
envPrefixGrpc = "MG_AUTH_GRPC_"
envPrefixDB = "MG_AUTH_DB_"
envPrefixPATDB = "MG_AUTH_PAT_DB_"
defDB = "auth"
defSvcHTTPPort = "8189"
defSvcGRPCPort = "8181"
Expand Down Expand Up @@ -132,13 +133,17 @@ func main() {
}

boltDBConfig := boltclient.Config{}
if err := env.ParseWithOptions(&boltDBConfig, env.Options{}); err != nil {
panic(err)
if err := env.ParseWithOptions(&boltDBConfig, env.Options{Prefix: envPrefixPATDB}); err != nil {
logger.Error(fmt.Sprintf("failed to parse bolt db config : %s\n", err.Error()))
exitCode = 1
return
}

client, err := boltclient.Connect(boltDBConfig, bolt.Init)
if err != nil {
panic(err)
logger.Error(fmt.Sprintf("failed to connect to bolt db : %s\n", err.Error()))
exitCode = 1
return
}
defer client.Close()

Expand Down
2 changes: 2 additions & 0 deletions docker/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ volumes:
magistrala-mqtt-broker-volume:
magistrala-spicedb-db-volume:
magistrala-auth-db-volume:
magistrala-pat-db-volume:
magistrala-invitations-db-volume:
magistrala-ui-db-volume:

Expand Down Expand Up @@ -132,6 +133,7 @@ services:
- magistrala-base-net
volumes:
- ./spicedb/schema.zed:${MG_SPICEDB_SCHEMA_FILE}
- magistrala-pat-db-volume:/magistrala-data
# Auth gRPC mTLS server certificates
- type: bind
source: ${MG_AUTH_GRPC_SERVER_CERT:-ssl/certs/dummy/server_cert}
Expand Down
12 changes: 7 additions & 5 deletions internal/clients/bolt/bolt.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,11 @@ func (fm *FileMode) UnmarshalText(text []byte) error {

// Config contains BoltDB specific parameters.
type Config struct {
FilePath string `env:"FILE_PATH" envDefault:"./bolt.db"`
FileMode FileMode `env:"FILE_MODE" envDefault:"0600"`
Bucket string `env:"BUCKET" envDefault:"magistrala"`
Timeout time.Duration `env:"TIMEOUT" envDefault:"0"`
FileDirPath string `env:"FILE_DIR_PATH" envDefault:"./magistrala-data"`
FileName string `env:"FILE_NAME" envDefault:"magistrala-pat.db"`
FileMode FileMode `env:"FILE_MODE" envDefault:"0600"`
Bucket string `env:"BUCKET" envDefault:"magistrala"`
Timeout time.Duration `env:"TIMEOUT" envDefault:"0"`
}

// Setup load configuration from environment and creates new BoltDB.
Expand All @@ -59,7 +60,8 @@ func SetupDB(envPrefix string, initFn func(*bolt.Tx, string) error) (*bolt.DB, e

// Connect establishes connection to the BoltDB.
func Connect(cfg Config, initFn func(*bolt.Tx, string) error) (*bolt.DB, error) {
db, err := bolt.Open(cfg.FilePath, fs.FileMode(cfg.FileMode), nil)
filePath := cfg.FileDirPath + "/" + cfg.FileName
db, err := bolt.Open(filePath, fs.FileMode(cfg.FileMode), nil)
if err != nil {
return nil, errors.Wrap(errConnect, err)
}
Expand Down

0 comments on commit 9d4f0e3

Please sign in to comment.