Skip to content

Commit 1cc26ec

Browse files
authored
Merge pull request #51 from ConductorOne/goldschmidt/fix-sync-secrets
fix: sync fail when sync secrets is false
2 parents dda3326 + cfe4e85 commit 1cc26ec

File tree

3 files changed

+30
-10
lines changed

3 files changed

+30
-10
lines changed

pkg/connector/connector.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ type Connector struct {
2020
// ResourceSyncers returns a ResourceSyncer for each resource type that should be synced from the upstream service.
2121
func (d *Connector) ResourceSyncers(ctx context.Context) []connectorbuilder.ResourceSyncer {
2222
builders := []connectorbuilder.ResourceSyncer{
23-
newUserBuilder(d.Client),
23+
newUserBuilder(d.Client, d.syncSecrets),
2424
newAccountRoleBuilder(d.Client),
25-
newDatabaseBuilder(d.Client),
25+
newDatabaseBuilder(d.Client, d.syncSecrets),
2626
}
2727

2828
if d.syncSecrets {

pkg/connector/databases.go

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,14 @@ import (
1616
type databaseBuilder struct {
1717
resourceType *v2.ResourceType
1818
client *snowflake.Client
19+
syncSecrets bool
1920
}
2021

2122
func (o *databaseBuilder) ResourceType(ctx context.Context) *v2.ResourceType {
2223
return databaseResourceType
2324
}
2425

25-
func databaseResource(database *snowflake.Database) (*v2.Resource, error) {
26+
func databaseResource(database *snowflake.Database, syncSecrets bool) (*v2.Resource, error) {
2627
profile := map[string]interface{}{
2728
"name": database.Name,
2829
}
@@ -31,8 +32,18 @@ func databaseResource(database *snowflake.Database) (*v2.Resource, error) {
3132
rs.WithAppProfile(profile),
3233
}
3334

35+
var opts []rs.ResourceOption
36+
if syncSecrets {
37+
opts = append(opts, rs.WithAnnotation(&v2.ChildResourceType{ResourceTypeId: secretResourceType.Id}))
38+
}
39+
3440
resource, err := rs.NewAppResource(
35-
database.Name, databaseResourceType, database.Name, databaseTraits, rs.WithAnnotation(&v2.ChildResourceType{ResourceTypeId: secretResourceType.Id}))
41+
database.Name,
42+
databaseResourceType,
43+
database.Name,
44+
databaseTraits,
45+
opts...,
46+
)
3647
if err != nil {
3748
return nil, err
3849
}
@@ -53,7 +64,7 @@ func (o *databaseBuilder) List(ctx context.Context, parentResourceID *v2.Resourc
5364

5465
var resources []*v2.Resource
5566
for _, database := range databases {
56-
resource, err := databaseResource(&database) // #nosec G601
67+
resource, err := databaseResource(&database, o.syncSecrets) // #nosec G601
5768
if err != nil {
5869
return nil, "", nil, wrapError(err, "failed to create database resource")
5970
}
@@ -125,9 +136,10 @@ func (o *databaseBuilder) Grants(ctx context.Context, resource *v2.Resource, pTo
125136
return grants, "", nil, nil
126137
}
127138

128-
func newDatabaseBuilder(client *snowflake.Client) *databaseBuilder {
139+
func newDatabaseBuilder(client *snowflake.Client, syncSecrets bool) *databaseBuilder {
129140
return &databaseBuilder{
130141
resourceType: databaseResourceType,
131142
client: client,
143+
syncSecrets: syncSecrets,
132144
}
133145
}

pkg/connector/users.go

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,14 @@ import (
1313
type userBuilder struct {
1414
resourceType *v2.ResourceType
1515
client *snowflake.Client
16+
syncSecrets bool
1617
}
1718

1819
func (o *userBuilder) ResourceType(ctx context.Context) *v2.ResourceType {
1920
return userResourceType
2021
}
2122

22-
func userResource(ctx context.Context, user *snowflake.User) (*v2.Resource, error) {
23+
func userResource(ctx context.Context, user *snowflake.User, syncSecrets bool) (*v2.Resource, error) {
2324
profile := map[string]interface{}{
2425
"email": user.Email,
2526
"login": user.Login,
@@ -52,12 +53,18 @@ func userResource(ctx context.Context, user *snowflake.User) (*v2.Resource, erro
5253
displayName = user.Login
5354
}
5455
}
56+
57+
var opts []rs.ResourceOption
58+
if syncSecrets {
59+
opts = append(opts, rs.WithAnnotation(&v2.ChildResourceType{ResourceTypeId: rsaPublicKeyResourceType.Id}))
60+
}
61+
5562
resource, err := rs.NewUserResource(
5663
displayName,
5764
userResourceType,
5865
user.Username,
5966
userTraits,
60-
rs.WithAnnotation(&v2.ChildResourceType{ResourceTypeId: rsaPublicKeyResourceType.Id}),
67+
opts...,
6168
)
6269

6370
if err != nil {
@@ -113,7 +120,7 @@ func (o *userBuilder) List(ctx context.Context, parentResourceID *v2.ResourceId,
113120

114121
var resources []*v2.Resource
115122
for _, user := range users {
116-
resource, err := userResource(ctx, &user) // #nosec G601
123+
resource, err := userResource(ctx, &user, o.syncSecrets) // #nosec G601
117124
if err != nil {
118125
return nil, "", nil, wrapError(err, "failed to create user resource")
119126
}
@@ -143,9 +150,10 @@ func (o *userBuilder) Grants(ctx context.Context, resource *v2.Resource, pToken
143150
return nil, "", nil, nil
144151
}
145152

146-
func newUserBuilder(client *snowflake.Client) *userBuilder {
153+
func newUserBuilder(client *snowflake.Client, syncSecrets bool) *userBuilder {
147154
return &userBuilder{
148155
resourceType: userResourceType,
149156
client: client,
157+
syncSecrets: syncSecrets,
150158
}
151159
}

0 commit comments

Comments
 (0)