Skip to content

Commit 536ccd6

Browse files
Fix annotation issues in groups and projects (#47)
1 parent abc0bc9 commit 536ccd6

File tree

2 files changed

+30
-13
lines changed

2 files changed

+30
-13
lines changed

pkg/connector/groups.go

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
"github.com/grpc-ecosystem/go-grpc-middleware/logging/zap/ctxzap"
1919
gitlabSDK "gitlab.com/gitlab-org/api/client-go"
2020
"go.uber.org/zap"
21+
"google.golang.org/protobuf/proto"
2122
)
2223

2324
type groupBuilder struct {
@@ -33,7 +34,7 @@ var accessLevels = []gitlabSDK.AccessLevelValue{
3334
gitlabSDK.OwnerPermissions,
3435
}
3536

36-
func groupResource(group *gitlabSDK.Group, parentResourceID *v2.ResourceId) (*v2.Resource, error) {
37+
func groupResource(group *gitlabSDK.Group, parentResourceID *v2.ResourceId, isOnPremise bool) (*v2.Resource, error) {
3738
profile := map[string]interface{}{
3839
"id": group.ID,
3940
"name": group.Name,
@@ -44,20 +45,28 @@ func groupResource(group *gitlabSDK.Group, parentResourceID *v2.ResourceId) (*v2
4445
profile["parent_group_id"] = group.ParentID
4546
}
4647

48+
var annotations []proto.Message
49+
if !isOnPremise {
50+
annotations = []proto.Message{
51+
&v2.ChildResourceType{ResourceTypeId: projectResourceType.Id},
52+
&v2.ChildResourceType{ResourceTypeId: groupResourceType.Id},
53+
&v2.ChildResourceType{ResourceTypeId: userResourceType.Id},
54+
}
55+
} else {
56+
annotations = []proto.Message{
57+
&v2.ChildResourceType{ResourceTypeId: projectResourceType.Id},
58+
&v2.ChildResourceType{ResourceTypeId: groupResourceType.Id},
59+
}
60+
}
61+
4762
return resourceSdk.NewGroupResource(
4863
group.FullName,
4964
groupResourceType,
5065
toGroupResourceId(strconv.Itoa(group.ID)),
5166
[]resourceSdk.GroupTraitOption{
52-
resourceSdk.WithGroupProfile(
53-
profile,
54-
),
67+
resourceSdk.WithGroupProfile(profile),
5568
},
56-
resourceSdk.WithAnnotation(
57-
&v2.ChildResourceType{ResourceTypeId: projectResourceType.Id},
58-
&v2.ChildResourceType{ResourceTypeId: groupResourceType.Id},
59-
&v2.ChildResourceType{ResourceTypeId: userResourceType.Id},
60-
),
69+
resourceSdk.WithAnnotation(annotations...),
6170
resourceSdk.WithParentResourceID(parentResourceID),
6271
)
6372
}
@@ -93,7 +102,7 @@ func (o *groupBuilder) List(ctx context.Context, parentResourceID *v2.ResourceId
93102
continue
94103
}
95104

96-
resource, err := groupResource(group, parentResourceID)
105+
resource, err := groupResource(group, parentResourceID, o.IsOnPremise)
97106
if err != nil {
98107
return nil, "", nil, err
99108
}

pkg/connector/projects.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,21 @@ import (
1414
"github.com/conductorone/baton-sdk/pkg/types/grant"
1515
resourceSdk "github.com/conductorone/baton-sdk/pkg/types/resource"
1616
gitlabSDK "gitlab.com/gitlab-org/api/client-go"
17+
"google.golang.org/protobuf/proto"
1718
)
1819

1920
type projectBuilder struct {
2021
*gitlab.Client
2122
}
2223

23-
func projectResource(project *gitlabSDK.Project, parentResourceID *v2.ResourceId) (*v2.Resource, error) {
24+
func projectResource(project *gitlabSDK.Project, parentResourceID *v2.ResourceId, isOnPremise bool) (*v2.Resource, error) {
25+
var annotations []proto.Message
26+
if !isOnPremise {
27+
annotations = []proto.Message{
28+
&v2.ChildResourceType{ResourceTypeId: userResourceType.Id},
29+
}
30+
}
31+
2432
return resourceSdk.NewGroupResource(
2533
project.NameWithNamespace,
2634
projectResourceType,
@@ -34,7 +42,7 @@ func projectResource(project *gitlabSDK.Project, parentResourceID *v2.ResourceId
3442
},
3543
),
3644
},
37-
resourceSdk.WithAnnotation(&v2.ChildResourceType{ResourceTypeId: userResourceType.Id}),
45+
resourceSdk.WithAnnotation(annotations...),
3846
resourceSdk.WithParentResourceID(parentResourceID),
3947
)
4048
}
@@ -70,7 +78,7 @@ func (o *projectBuilder) List(ctx context.Context, parentResourceID *v2.Resource
7078

7179
outResources := make([]*v2.Resource, 0, len(projects))
7280
for _, project := range projects {
73-
resource, err := projectResource(project, parentResourceID)
81+
resource, err := projectResource(project, parentResourceID, o.IsOnPremise)
7482
if err != nil {
7583
return nil, "", nil, err
7684
}

0 commit comments

Comments
 (0)