Skip to content

Commit

Permalink
S3control API - manual adjustments
Browse files Browse the repository at this point in the history
Signed-off-by: kbujanecki-dt <krzysztof.bujanecki@dynatrace.com>
  • Loading branch information
kbujanecki-dt committed Jun 20, 2023
1 parent c40c512 commit 6dd0820
Show file tree
Hide file tree
Showing 3 changed files with 79 additions and 0 deletions.
2 changes: 2 additions & 0 deletions apis/aws.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ import (
route53resolverv1alpha1 "github.com/crossplane-contrib/provider-aws/apis/route53resolver/v1alpha1"
s3v1alpha2 "github.com/crossplane-contrib/provider-aws/apis/s3/v1alpha3"
s3v1beta1 "github.com/crossplane-contrib/provider-aws/apis/s3/v1beta1"
s3control "github.com/crossplane-contrib/provider-aws/apis/s3control/v1alpha1"
secretsmanagerv1alpha1 "github.com/crossplane-contrib/provider-aws/apis/secretsmanager/v1alpha1"
secretsmanagerv1beta1 "github.com/crossplane-contrib/provider-aws/apis/secretsmanager/v1beta1"
servicediscoveryv1alpha1 "github.com/crossplane-contrib/provider-aws/apis/servicediscovery/v1alpha1"
Expand Down Expand Up @@ -165,6 +166,7 @@ func init() {
batchmanualv1alpha1.SchemeBuilder.AddToScheme,
emrcontainersv1alpah1.SchemeBuilder.AddToScheme,
autoscalingv1beta1.SchemeBuilder.AddToScheme,
s3control.SchemeBuilder.AddToScheme,
)
}

Expand Down
2 changes: 2 additions & 0 deletions pkg/controller/aws.go
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,7 @@ import (
"github.com/crossplane-contrib/provider-aws/pkg/controller/route53resolver/resolverruleassociation"
"github.com/crossplane-contrib/provider-aws/pkg/controller/s3"
"github.com/crossplane-contrib/provider-aws/pkg/controller/s3/bucketpolicy"
s3control "github.com/crossplane-contrib/provider-aws/pkg/controller/s3control/accesspoint"
"github.com/crossplane-contrib/provider-aws/pkg/controller/secretsmanager/secret"
"github.com/crossplane-contrib/provider-aws/pkg/controller/servicediscovery/httpnamespace"
"github.com/crossplane-contrib/provider-aws/pkg/controller/servicediscovery/privatednsnamespace"
Expand Down Expand Up @@ -351,6 +352,7 @@ func Setup(mgr ctrl.Manager, o controller.Options) error {
emrcontainersvirtualcluster.SetupVirtualCluster,
optiongroup.SetupOptionGroup,
autoscalinggroup.SetupAutoScalingGroup,
s3control.SetupAccessPoint,
servicediscoveryservice.SetupService,
} {
if err := setup(mgr, o); err != nil {
Expand Down
75 changes: 75 additions & 0 deletions pkg/controller/s3control/accesspoint/setup.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
package accesspoint

import (
"context"

"github.com/crossplane/crossplane-runtime/pkg/meta"

svcsdk "github.com/aws/aws-sdk-go/service/s3control"
xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1"
"github.com/crossplane/crossplane-runtime/pkg/connection"
"github.com/crossplane/crossplane-runtime/pkg/controller"
"github.com/crossplane/crossplane-runtime/pkg/event"
"github.com/crossplane/crossplane-runtime/pkg/reconciler/managed"
"github.com/crossplane/crossplane-runtime/pkg/resource"
ctrl "sigs.k8s.io/controller-runtime"

svcapitypes "github.com/crossplane-contrib/provider-aws/apis/s3control/v1alpha1"
"github.com/crossplane-contrib/provider-aws/apis/v1alpha1"
aws "github.com/crossplane-contrib/provider-aws/pkg/clients"
"github.com/crossplane-contrib/provider-aws/pkg/features"
)

// SetupAccessPoint adds a controller that reconciles Stage.
func SetupAccessPoint(mgr ctrl.Manager, o controller.Options) error {
name := managed.ControllerName(svcapitypes.AccessPointGroupKind)

opts := []option{
func(e *external) {
e.preObserve = preObserve
e.postObserve = postObserve
e.preCreate = preCreate
e.preDelete = preDelete
},
}

cps := []managed.ConnectionPublisher{managed.NewAPISecretPublisher(mgr.GetClient(), mgr.GetScheme())}
if o.Features.Enabled(features.EnableAlphaExternalSecretStores) {
cps = append(cps, connection.NewDetailsManager(mgr.GetClient(), v1alpha1.StoreConfigGroupVersionKind))
}
return ctrl.NewControllerManagedBy(mgr).
Named(name).
WithOptions(o.ForControllerRuntime()).
WithEventFilter(resource.DesiredStateChanged()).
For(&svcapitypes.AccessPoint{}).
Complete(managed.NewReconciler(mgr,
resource.ManagedKind(svcapitypes.AccessPointGroupVersionKind),
managed.WithExternalConnecter(&connector{kube: mgr.GetClient(), opts: opts}),
managed.WithPollInterval(o.PollInterval),
managed.WithLogger(o.Logger.WithValues("controller", name)),
managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))),
managed.WithConnectionPublishers(cps...)))
}

func preDelete(_ context.Context, point *svcapitypes.AccessPoint, input *svcsdk.DeleteAccessPointInput) (bool, error) {
input.Name = aws.String(meta.GetExternalName(point))
return point.Spec.DeletionPolicy == xpv1.DeletionOrphan, nil
}

func preCreate(_ context.Context, point *svcapitypes.AccessPoint, input *svcsdk.CreateAccessPointInput) error {
input.Name = aws.String(meta.GetExternalName(point))
return nil
}

func preObserve(_ context.Context, point *svcapitypes.AccessPoint, input *svcsdk.GetAccessPointInput) error {
input.Name = aws.String(meta.GetExternalName(point))
return nil
}

func postObserve(_ context.Context, point *svcapitypes.AccessPoint, _ *svcsdk.GetAccessPointOutput, observation managed.ExternalObservation, err error) (managed.ExternalObservation, error) {
if err != nil {
return managed.ExternalObservation{}, err
}
point.SetConditions(xpv1.Available())
return observation, nil
}

0 comments on commit 6dd0820

Please sign in to comment.