Skip to content

Commit

Permalink
Upgrade ProviderConfig version to v1beta1
Browse files Browse the repository at this point in the history
By upgrading the version of ProviderConfig to v1beta1 can fix the
build issue and simplify the process of managed resource connection.

Fixed the issue mentioned in crossplane-contrib#64 (comment)
  • Loading branch information
zzxwill committed Jul 22, 2021
1 parent ef3a3a2 commit 4b6a71c
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 76 deletions.
46 changes: 8 additions & 38 deletions pkg/controller/sls/machineGroupBinding_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,11 @@ import (
"github.com/crossplane/crossplane-runtime/pkg/reconciler/managed"
"github.com/crossplane/crossplane-runtime/pkg/resource"
"github.com/pkg/errors"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/types"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/client"

aliv1alpha1 "github.com/crossplane/provider-alibaba/apis/sls/v1alpha1"
"github.com/crossplane/provider-alibaba/apis/v1alpha1"
"github.com/crossplane/provider-alibaba/apis/v1beta1"
slsclient "github.com/crossplane/provider-alibaba/pkg/clients/sls"
"github.com/crossplane/provider-alibaba/pkg/util"
)
Expand All @@ -57,7 +55,7 @@ func SetupMachineGroupBinding(mgr ctrl.Manager, l logging.Logger) error {
managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))),
managed.WithExternalConnecter(&machineGroupBindingConnector{
client: mgr.GetClient(),
usage: resource.NewProviderConfigUsageTracker(mgr.GetClient(), &v1alpha1.ProviderConfigUsage{}),
usage: resource.NewProviderConfigUsageTracker(mgr.GetClient(), &v1beta1.ProviderConfigUsage{}),
NewClientFn: slsclient.NewClient,
})))
}
Expand All @@ -73,44 +71,16 @@ type machineGroupBindingConnector struct {
func (c *machineGroupBindingConnector) Connect(ctx context.Context, mg resource.Managed) (managed.ExternalClient, error) {
cr, ok := mg.(*aliv1alpha1.MachineGroupBinding)
if !ok {
return nil, errors.New(errNotMachineGroupBinding)
return nil, errors.New(errNotLogtail)
}

var (
sel *xpv1.SecretKeySelector
region string
)

switch {
case cr.GetProviderConfigReference() != nil:
if err := c.usage.Track(ctx, mg); err != nil {
return nil, errors.Wrap(err, errTrackUsage)
}

pc := &v1alpha1.ProviderConfig{}
if err := c.client.Get(ctx, types.NamespacedName{Name: cr.Spec.ProviderConfigReference.Name}, pc); err != nil {
return nil, errors.Wrap(err, errGetProviderConfig)
}
if s := pc.Spec.Credentials.Source; s != xpv1.CredentialsSourceSecret {
return nil, errors.Errorf(errFmtUnsupportedCredSource, s)
}
sel = pc.Spec.Credentials.SecretRef
region = pc.Spec.Region
default:
return nil, errors.New(errNoProvider)
}

if sel == nil {
return nil, errors.New(errNoConnectionSecret)
}

s := &corev1.Secret{}
nn := types.NamespacedName{Namespace: sel.Namespace, Name: sel.Name}
if err := c.client.Get(ctx, nn, s); err != nil {
return nil, errors.Wrap(err, errGetConnectionSecret)
info, err := util.PrepareClient(ctx, mg, cr, c.client, c.usage, cr.Spec.ProviderConfigReference.Name)
if err != nil {
return nil, err
}

slsClient := c.NewClientFn(string(s.Data[util.AccessKeyID]), string(s.Data[util.AccessKeySecret]), string(s.Data[util.SecurityToken]), region)
slsClient := c.NewClientFn(info.AccessKeyID, info.AccessKeySecret,
info.SecurityToken, info.Region)
return &machineGroupBindingExternal{client: slsClient}, nil
}

Expand Down
46 changes: 8 additions & 38 deletions pkg/controller/sls/machineGroup_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,11 @@ import (
"github.com/crossplane/crossplane-runtime/pkg/reconciler/managed"
"github.com/crossplane/crossplane-runtime/pkg/resource"
"github.com/pkg/errors"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/types"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/client"

aliv1alpha1 "github.com/crossplane/provider-alibaba/apis/sls/v1alpha1"
"github.com/crossplane/provider-alibaba/apis/v1alpha1"
"github.com/crossplane/provider-alibaba/apis/v1beta1"
slsclient "github.com/crossplane/provider-alibaba/pkg/clients/sls"
"github.com/crossplane/provider-alibaba/pkg/util"
)
Expand All @@ -56,7 +54,7 @@ func SetupMachineGroup(mgr ctrl.Manager, l logging.Logger) error {
managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))),
managed.WithExternalConnecter(&machineGroupConnector{
client: mgr.GetClient(),
usage: resource.NewProviderConfigUsageTracker(mgr.GetClient(), &v1alpha1.ProviderConfigUsage{}),
usage: resource.NewProviderConfigUsageTracker(mgr.GetClient(), &v1beta1.ProviderConfigUsage{}),
NewClientFn: slsclient.NewClient,
})))
}
Expand All @@ -72,44 +70,16 @@ type machineGroupConnector struct {
func (c *machineGroupConnector) Connect(ctx context.Context, mg resource.Managed) (managed.ExternalClient, error) {
cr, ok := mg.(*aliv1alpha1.MachineGroup)
if !ok {
return nil, errors.New(errNotMachineGroup)
return nil, errors.New(errNotLogtail)
}

var (
sel *xpv1.SecretKeySelector
region string
)

switch {
case cr.GetProviderConfigReference() != nil:
if err := c.usage.Track(ctx, mg); err != nil {
return nil, errors.Wrap(err, errTrackUsage)
}

pc := &v1alpha1.ProviderConfig{}
if err := c.client.Get(ctx, types.NamespacedName{Name: cr.Spec.ProviderConfigReference.Name}, pc); err != nil {
return nil, errors.Wrap(err, errGetProviderConfig)
}
if s := pc.Spec.Credentials.Source; s != xpv1.CredentialsSourceSecret {
return nil, errors.Errorf(errFmtUnsupportedCredSource, s)
}
sel = pc.Spec.Credentials.SecretRef
region = pc.Spec.Region
default:
return nil, errors.New(errNoProvider)
}

if sel == nil {
return nil, errors.New(errNoConnectionSecret)
}

s := &corev1.Secret{}
nn := types.NamespacedName{Namespace: sel.Namespace, Name: sel.Name}
if err := c.client.Get(ctx, nn, s); err != nil {
return nil, errors.Wrap(err, errGetConnectionSecret)
info, err := util.PrepareClient(ctx, mg, cr, c.client, c.usage, cr.Spec.ProviderConfigReference.Name)
if err != nil {
return nil, err
}

slsClient := c.NewClientFn(string(s.Data[util.AccessKeyID]), string(s.Data[util.AccessKeySecret]), string(s.Data[util.SecurityToken]), region)
slsClient := c.NewClientFn(info.AccessKeyID, info.AccessKeySecret,
info.SecurityToken, info.Region)
return &machineGroupExternal{client: slsClient}, nil
}

Expand Down

0 comments on commit 4b6a71c

Please sign in to comment.