Skip to content

Commit

Permalink
feat: add module aws registry (#8)
Browse files Browse the repository at this point in the history
Signed-off-by: KeisukeYamashita <keisuke.yamashita@linecorp.com>
  • Loading branch information
KeisukeYamashita authored Aug 1, 2022
1 parent d4c5314 commit 4bfc792
Showing 1 changed file with 51 additions and 5 deletions.
56 changes: 51 additions & 5 deletions internal/driver/s3/module.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@ package s3

import (
"context"
"fmt"
"io"
"os"

"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/service/s3"
"github.com/kerraform/kegistry/internal/driver"
"go.uber.org/zap"
Expand All @@ -23,21 +25,65 @@ func (d *module) CreateModule(ctx context.Context, namespace, provider, name str
}

func (d *module) CreateVersion(ctx context.Context, namespace, provider, name, version string) (*driver.CreateModuleVersionResult, error) {
return nil, nil
filepath := fmt.Sprintf("%s/%s/%s/%s/versions/%s/terraform-%s-%s-%s.tar.gz", driver.ModuleRootPath, namespace, provider, name, version, provider, name, version)
psc := s3.NewPresignClient(d.s3)
uploadURL, err := psc.PresignPutObject(ctx, &s3.PutObjectInput{
Bucket: aws.String(d.bucket),
Key: aws.String(filepath),
})
if err != nil {
return nil, err
}

return &driver.CreateModuleVersionResult{
Upload: uploadURL.URL,
}, nil
}

func (d *module) GetDownloadURL(ctx context.Context, namespace, provider, name, version string) (string, error) {
return "", nil
filepath := fmt.Sprintf("%s/%s/%s/%s/versions/%s/terraform-%s-%s-%s.tar.gz", driver.ModuleRootPath, namespace, provider, name, version, provider, name, version)

psc := s3.NewPresignClient(d.s3)
downloadURL, err := psc.PresignGetObject(ctx, &s3.GetObjectInput{
Bucket: aws.String(d.bucket),
Key: aws.String(filepath),
})

if err != nil {
return "", err
}

return downloadURL.URL, nil
}

func (d *module) GetModule(ctx context.Context, namespace, provider, name, version string) (*os.File, error) {
return nil, nil
return nil, ErrS3NotAllowed
}

func (d *module) ListAvailableVersions(ctx context.Context, namespace, provider, name string) ([]string, error) {
return nil, nil
prefix := fmt.Sprintf("%s/%s/%s/%s/versions", driver.ModuleRootPath, namespace, provider, name)
input := &s3.ListObjectsV2Input{
Bucket: aws.String(d.bucket),
Prefix: aws.String(prefix),
}

resp, err := d.s3.ListObjectsV2(ctx, input)
if err != nil {
return nil, err
}

d.logger.Debug("found versions",
zap.Int("count", len(resp.Contents)),
)

vs := []string{}
for _, obj := range resp.Contents {
vs = append(vs, *obj.Key)
}

return vs, nil
}

func (d *module) SavePackage(ctx context.Context, namespace, provider, name, version string, body io.Reader) error {
return nil
return ErrS3NotAllowed
}

0 comments on commit 4bfc792

Please sign in to comment.