Skip to content

Commit 5d79c33

Browse files
authored
Upgrade baton-sdk to v0.0.22 and associated fixes (#14)
* Upgrade baton-sdk to v0.0.21 * Use new type helpers from the SDK. Fix issue with v1 IDs * Bump baton-sdk to v0.0.22
1 parent e66409a commit 5d79c33

File tree

23 files changed

+1198
-696
lines changed

23 files changed

+1198
-696
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module github.com/conductorone/baton-github
33
go 1.19
44

55
require (
6-
github.com/conductorone/baton-sdk v0.0.17
6+
github.com/conductorone/baton-sdk v0.0.22
77
github.com/google/go-github/v41 v41.0.0
88
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0
99
github.com/shurcooL/githubv4 v0.0.0-20221229060216-a8d4a561cc93

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,8 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk
9292
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
9393
github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
9494
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
95-
github.com/conductorone/baton-sdk v0.0.17 h1:IxQoqAmJ3KC7BXl0SpUarevcwI2mqTQdr4PaQAZPjlE=
96-
github.com/conductorone/baton-sdk v0.0.17/go.mod h1:jPdcy08LmTIPzgZcSOo7mviSAG0NUbjavg/1LpCTeOI=
95+
github.com/conductorone/baton-sdk v0.0.22 h1:arTDf1LJ/bBICpFMDcjF7pPhnJPwBRSQgGBW73e0lVE=
96+
github.com/conductorone/baton-sdk v0.0.22/go.mod h1:jPdcy08LmTIPzgZcSOo7mviSAG0NUbjavg/1LpCTeOI=
9797
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
9898
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
9999
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=

pkg/connector/org.go

Lines changed: 22 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@ import (
88
v2 "github.com/conductorone/baton-sdk/pb/c1/connector/v2"
99
"github.com/conductorone/baton-sdk/pkg/annotations"
1010
"github.com/conductorone/baton-sdk/pkg/pagination"
11-
"github.com/conductorone/baton-sdk/pkg/sdk"
11+
"github.com/conductorone/baton-sdk/pkg/types/entitlement"
12+
"github.com/conductorone/baton-sdk/pkg/types/grant"
13+
"github.com/conductorone/baton-sdk/pkg/types/resource"
1214
"github.com/google/go-github/v41/github"
1315
"github.com/grpc-ecosystem/go-grpc-middleware/logging/zap/ctxzap"
1416
"go.uber.org/zap"
@@ -79,16 +81,18 @@ func (o *orgResourceType) List(
7981
continue
8082
}
8183

82-
orgResource, err := sdk.NewResource(
84+
orgResource, err := resource.NewResource(
8385
org.GetLogin(),
8486
resourceTypeOrg,
85-
parentResourceID,
8687
org.GetID(),
87-
&v2.ExternalLink{Url: org.GetHTMLURL()},
88-
&v2.V1Identifier{Id: fmt.Sprintf("org:%d", org.GetID())},
89-
&v2.ChildResourceType{ResourceTypeId: resourceTypeUser.Id},
90-
&v2.ChildResourceType{ResourceTypeId: resourceTypeTeam.Id},
91-
&v2.ChildResourceType{ResourceTypeId: resourceTypeRepository.Id},
88+
resource.WithParentResourceID(parentResourceID),
89+
resource.WithAnnotation(
90+
&v2.ExternalLink{Url: org.GetHTMLURL()},
91+
&v2.V1Identifier{Id: fmt.Sprintf("org:%d", org.GetID())},
92+
&v2.ChildResourceType{ResourceTypeId: resourceTypeUser.Id},
93+
&v2.ChildResourceType{ResourceTypeId: resourceTypeTeam.Id},
94+
&v2.ChildResourceType{ResourceTypeId: resourceTypeRepository.Id},
95+
),
9296
)
9397
if err != nil {
9498
return nil, "", nil, err
@@ -107,17 +111,14 @@ func (o *orgResourceType) Entitlements(
107111
) ([]*v2.Entitlement, string, annotations.Annotations, error) {
108112
rv := make([]*v2.Entitlement, 0, len(orgAccessLevels))
109113
for _, level := range orgAccessLevels {
110-
var annos annotations.Annotations
111-
annos.Update(&v2.V1Identifier{
112-
Id: fmt.Sprintf("org:%s:role:%s", resource.Id, level),
113-
})
114-
115-
en := sdk.NewPermissionEntitlement(resource, level, resourceTypeUser)
116-
en.DisplayName = fmt.Sprintf("%s Org %s", resource.DisplayName, titleCaser.String(level))
117-
en.Description = fmt.Sprintf("Access to %s org in Github", resource.DisplayName)
118-
en.Annotations = annos
119-
120-
rv = append(rv, en)
114+
rv = append(rv, entitlement.NewPermissionEntitlement(resource, level,
115+
entitlement.WithDisplayName(fmt.Sprintf("%s Org %s", resource.DisplayName, titleCaser.String(level))),
116+
entitlement.WithDescription(fmt.Sprintf("Access to %s org in Github", resource.DisplayName)),
117+
entitlement.WithAnnotation(&v2.V1Identifier{
118+
Id: fmt.Sprintf("org:%s:role:%s", resource.Id.Resource, level),
119+
}),
120+
entitlement.WithGrantableTo(resourceTypeUser),
121+
))
121122
}
122123

123124
return rv, "", nil, nil
@@ -178,14 +179,9 @@ func (o *orgResourceType) Grants(
178179
roleName := strings.ToLower(membership.GetRole())
179180
switch roleName {
180181
case orgRoleAdmin, orgRoleMember:
181-
var annos annotations.Annotations
182-
annos.Update(&v2.V1Identifier{
182+
rv = append(rv, grant.NewGrant(resource, roleName, ur.Id, grant.WithAnnotation(&v2.V1Identifier{
183183
Id: fmt.Sprintf("org-grant:%s:%d:%s", resource.Id.Resource, user.GetID(), roleName),
184-
})
185-
186-
grant := sdk.NewGrant(resource, roleName, ur.Id)
187-
grant.Annotations = annos
188-
rv = append(rv, grant)
184+
})))
189185
default:
190186
ctxzap.Extract(ctx).Warn("Unknown Github Role Name",
191187
zap.String("role_name", roleName),

pkg/connector/repository.go

Lines changed: 23 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ import (
77
v2 "github.com/conductorone/baton-sdk/pb/c1/connector/v2"
88
"github.com/conductorone/baton-sdk/pkg/annotations"
99
"github.com/conductorone/baton-sdk/pkg/pagination"
10-
"github.com/conductorone/baton-sdk/pkg/sdk"
10+
"github.com/conductorone/baton-sdk/pkg/types/entitlement"
11+
"github.com/conductorone/baton-sdk/pkg/types/grant"
12+
"github.com/conductorone/baton-sdk/pkg/types/resource"
1113
"github.com/google/go-github/v41/github"
1214
)
1315

@@ -30,13 +32,15 @@ var repoAccessLevels = []string{
3032

3133
// repositoryResource returns a new connector resource for a Github repository.
3234
func repositoryResource(ctx context.Context, repo *github.Repository, parentResourceID *v2.ResourceId) (*v2.Resource, error) {
33-
ret, err := sdk.NewResource(
35+
ret, err := resource.NewResource(
3436
repo.GetName(),
3537
resourceTypeRepository,
36-
parentResourceID,
3738
repo.GetID(),
38-
&v2.ExternalLink{Url: repo.GetHTMLURL()},
39-
&v2.V1Identifier{Id: fmt.Sprintf("repo:%d", repo.GetID())},
39+
resource.WithAnnotation(
40+
&v2.ExternalLink{Url: repo.GetHTMLURL()},
41+
&v2.V1Identifier{Id: fmt.Sprintf("repo:%d", repo.GetID())},
42+
),
43+
resource.WithParentResourceID(parentResourceID),
4044
)
4145
if err != nil {
4246
return nil, err
@@ -106,17 +110,14 @@ func (o *repositoryResourceType) List(ctx context.Context, parentID *v2.Resource
106110
func (o *repositoryResourceType) Entitlements(_ context.Context, resource *v2.Resource, _ *pagination.Token) ([]*v2.Entitlement, string, annotations.Annotations, error) {
107111
rv := make([]*v2.Entitlement, 0, len(repoAccessLevels))
108112
for _, level := range repoAccessLevels {
109-
var annos annotations.Annotations
110-
annos.Update(&v2.V1Identifier{
111-
Id: fmt.Sprintf("repo:%s:role:%s", resource.Id, level),
112-
})
113-
114-
en := sdk.NewPermissionEntitlement(resource, level, resourceTypeUser, resourceTypeTeam)
115-
en.DisplayName = fmt.Sprintf("%s Repo %s", resource.DisplayName, titleCaser.String(level))
116-
en.Description = fmt.Sprintf("Access to %s repository in Github", resource.DisplayName)
117-
en.Annotations = annos
118-
119-
rv = append(rv, en)
113+
rv = append(rv, entitlement.NewPermissionEntitlement(resource, level,
114+
entitlement.WithDisplayName(fmt.Sprintf("%s Repo %s", resource.DisplayName, titleCaser.String(level))),
115+
entitlement.WithDescription(fmt.Sprintf("Access to %s repository in Github", resource.DisplayName)),
116+
entitlement.WithAnnotation(&v2.V1Identifier{
117+
Id: fmt.Sprintf("repo:%s:role:%s", resource.Id.Resource, level),
118+
}),
119+
entitlement.WithGrantableTo(resourceTypeUser, resourceTypeTeam),
120+
))
120121
}
121122

122123
return rv, "", nil, nil
@@ -173,25 +174,18 @@ func (o *repositoryResourceType) Grants(
173174

174175
for _, user := range users {
175176
for permission, hasPermission := range user.Permissions {
176-
var annos annotations.Annotations
177-
178177
if !hasPermission {
179178
continue
180179
}
181180

182-
annos.Update(&v2.V1Identifier{
183-
Id: fmt.Sprintf("repo-grant:%s:%d:%s", resource.Id.Resource, user.GetID(), permission),
184-
})
185-
186181
ur, err := userResource(ctx, user, user.GetEmail())
187182
if err != nil {
188183
return nil, "", nil, err
189184
}
190185

191-
grant := sdk.NewGrant(resource, permission, ur.Id)
192-
grant.Annotations = annos
193-
194-
rv = append(rv, grant)
186+
rv = append(rv, grant.NewGrant(resource, permission, ur.Id, grant.WithAnnotation(&v2.V1Identifier{
187+
Id: fmt.Sprintf("repo-grant:%s:%d:%s", resource.Id.Resource, user.GetID(), permission),
188+
})))
195189
}
196190
}
197191

@@ -217,25 +211,18 @@ func (o *repositoryResourceType) Grants(
217211

218212
for _, team := range teams {
219213
for permission, hasPermission := range team.Permissions {
220-
var annos annotations.Annotations
221-
222214
if !hasPermission {
223215
continue
224216
}
225217

226-
annos.Update(&v2.V1Identifier{
227-
Id: fmt.Sprintf("repo-grant:%s:%d:%s", resource.Id.Resource, team.GetID(), permission),
228-
})
229-
230218
tr, err := teamResource(team, resource.ParentResourceId)
231219
if err != nil {
232220
return nil, "", nil, err
233221
}
234222

235-
grant := sdk.NewGrant(resource, permission, tr.Id)
236-
grant.Annotations = annos
237-
238-
rv = append(rv, grant)
223+
rv = append(rv, grant.NewGrant(resource, permission, tr.Id, grant.WithAnnotation(&v2.V1Identifier{
224+
Id: fmt.Sprintf("repo-grant:%s:%d:%s", resource.Id.Resource, team.GetID(), permission),
225+
})))
239226
}
240227
}
241228
default:

pkg/connector/team.go

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@ import (
88
v2 "github.com/conductorone/baton-sdk/pb/c1/connector/v2"
99
"github.com/conductorone/baton-sdk/pkg/annotations"
1010
"github.com/conductorone/baton-sdk/pkg/pagination"
11-
"github.com/conductorone/baton-sdk/pkg/sdk"
11+
"github.com/conductorone/baton-sdk/pkg/types/entitlement"
12+
"github.com/conductorone/baton-sdk/pkg/types/grant"
13+
rType "github.com/conductorone/baton-sdk/pkg/types/resource"
1214
"github.com/google/go-github/v41/github"
1315
)
1416

@@ -31,14 +33,16 @@ func teamResource(team *github.Team, parentResourceID *v2.ResourceId) (*v2.Resou
3133
"orgID": team.GetOrganization().GetID(),
3234
}
3335

34-
ret, err := sdk.NewGroupResource(
36+
ret, err := rType.NewGroupResource(
3537
team.GetName(),
3638
resourceTypeTeam,
37-
parentResourceID,
3839
team.GetID(),
39-
profile,
40-
&v2.ExternalLink{Url: team.GetURL()},
41-
&v2.V1Identifier{Id: fmt.Sprintf("team:%d", team.GetID())},
40+
[]rType.GroupTraitOption{rType.WithGroupProfile(profile)},
41+
rType.WithAnnotation(
42+
&v2.ExternalLink{Url: team.GetURL()},
43+
&v2.V1Identifier{Id: fmt.Sprintf("team:%d", team.GetID())},
44+
),
45+
rType.WithParentResourceID(parentResourceID),
4246
)
4347
if err != nil {
4448
return nil, err
@@ -141,7 +145,7 @@ func (o *teamResourceType) List(ctx context.Context, parentID *v2.ResourceId, pt
141145

142146
teamParent := parentID
143147
if fullTeam.GetParent() != nil {
144-
teamParent, err = sdk.NewResourceID(resourceTypeTeam, fullTeam.GetParent().GetID())
148+
teamParent, err = rType.NewResourceID(resourceTypeTeam, fullTeam.GetParent().GetID())
145149
if err != nil {
146150
return nil, "", nil, err
147151
}
@@ -161,16 +165,16 @@ func (o *teamResourceType) List(ctx context.Context, parentID *v2.ResourceId, pt
161165
func (o *teamResourceType) Entitlements(_ context.Context, resource *v2.Resource, _ *pagination.Token) ([]*v2.Entitlement, string, annotations.Annotations, error) {
162166
rv := make([]*v2.Entitlement, 0, len(teamAccessLevels))
163167
for _, level := range teamAccessLevels {
164-
var annos annotations.Annotations
165-
annos.Update(&v2.V1Identifier{
166-
Id: fmt.Sprintf("team:%s:role:%s", resource.Id, level),
167-
})
168-
169-
en := sdk.NewPermissionEntitlement(resource, level, resourceTypeUser)
170-
en.DisplayName = fmt.Sprintf("%s Team %s", resource.DisplayName, titleCaser.String(level))
171-
en.Description = fmt.Sprintf("Access to %s team in Github", resource.DisplayName)
172-
en.Annotations = annos
173-
rv = append(rv, en)
168+
rv = append(rv, entitlement.NewPermissionEntitlement(resource, level,
169+
entitlement.WithAnnotation(
170+
&v2.V1Identifier{
171+
Id: fmt.Sprintf("team:%s:role:%s", resource.Id.Resource, level),
172+
},
173+
),
174+
entitlement.WithDisplayName(fmt.Sprintf("%s Team %s", resource.DisplayName, titleCaser.String(level))),
175+
entitlement.WithDescription(fmt.Sprintf("Access to %s team in Github", resource.DisplayName)),
176+
entitlement.WithGrantableTo(resourceTypeUser),
177+
))
174178
}
175179

176180
return rv, "", nil, nil
@@ -182,12 +186,12 @@ func (o *teamResourceType) Grants(ctx context.Context, resource *v2.Resource, pT
182186
return nil, "", nil, err
183187
}
184188

185-
teamTrait, err := sdk.GetGroupTrait(resource)
189+
teamTrait, err := rType.GetGroupTrait(resource)
186190
if err != nil {
187191
return nil, "", nil, err
188192
}
189193

190-
orgID, ok := sdk.GetProfileInt64Value(teamTrait.Profile, "orgID")
194+
orgID, ok := rType.GetProfileInt64Value(teamTrait.Profile, "orgID")
191195
if !ok {
192196
return nil, "", nil, fmt.Errorf("error fetching orgID from team profile")
193197
}
@@ -223,25 +227,21 @@ func (o *teamResourceType) Grants(ctx context.Context, resource *v2.Resource, pT
223227

224228
var rv []*v2.Grant
225229
for _, user := range users {
226-
var annos annotations.Annotations
227230
membership, _, err := o.client.Teams.GetTeamMembershipByID(ctx, org.GetID(), githubID, user.GetLogin())
228231
if err != nil {
229232
return nil, "", nil, fmt.Errorf("github-connectorv2: failed to get team membership for user: %w", err)
230233
}
231234

232-
annos.Update(&v2.V1Identifier{
233-
Id: fmt.Sprintf("team-grant:%s:%d:%s", resource.Id.Resource, user.GetID(), membership.GetRole()),
234-
})
235-
236235
ur, err := userResource(ctx, user, user.GetEmail())
237236
if err != nil {
238237
return nil, "", nil, err
239238
}
240239

241-
grant := sdk.NewGrant(resource, membership.GetRole(), ur.Id)
242-
grant.Annotations = annos
243-
244-
rv = append(rv, grant)
240+
rv = append(rv, grant.NewGrant(resource, membership.GetRole(), ur.Id,
241+
grant.WithAnnotation(&v2.V1Identifier{
242+
Id: fmt.Sprintf("team-grant:%s:%d:%s", resource.Id.Resource, user.GetID(), membership.GetRole()),
243+
}),
244+
))
245245
}
246246

247247
return rv, pageToken, reqAnnos, nil

pkg/connector/user.go

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99
v2 "github.com/conductorone/baton-sdk/pb/c1/connector/v2"
1010
"github.com/conductorone/baton-sdk/pkg/annotations"
1111
"github.com/conductorone/baton-sdk/pkg/pagination"
12-
"github.com/conductorone/baton-sdk/pkg/sdk"
12+
"github.com/conductorone/baton-sdk/pkg/types/resource"
1313
"github.com/google/go-github/v41/github"
1414
"github.com/shurcooL/githubv4"
1515
"google.golang.org/protobuf/types/known/timestamppb"
@@ -41,15 +41,18 @@ func userResource(ctx context.Context, user *github.User, userEmail string) (*v2
4141
"user_id": strconv.Itoa(int(user.GetID())),
4242
}
4343

44-
ret, err := sdk.NewUserResource(
44+
ret, err := resource.NewUserResource(
4545
displayName,
4646
resourceTypeUser,
47-
nil,
4847
user.GetID(),
49-
userEmail,
50-
profile,
51-
&v2.ExternalLink{Url: user.GetHTMLURL()},
52-
&v2.V1Identifier{Id: strconv.FormatInt(user.GetID(), 10)},
48+
[]resource.UserTraitOption{
49+
resource.WithEmail(userEmail, true),
50+
resource.WithUserProfile(profile),
51+
},
52+
resource.WithAnnotation(
53+
&v2.ExternalLink{Url: user.GetHTMLURL()},
54+
&v2.V1Identifier{Id: strconv.FormatInt(user.GetID(), 10)},
55+
),
5356
)
5457
if err != nil {
5558
return nil, err

vendor/github.com/conductorone/baton-sdk/internal/dotc1z/sql_helpers.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)