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)

Signed-off-by: zzxwill <[email protected]>
  • Loading branch information
zzxwill committed Jul 22, 2021
1 parent ef3a3a2 commit 9d1b5c2
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 9d1b5c2

Please sign in to comment.