forked from giantswarm/aws-operator
/
current.go
45 lines (36 loc) · 1.04 KB
/
current.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package s3bucket
import (
"context"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/s3"
"github.com/giantswarm/aws-operator/service/awsconfig/v4/key"
"github.com/giantswarm/microerror"
)
func (r *Resource) GetCurrentState(ctx context.Context, obj interface{}) (interface{}, error) {
customObject, err := key.ToCustomObject(obj)
if err != nil {
return nil, microerror.Mask(err)
}
r.logger.LogCtx(ctx, "debug", "looking for the S3 bucket")
accountID, err := r.awsService.GetAccountID()
if err != nil {
return nil, microerror.Mask(err)
}
bucketName := key.BucketName(customObject, accountID)
headInput := &s3.HeadBucketInput{
Bucket: aws.String(bucketName),
}
_, err = r.clients.S3.HeadBucket(headInput)
if IsBucketNotFound(err) {
r.logger.LogCtx(ctx, "debug", "did not find the S3 bucket")
return BucketState{}, nil
}
if err != nil {
return BucketState{}, microerror.Mask(err)
}
bucketState := BucketState{
Name: bucketName,
}
r.logger.LogCtx(ctx, "debug", "found the S3 bucket")
return bucketState, nil
}