Skip to content

Commit 2c788ec

Browse files
committed
refactor: rename xpv1 alias to xpv2 for crossplane/apis/v2/core/v2
The common APIs were relocated to a v2 package, so the xpv1 alias no longer reflects the import path. Standardise on xpv2 across all hand-written files; also unify the lone v1 alias in sensitive.go onto the same name. mockgen-generated fake still uses its default basename alias (v2) since it is regenerated. Addresses review feedback on crossplane#664. Signed-off-by: JP Schoombee <jpschoombee@gmail.com>
1 parent cb113d5 commit 2c788ec

14 files changed

Lines changed: 175 additions & 175 deletions

pkg/config/resource.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313
"github.com/crossplane/crossplane-runtime/v2/pkg/fieldpath"
1414
"github.com/crossplane/crossplane-runtime/v2/pkg/reconciler/managed"
1515
xpresource "github.com/crossplane/crossplane-runtime/v2/pkg/resource"
16-
xpv1 "github.com/crossplane/crossplane/apis/v2/core/v2"
16+
xpv2 "github.com/crossplane/crossplane/apis/v2/core/v2"
1717
fwresource "github.com/hashicorp/terraform-plugin-framework/resource"
1818
rschema "github.com/hashicorp/terraform-plugin-framework/resource/schema"
1919
"github.com/hashicorp/terraform-plugin-go/tfprotov6"
@@ -348,7 +348,7 @@ func NewTagger(kube client.Client, fieldName string) *Tagger {
348348

349349
// Initialize is a custom initializer for setting external tags
350350
func (t *Tagger) Initialize(ctx context.Context, mg xpresource.Managed) error {
351-
if sets.New[xpv1.ManagementAction](mg.GetManagementPolicies()...).Equal(sets.New[xpv1.ManagementAction](xpv1.ManagementActionObserve)) {
351+
if sets.New[xpv2.ManagementAction](mg.GetManagementPolicies()...).Equal(sets.New[xpv2.ManagementAction](xpv2.ManagementActionObserve)) {
352352
// We don't want to add tags to the spec.forProvider if the resource is
353353
// only being Observed.
354354
return nil

pkg/controller/api.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88
"context"
99

1010
xpresource "github.com/crossplane/crossplane-runtime/v2/pkg/resource"
11-
xpv1 "github.com/crossplane/crossplane/apis/v2/core/v2"
11+
xpv2 "github.com/crossplane/crossplane/apis/v2/core/v2"
1212
"github.com/pkg/errors"
1313
v1 "k8s.io/api/core/v1"
1414
"k8s.io/apimachinery/pkg/runtime/schema"
@@ -54,7 +54,7 @@ type APISecretClient struct {
5454
}
5555

5656
// GetSecretData gets and returns data for the referenced secret
57-
func (a *APISecretClient) GetSecretData(ctx context.Context, ref *xpv1.SecretReference) (map[string][]byte, error) {
57+
func (a *APISecretClient) GetSecretData(ctx context.Context, ref *xpv2.SecretReference) (map[string][]byte, error) {
5858
secret := &v1.Secret{}
5959
if err := a.kube.Get(ctx, types.NamespacedName{Namespace: ref.Namespace, Name: ref.Name}, secret); err != nil {
6060
return nil, err
@@ -63,7 +63,7 @@ func (a *APISecretClient) GetSecretData(ctx context.Context, ref *xpv1.SecretRef
6363
}
6464

6565
// GetSecretValue gets and returns value for key of the referenced secret
66-
func (a *APISecretClient) GetSecretValue(ctx context.Context, sel xpv1.SecretKeySelector) ([]byte, error) {
66+
func (a *APISecretClient) GetSecretValue(ctx context.Context, sel xpv2.SecretKeySelector) ([]byte, error) {
6767
d, err := a.GetSecretData(ctx, &sel.SecretReference)
6868
if err != nil {
6969
return nil, errors.Wrap(err, "cannot get secret data")
@@ -143,9 +143,9 @@ func (ac *APICallbacks) callbackFn(nn types.NamespacedName, op asyncOperation, r
143143
case opDestroy:
144144
wrapMsg = errXPReconcileDelete
145145
}
146-
tr.SetConditions(xpv1.ReconcileError(errors.Wrap(err, wrapMsg)))
146+
tr.SetConditions(xpv2.ReconcileError(errors.Wrap(err, wrapMsg)))
147147
} else {
148-
tr.SetConditions(xpv1.ReconcileSuccess())
148+
tr.SetConditions(xpv2.ReconcileSuccess())
149149
}
150150
if ac.enableStatusUpdates {
151151
tr.SetConditions(resource.AsyncOperationFinishedCondition())

pkg/controller/external.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import (
1111
"github.com/crossplane/crossplane-runtime/v2/pkg/logging"
1212
"github.com/crossplane/crossplane-runtime/v2/pkg/reconciler/managed"
1313
xpresource "github.com/crossplane/crossplane-runtime/v2/pkg/resource"
14-
xpv1 "github.com/crossplane/crossplane/apis/v2/core/v2"
14+
xpv2 "github.com/crossplane/crossplane/apis/v2/core/v2"
1515
"github.com/pkg/errors"
1616
"k8s.io/apimachinery/pkg/types"
1717
"k8s.io/apimachinery/pkg/util/sets"
@@ -200,7 +200,7 @@ func (e *external) Observe(ctx context.Context, mg xpresource.Managed) (managed.
200200
return managed.ExternalObservation{}, errors.New(errUnexpectedObject)
201201
}
202202

203-
policySet := sets.New[xpv1.ManagementAction](tr.GetManagementPolicies()...)
203+
policySet := sets.New[xpv2.ManagementAction](tr.GetManagementPolicies()...)
204204

205205
// Note(turkenh): We don't need to check if the management policies are
206206
// enabled or not because the crossplane-runtime's managed reconciler already
@@ -211,7 +211,7 @@ func (e *external) Observe(ctx context.Context, mg xpresource.Managed) (managed.
211211
// Note (lsviben) We are only using import instead of refresh if the
212212
// management policies do not contain create or update as they need the
213213
// required fields to be set, which is not the case for import.
214-
if !policySet.HasAny(xpv1.ManagementActionCreate, xpv1.ManagementActionUpdate, xpv1.ManagementActionAll) {
214+
if !policySet.HasAny(xpv2.ManagementActionCreate, xpv2.ManagementActionUpdate, xpv2.ManagementActionAll) {
215215
return e.Import(ctx, tr)
216216
}
217217

@@ -261,7 +261,7 @@ func (e *external) Observe(ctx context.Context, mg xpresource.Managed) (managed.
261261
if err != nil {
262262
return managed.ExternalObservation{}, errors.Wrap(err, "cannot set critical annotations")
263263
}
264-
policyHasLateInit := policySet.HasAny(xpv1.ManagementActionLateInitialize, xpv1.ManagementActionAll)
264+
policyHasLateInit := policySet.HasAny(xpv2.ManagementActionLateInitialize, xpv2.ManagementActionAll)
265265
if annotationsUpdated && !policyHasLateInit {
266266
if err := e.kube.Update(ctx, mg); err != nil {
267267
return managed.ExternalObservation{}, errors.Wrap(err, errUpdateAnnotations)
@@ -294,7 +294,7 @@ func (e *external) Observe(ctx context.Context, mg xpresource.Managed) (managed.
294294
return managed.ExternalObservation{}, errors.Wrap(err, "cannot late initialize parameters")
295295
}
296296
}
297-
markedAvailable := tr.GetCondition(xpv1.TypeReady).Equal(xpv1.Available())
297+
markedAvailable := tr.GetCondition(xpv2.TypeReady).Equal(xpv2.Available())
298298

299299
// In the following switch block, before running a relatively costly
300300
// Terraform apply and that may fail before critical annotations are
@@ -321,7 +321,7 @@ func (e *external) Observe(ctx context.Context, mg xpresource.Managed) (managed.
321321
// we prioritize status updates over late-init'ed spec updates
322322
case !markedAvailable:
323323
addTTR(tr)
324-
tr.SetConditions(xpv1.Available())
324+
tr.SetConditions(xpv2.Available())
325325
e.logger.Debug("Resource is marked as available.")
326326
if e.eventHandler != nil {
327327
name := types.NamespacedName{
@@ -529,7 +529,7 @@ func (e *external) Import(ctx context.Context, tr resource.Terraformed) (managed
529529
return managed.ExternalObservation{}, errors.Wrap(err, "cannot set observation when importing")
530530
}
531531

532-
tr.SetConditions(xpv1.Available())
532+
tr.SetConditions(xpv2.Available())
533533
return managed.ExternalObservation{
534534
ResourceExists: true,
535535
ResourceUpToDate: true,

pkg/controller/external_async_tfpluginfw.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import (
1212
"github.com/crossplane/crossplane-runtime/v2/pkg/meta"
1313
"github.com/crossplane/crossplane-runtime/v2/pkg/reconciler/managed"
1414
xpresource "github.com/crossplane/crossplane-runtime/v2/pkg/resource"
15-
xpv1 "github.com/crossplane/crossplane/apis/v2/core/v2"
15+
xpv2 "github.com/crossplane/crossplane/apis/v2/core/v2"
1616
"github.com/pkg/errors"
1717
"k8s.io/apimachinery/pkg/types"
1818
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
@@ -172,7 +172,7 @@ func (n *terraformPluginFrameworkAsyncExternalClient) Observe(ctx context.Contex
172172
// not scheduled to be deleted.
173173
if err == nil && o.ResourceExists && o.ResourceUpToDate && !meta.WasDeleted(mg) {
174174
mg.(resource.Terraformed).SetConditions(resource.LastAsyncOperationCondition(nil))
175-
mg.(resource.Terraformed).SetConditions(xpv1.ReconcileSuccess())
175+
mg.(resource.Terraformed).SetConditions(xpv2.ReconcileSuccess())
176176
n.opTracker.LastOperation.Clear(false)
177177
}
178178
return o, err

pkg/controller/external_async_tfpluginsdk.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import (
1212
"github.com/crossplane/crossplane-runtime/v2/pkg/meta"
1313
"github.com/crossplane/crossplane-runtime/v2/pkg/reconciler/managed"
1414
xpresource "github.com/crossplane/crossplane-runtime/v2/pkg/resource"
15-
xpv1 "github.com/crossplane/crossplane/apis/v2/core/v2"
15+
xpv2 "github.com/crossplane/crossplane/apis/v2/core/v2"
1616
"github.com/pkg/errors"
1717
"k8s.io/apimachinery/pkg/types"
1818
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -131,7 +131,7 @@ func (n *terraformPluginSDKAsyncExternal) Observe(ctx context.Context, mg xpreso
131131
// not scheduled to be deleted.
132132
if err == nil && o.ResourceExists && o.ResourceUpToDate && !meta.WasDeleted(mg) {
133133
mg.(resource.Terraformed).SetConditions(resource.LastAsyncOperationCondition(nil))
134-
mg.(resource.Terraformed).SetConditions(xpv1.ReconcileSuccess())
134+
mg.(resource.Terraformed).SetConditions(xpv2.ReconcileSuccess())
135135
n.opTracker.LastOperation.Clear(false)
136136
}
137137
return o, err

pkg/controller/external_test.go

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import (
1414
xpresource "github.com/crossplane/crossplane-runtime/v2/pkg/resource"
1515
xpfake "github.com/crossplane/crossplane-runtime/v2/pkg/resource/fake"
1616
"github.com/crossplane/crossplane-runtime/v2/pkg/test"
17-
xpv1 "github.com/crossplane/crossplane/apis/v2/core/v2"
17+
xpv2 "github.com/crossplane/crossplane/apis/v2/core/v2"
1818
"github.com/google/go-cmp/cmp"
1919
"github.com/google/go-cmp/cmp/cmpopts"
2020
"github.com/pkg/errors"
@@ -200,7 +200,7 @@ func TestObserve(t *testing.T) {
200200
}
201201
type want struct {
202202
obs managed.ExternalObservation
203-
condition *xpv1.Condition
203+
condition *xpv2.Condition
204204
err error
205205
}
206206
cases := map[string]struct {
@@ -222,7 +222,7 @@ func TestObserve(t *testing.T) {
222222
obj: &fake.Terraformed{
223223
Managed: xpfake.Managed{
224224
Manageable: xpfake.Manageable{
225-
Policy: xpv1.ManagementPolicies{xpv1.ManagementActionAll},
225+
Policy: xpv2.ManagementPolicies{xpv2.ManagementActionAll},
226226
},
227227
},
228228
},
@@ -242,7 +242,7 @@ func TestObserve(t *testing.T) {
242242
obj: &fake.Terraformed{
243243
Managed: xpfake.Managed{
244244
Manageable: xpfake.Manageable{
245-
Policy: xpv1.ManagementPolicies{xpv1.ManagementActionAll},
245+
Policy: xpv2.ManagementPolicies{xpv2.ManagementActionAll},
246246
},
247247
},
248248
},
@@ -259,7 +259,7 @@ func TestObserve(t *testing.T) {
259259
obj: &fake.Terraformed{
260260
Managed: xpfake.Managed{
261261
Manageable: xpfake.Manageable{
262-
Policy: xpv1.ManagementPolicies{xpv1.ManagementActionAll},
262+
Policy: xpv2.ManagementPolicies{xpv2.ManagementActionAll},
263263
},
264264
},
265265
},
@@ -283,14 +283,14 @@ func TestObserve(t *testing.T) {
283283
args: args{
284284
obj: &fake.Terraformed{
285285
Managed: xpfake.Managed{
286-
ConditionedStatus: xpv1.ConditionedStatus{
286+
ConditionedStatus: xpv2.ConditionedStatus{
287287
// empty
288288
},
289289
ObjectMeta: metav1.ObjectMeta{
290290
Annotations: exampleCriticalAnnotations,
291291
},
292292
Manageable: xpfake.Manageable{
293-
Policy: xpv1.ManagementPolicies{xpv1.ManagementActionAll},
293+
Policy: xpv2.ManagementPolicies{xpv2.ManagementActionAll},
294294
},
295295
},
296296
},
@@ -321,11 +321,11 @@ func TestObserve(t *testing.T) {
321321
ObjectMeta: metav1.ObjectMeta{
322322
Annotations: exampleCriticalAnnotations,
323323
},
324-
ConditionedStatus: xpv1.ConditionedStatus{
325-
Conditions: []xpv1.Condition{xpv1.Available()},
324+
ConditionedStatus: xpv2.ConditionedStatus{
325+
Conditions: []xpv2.Condition{xpv2.Available()},
326326
},
327327
Manageable: xpfake.Manageable{
328-
Policy: xpv1.ManagementPolicies{xpv1.ManagementActionAll},
328+
Policy: xpv2.ManagementPolicies{xpv2.ManagementActionAll},
329329
},
330330
},
331331
},
@@ -350,11 +350,11 @@ func TestObserve(t *testing.T) {
350350
args: args{
351351
obj: &fake.Terraformed{
352352
Managed: xpfake.Managed{
353-
ConditionedStatus: xpv1.ConditionedStatus{
354-
Conditions: []xpv1.Condition{xpv1.Available()},
353+
ConditionedStatus: xpv2.ConditionedStatus{
354+
Conditions: []xpv2.Condition{xpv2.Available()},
355355
},
356356
Manageable: xpfake.Manageable{
357-
Policy: xpv1.ManagementPolicies{xpv1.ManagementActionAll},
357+
Policy: xpv2.ManagementPolicies{xpv2.ManagementActionAll},
358358
},
359359
},
360360
},
@@ -381,10 +381,10 @@ func TestObserve(t *testing.T) {
381381
obj: &fake.Terraformed{
382382
Managed: xpfake.Managed{
383383
Manageable: xpfake.Manageable{
384-
Policy: xpv1.ManagementPolicies{xpv1.ManagementActionObserve},
384+
Policy: xpv2.ManagementPolicies{xpv2.ManagementActionObserve},
385385
},
386-
ConditionedStatus: xpv1.ConditionedStatus{
387-
Conditions: []xpv1.Condition{xpv1.Available()},
386+
ConditionedStatus: xpv2.ConditionedStatus{
387+
Conditions: []xpv2.Condition{xpv2.Available()},
388388
},
389389
},
390390
},
@@ -409,10 +409,10 @@ func TestObserve(t *testing.T) {
409409
obj: &fake.Terraformed{
410410
Managed: xpfake.Managed{
411411
Manageable: xpfake.Manageable{
412-
Policy: xpv1.ManagementPolicies{xpv1.ManagementActionObserve},
412+
Policy: xpv2.ManagementPolicies{xpv2.ManagementActionObserve},
413413
},
414-
ConditionedStatus: xpv1.ConditionedStatus{
415-
Conditions: []xpv1.Condition{xpv1.Available()},
414+
ConditionedStatus: xpv2.ConditionedStatus{
415+
Conditions: []xpv2.Condition{xpv2.Available()},
416416
},
417417
},
418418
},
@@ -432,10 +432,10 @@ func TestObserve(t *testing.T) {
432432
obj: &fake.Terraformed{
433433
Managed: xpfake.Managed{
434434
Manageable: xpfake.Manageable{
435-
Policy: xpv1.ManagementPolicies{xpv1.ManagementActionObserve},
435+
Policy: xpv2.ManagementPolicies{xpv2.ManagementActionObserve},
436436
},
437-
ConditionedStatus: xpv1.ConditionedStatus{
438-
Conditions: []xpv1.Condition{xpv1.Available()},
437+
ConditionedStatus: xpv2.ConditionedStatus{
438+
Conditions: []xpv2.Condition{xpv2.Available()},
439439
},
440440
},
441441
},
@@ -458,9 +458,9 @@ func TestObserve(t *testing.T) {
458458
obj: &fake.Terraformed{
459459
Managed: xpfake.Managed{
460460
Manageable: xpfake.Manageable{
461-
Policy: xpv1.ManagementPolicies{xpv1.ManagementActionObserve},
461+
Policy: xpv2.ManagementPolicies{xpv2.ManagementActionObserve},
462462
},
463-
ConditionedStatus: xpv1.ConditionedStatus{
463+
ConditionedStatus: xpv2.ConditionedStatus{
464464
// empty
465465
},
466466
ObjectMeta: metav1.ObjectMeta{
@@ -494,9 +494,9 @@ func TestObserve(t *testing.T) {
494494
obj: &fake.Terraformed{
495495
Managed: xpfake.Managed{
496496
Manageable: xpfake.Manageable{
497-
Policy: xpv1.ManagementPolicies{xpv1.ManagementActionAll},
497+
Policy: xpv2.ManagementPolicies{xpv2.ManagementActionAll},
498498
},
499-
ConditionedStatus: xpv1.ConditionedStatus{
499+
ConditionedStatus: xpv2.ConditionedStatus{
500500
// empty
501501
},
502502
ObjectMeta: metav1.ObjectMeta{
@@ -537,11 +537,11 @@ func TestObserve(t *testing.T) {
537537
},
538538
obj: &fake.Terraformed{
539539
Managed: xpfake.Managed{
540-
ConditionedStatus: xpv1.ConditionedStatus{
540+
ConditionedStatus: xpv2.ConditionedStatus{
541541
// empty
542542
},
543543
Manageable: xpfake.Manageable{
544-
Policy: xpv1.ManagementPolicies{xpv1.ManagementActionCreate},
544+
Policy: xpv2.ManagementPolicies{xpv2.ManagementActionCreate},
545545
},
546546
},
547547
},
@@ -573,7 +573,7 @@ func TestObserve(t *testing.T) {
573573
obj: &fake.Terraformed{
574574
Managed: xpfake.Managed{
575575
Manageable: xpfake.Manageable{
576-
Policy: xpv1.ManagementPolicies{xpv1.ManagementActionCreate},
576+
Policy: xpv2.ManagementPolicies{xpv2.ManagementActionCreate},
577577
},
578578
},
579579
},
@@ -610,8 +610,8 @@ func TestObserve(t *testing.T) {
610610
}
611611
}
612612

613-
func available() *xpv1.Condition {
614-
c := xpv1.Available()
613+
func available() *xpv2.Condition {
614+
c := xpv2.Available()
615615
return &c
616616
}
617617

pkg/controller/external_tfpluginfw.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import (
1818
"github.com/crossplane/crossplane-runtime/v2/pkg/meta"
1919
"github.com/crossplane/crossplane-runtime/v2/pkg/reconciler/managed"
2020
xpresource "github.com/crossplane/crossplane-runtime/v2/pkg/resource"
21-
xpv1 "github.com/crossplane/crossplane/apis/v2/core/v2"
21+
xpv2 "github.com/crossplane/crossplane/apis/v2/core/v2"
2222
fwprovider "github.com/hashicorp/terraform-plugin-framework/provider"
2323
"github.com/hashicorp/terraform-plugin-framework/providerserver"
2424
fwresource "github.com/hashicorp/terraform-plugin-framework/resource"
@@ -638,11 +638,11 @@ func (n *terraformPluginFrameworkExternalClient) Observe(ctx context.Context, mg
638638
var connDetails managed.ConnectionDetails
639639
specUpdateRequired := false
640640
if resourceExists {
641-
if mg.GetCondition(xpv1.TypeReady).Status == corev1.ConditionUnknown ||
642-
mg.GetCondition(xpv1.TypeReady).Status == corev1.ConditionFalse {
641+
if mg.GetCondition(xpv2.TypeReady).Status == corev1.ConditionUnknown ||
642+
mg.GetCondition(xpv2.TypeReady).Status == corev1.ConditionFalse {
643643
addTTR(mg)
644644
}
645-
mg.SetConditions(xpv1.Available())
645+
mg.SetConditions(xpv2.Available())
646646

647647
// we get the connection details from the observed state before
648648
// the conversion because the sensitive paths assume the native Terraform
@@ -662,8 +662,8 @@ func (n *terraformPluginFrameworkExternalClient) Observe(ctx context.Context, mg
662662
return managed.ExternalObservation{}, errors.Wrap(err, "cannot marshal the attributes of the new state for late-initialization")
663663
}
664664

665-
policySet := sets.New[xpv1.ManagementAction](mg.(resource.Terraformed).GetManagementPolicies()...)
666-
policyHasLateInit := policySet.HasAny(xpv1.ManagementActionLateInitialize, xpv1.ManagementActionAll)
665+
policySet := sets.New[xpv2.ManagementAction](mg.(resource.Terraformed).GetManagementPolicies()...)
666+
policyHasLateInit := policySet.HasAny(xpv2.ManagementActionLateInitialize, xpv2.ManagementActionAll)
667667
if policyHasLateInit {
668668
specUpdateRequired, err = mg.(resource.Terraformed).LateInitialize(buff)
669669
if err != nil {

0 commit comments

Comments
 (0)