Skip to content

Commit 271b438

Browse files
committed
added resolver back and added one more object type to the list of resources we can add default privileges
Signed-off-by: Joaquín Fernández Campo <[email protected]>
1 parent 729866d commit 271b438

File tree

1 file changed

+54
-48
lines changed

1 file changed

+54
-48
lines changed

apis/postgresql/v1alpha1/default_privileges_types.go

Lines changed: 54 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
package v1alpha1
22

33
import (
4+
"context"
5+
46
xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1"
7+
"github.com/crossplane/crossplane-runtime/pkg/reference"
8+
"github.com/pkg/errors"
59
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
10+
"sigs.k8s.io/controller-runtime/pkg/client"
611
)
712

813
// +kubebuilder:object:root=true
@@ -13,6 +18,7 @@ import (
1318
// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status"
1419
// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp"
1520
// +kubebuilder:printcolumn:name="ROLE",type="string",JSONPath=".spec.forProvider.role"
21+
// +kubebuilder:printcolumn:name="TARGET_ROLE",type="string",JSONPath=".spec.forProvider.targetRole"
1622
// +kubebuilder:printcolumn:name="SCHEMA",type="string",JSONPath=".spec.forProvider.schema"
1723
// +kubebuilder:printcolumn:name="DATABASE",type="string",JSONPath=".spec.forProvider.database"
1824
// +kubebuilder:printcolumn:name="PRIVILEGES",type="string",JSONPath=".spec.forProvider.privileges"
@@ -49,7 +55,7 @@ type DefaultPrivilegesParameters struct {
4955
TargetRole *string `json:"targetRole"`
5056

5157
// ObjectType to which the privileges are granted.
52-
// +kubebuilder:validation:Enum=table;sequence;function;schema
58+
// +kubebuilder:validation:Enum=table;sequence;function;schema;type
5359
// +required
5460
ObjectType *string `json:"objectType,omitempty"`
5561

@@ -113,50 +119,50 @@ type DefaultPrivilegesList struct {
113119
}
114120

115121
// ResolveReferences of this DefaultPrivileges.
116-
// func (mg *DefaultPrivileges) ResolveReferences(ctx context.Context, c client.Reader) error {
117-
// r := reference.NewAPIResolver(c, mg)
118-
119-
// // Resolve spec.forProvider.database
120-
// rsp, err := r.Resolve(ctx, reference.ResolutionRequest{
121-
// CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Database),
122-
// Reference: mg.Spec.ForProvider.DatabaseRef,
123-
// Selector: mg.Spec.ForProvider.DatabaseSelector,
124-
// To: reference.To{Managed: &Database{}, List: &DatabaseList{}},
125-
// Extract: reference.ExternalName(),
126-
// })
127-
// if err != nil {
128-
// return errors.Wrap(err, "spec.forProvider.database")
129-
// }
130-
// mg.Spec.ForProvider.Database = reference.ToPtrValue(rsp.ResolvedValue)
131-
// mg.Spec.ForProvider.DatabaseRef = rsp.ResolvedReference
132-
133-
// // Resolve spec.forProvider.role
134-
// rsp, err = r.Resolve(ctx, reference.ResolutionRequest{
135-
// CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Role),
136-
// Reference: mg.Spec.ForProvider.RoleRef,
137-
// Selector: mg.Spec.ForProvider.RoleSelector,
138-
// To: reference.To{Managed: &Role{}, List: &RoleList{}},
139-
// Extract: reference.ExternalName(),
140-
// })
141-
// if err != nil {
142-
// return errors.Wrap(err, "spec.forProvider.role")
143-
// }
144-
// mg.Spec.ForProvider.Role = reference.ToPtrValue(rsp.ResolvedValue)
145-
// mg.Spec.ForProvider.RoleRef = rsp.ResolvedReference
146-
147-
// // Resolve spec.forProvider.schema
148-
// rsp, err = r.Resolve(ctx, reference.ResolutionRequest{
149-
// CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Schema),
150-
// Reference: mg.Spec.ForProvider.SchemaRef,
151-
// Selector: mg.Spec.ForProvider.SchemaSelector,
152-
// To: reference.To{Managed: &Role{}, List: &RoleList{}},
153-
// Extract: reference.ExternalName(),
154-
// })
155-
// if err != nil {
156-
// return errors.Wrap(err, "spec.forProvider.schema")
157-
// }
158-
// mg.Spec.ForProvider.Schema = reference.ToPtrValue(rsp.ResolvedValue)
159-
// mg.Spec.ForProvider.SchemaRef = rsp.ResolvedReference
160-
161-
// return nil
162-
// }
122+
func (mg *DefaultPrivileges) ResolveReferences(ctx context.Context, c client.Reader) error {
123+
r := reference.NewAPIResolver(c, mg)
124+
125+
// Resolve spec.forProvider.database
126+
rsp, err := r.Resolve(ctx, reference.ResolutionRequest{
127+
CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Database),
128+
Reference: mg.Spec.ForProvider.DatabaseRef,
129+
Selector: mg.Spec.ForProvider.DatabaseSelector,
130+
To: reference.To{Managed: &Database{}, List: &DatabaseList{}},
131+
Extract: reference.ExternalName(),
132+
})
133+
if err != nil {
134+
return errors.Wrap(err, "spec.forProvider.database")
135+
}
136+
mg.Spec.ForProvider.Database = reference.ToPtrValue(rsp.ResolvedValue)
137+
mg.Spec.ForProvider.DatabaseRef = rsp.ResolvedReference
138+
139+
// Resolve spec.forProvider.role
140+
rsp, err = r.Resolve(ctx, reference.ResolutionRequest{
141+
CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Role),
142+
Reference: mg.Spec.ForProvider.RoleRef,
143+
Selector: mg.Spec.ForProvider.RoleSelector,
144+
To: reference.To{Managed: &Role{}, List: &RoleList{}},
145+
Extract: reference.ExternalName(),
146+
})
147+
if err != nil {
148+
return errors.Wrap(err, "spec.forProvider.role")
149+
}
150+
mg.Spec.ForProvider.Role = reference.ToPtrValue(rsp.ResolvedValue)
151+
mg.Spec.ForProvider.RoleRef = rsp.ResolvedReference
152+
153+
// Resolve spec.forProvider.schema
154+
rsp, err = r.Resolve(ctx, reference.ResolutionRequest{
155+
CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Schema),
156+
Reference: mg.Spec.ForProvider.SchemaRef,
157+
Selector: mg.Spec.ForProvider.SchemaSelector,
158+
To: reference.To{Managed: &Role{}, List: &RoleList{}},
159+
Extract: reference.ExternalName(),
160+
})
161+
if err != nil {
162+
return errors.Wrap(err, "spec.forProvider.schema")
163+
}
164+
mg.Spec.ForProvider.Schema = reference.ToPtrValue(rsp.ResolvedValue)
165+
mg.Spec.ForProvider.SchemaRef = rsp.ResolvedReference
166+
167+
return nil
168+
}

0 commit comments

Comments
 (0)