mirror of
https://github.com/edgelesssys/constellation.git
synced 2025-05-16 13:12:21 -04:00
Enable upload of TDX reports to Constellation CDN
Signed-off-by: Daniel Weiße <dw@edgeless.systems>
This commit is contained in:
parent
9159b60331
commit
d67d0ac9df
27 changed files with 782 additions and 531 deletions
|
@ -53,7 +53,7 @@ type Client struct {
|
|||
dirtyPaths []string // written paths to be invalidated
|
||||
DryRun bool // no write operations are performed
|
||||
|
||||
Logger *slog.Logger
|
||||
log *slog.Logger
|
||||
}
|
||||
|
||||
// NewReadOnlyClient creates a new read-only client.
|
||||
|
@ -77,7 +77,7 @@ func NewReadOnlyClient(ctx context.Context, region, bucket, distributionID strin
|
|||
s3ClientClose: staticUploadClientClose,
|
||||
bucket: bucket,
|
||||
DryRun: true,
|
||||
Logger: log,
|
||||
log: log,
|
||||
}
|
||||
clientClose := func(ctx context.Context) error {
|
||||
return client.Close(ctx)
|
||||
|
@ -106,7 +106,7 @@ func NewClient(ctx context.Context, region, bucket, distributionID string, dryRu
|
|||
s3ClientClose: staticUploadClientClose,
|
||||
bucket: bucket,
|
||||
DryRun: dryRun,
|
||||
Logger: log,
|
||||
log: log,
|
||||
}
|
||||
clientClose := func(ctx context.Context) error {
|
||||
return client.Close(ctx)
|
||||
|
@ -119,7 +119,7 @@ func NewClient(ctx context.Context, region, bucket, distributionID string, dryRu
|
|||
// It invalidates the CDN cache for all uploaded files.
|
||||
func (c *Client) Close(ctx context.Context) error {
|
||||
if c.s3ClientClose == nil {
|
||||
c.Logger.Debug("Client has no s3ClientClose")
|
||||
c.log.Debug("Client has no s3ClientClose")
|
||||
return nil
|
||||
}
|
||||
return c.s3ClientClose(ctx)
|
||||
|
@ -131,7 +131,7 @@ func (c *Client) DeletePath(ctx context.Context, path string) error {
|
|||
Bucket: &c.bucket,
|
||||
Prefix: &path,
|
||||
}
|
||||
c.Logger.Debug(fmt.Sprintf("Listing objects in %q", path))
|
||||
c.log.Debug(fmt.Sprintf("Listing objects in %q", path))
|
||||
objs := []s3types.Object{}
|
||||
out := &s3.ListObjectsV2Output{IsTruncated: ptr(true)}
|
||||
for out.IsTruncated != nil && *out.IsTruncated {
|
||||
|
@ -142,10 +142,10 @@ func (c *Client) DeletePath(ctx context.Context, path string) error {
|
|||
}
|
||||
objs = append(objs, out.Contents...)
|
||||
}
|
||||
c.Logger.Debug(fmt.Sprintf("Found %d objects in %q", len(objs), path))
|
||||
c.log.Debug(fmt.Sprintf("Found %d objects in %q", len(objs), path))
|
||||
|
||||
if len(objs) == 0 {
|
||||
c.Logger.Warn(fmt.Sprintf("Path %s is already empty", path))
|
||||
c.log.Warn(fmt.Sprintf("Path %s is already empty", path))
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -155,7 +155,7 @@ func (c *Client) DeletePath(ctx context.Context, path string) error {
|
|||
}
|
||||
|
||||
if c.DryRun {
|
||||
c.Logger.Debug(fmt.Sprintf("DryRun: Deleting %d objects with IDs %v", len(objs), objIDs))
|
||||
c.log.Debug(fmt.Sprintf("DryRun: Deleting %d objects with IDs %v", len(objs), objIDs))
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -167,7 +167,7 @@ func (c *Client) DeletePath(ctx context.Context, path string) error {
|
|||
Objects: objIDs,
|
||||
},
|
||||
}
|
||||
c.Logger.Debug(fmt.Sprintf("Deleting %d objects in %q", len(objs), path))
|
||||
c.log.Debug(fmt.Sprintf("Deleting %d objects in %q", len(objs), path))
|
||||
if _, err := c.s3Client.DeleteObjects(ctx, deleteIn); err != nil {
|
||||
return fmt.Errorf("deleting objects in %s: %w", path, err)
|
||||
}
|
||||
|
@ -197,7 +197,7 @@ func Fetch[T APIObject](ctx context.Context, c *Client, obj T) (T, error) {
|
|||
Key: ptr(obj.JSONPath()),
|
||||
}
|
||||
|
||||
c.Logger.Debug(fmt.Sprintf("Fetching %T from s3: %q", obj, obj.JSONPath()))
|
||||
c.log.Debug(fmt.Sprintf("Fetching %T from s3: %q", obj, obj.JSONPath()))
|
||||
out, err := c.s3Client.GetObject(ctx, in)
|
||||
var noSuchkey *s3types.NoSuchKey
|
||||
if errors.As(err, &noSuchkey) {
|
||||
|
@ -231,7 +231,7 @@ func Update(ctx context.Context, c *Client, obj APIObject) error {
|
|||
}
|
||||
|
||||
if c.DryRun {
|
||||
c.Logger.With(slog.String("bucket", c.bucket), slog.String("key", obj.JSONPath()), slog.String("body", string(rawJSON))).Debug("DryRun: s3 put object")
|
||||
c.log.With(slog.String("bucket", c.bucket), slog.String("key", obj.JSONPath()), slog.String("body", string(rawJSON))).Debug("DryRun: s3 put object")
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -243,7 +243,7 @@ func Update(ctx context.Context, c *Client, obj APIObject) error {
|
|||
|
||||
c.dirtyPaths = append(c.dirtyPaths, "/"+obj.JSONPath())
|
||||
|
||||
c.Logger.Debug(fmt.Sprintf("Uploading %T to s3: %q", obj, obj.JSONPath()))
|
||||
c.log.Debug(fmt.Sprintf("Uploading %T to s3: %q", obj, obj.JSONPath()))
|
||||
if _, err := c.Upload(ctx, in); err != nil {
|
||||
return fmt.Errorf("uploading %T: %w", obj, err)
|
||||
}
|
||||
|
@ -306,7 +306,7 @@ func Delete(ctx context.Context, c *Client, obj APIObject) error {
|
|||
Key: ptr(obj.JSONPath()),
|
||||
}
|
||||
|
||||
c.Logger.Debug(fmt.Sprintf("Deleting %T from s3: %q", obj, obj.JSONPath()))
|
||||
c.log.Debug(fmt.Sprintf("Deleting %T from s3: %q", obj, obj.JSONPath()))
|
||||
if _, err := c.DeleteObject(ctx, in); err != nil {
|
||||
return fmt.Errorf("deleting s3 object at %s: %w", obj.JSONPath(), err)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue