From 51091e46fca58cd34bb8a52d0d4f1ec94af2480b Mon Sep 17 00:00:00 2001 From: Geoff Greer Date: Mon, 24 Aug 2026 10:44:06 -0700 Subject: [PATCH] Fix linter errors caused by deprecated attributes. --- pkg/connector/agents.go | 20 ++++++++++---------- pkg/connector/connector_test.go | 5 +++-- pkg/connector/groups.go | 6 ++++-- pkg/connector/nhis.go | 11 +++++------ pkg/connector/roles.go | 29 +++++++++++++++++++---------- pkg/connector/secrets.go | 6 +++--- pkg/connector/users.go | 30 ++++++++++++++---------------- 7 files changed, 58 insertions(+), 49 deletions(-) diff --git a/pkg/connector/agents.go b/pkg/connector/agents.go index 915e44aa..bcd0c2b1 100644 --- a/pkg/connector/agents.go +++ b/pkg/connector/agents.go @@ -21,29 +21,26 @@ func (o *agentBuilder) ResourceType(ctx context.Context) *v2.ResourceType { } // agentStatus maps the client agent-status string to the proto enum. -func agentStatus(s string) v2.AgentTrait_AgentStatus { +func agentStatus(s string) v2.Status_ResourceStatus { switch s { case client.AgentStatusReady: - return v2.AgentTrait_AGENT_STATUS_READY + return v2.Status_RESOURCE_STATUS_ENABLED case client.AgentStatusDisabled: - return v2.AgentTrait_AGENT_STATUS_DISABLED + return v2.Status_RESOURCE_STATUS_DISABLED case client.AgentStatusDeleted: - return v2.AgentTrait_AGENT_STATUS_DELETED + return v2.Status_RESOURCE_STATUS_DELETED default: - return v2.AgentTrait_AGENT_STATUS_UNSPECIFIED + return v2.Status_RESOURCE_STATUS_UNSPECIFIED } } func agentResource(a *client.Agent, parentResourceID *v2.ResourceId) (*v2.Resource, error) { - profile := make(map[string]interface{}, len(a.Profile)) + profile := make(map[string]any, len(a.Profile)) for k, v := range a.Profile { profile[k] = v } - agentOpts := []resource.AgentTraitOption{ - resource.WithAgentStatus(agentStatus(a.Status)), - resource.WithAgentProfile(profile), - } + agentOpts := []resource.AgentTraitOption{} // The identity the agent authenticates as (a service-account user). if a.IdentityID != "" { identityID, err := resource.NewResourceID(userResourceType, a.IdentityID) @@ -59,6 +56,9 @@ func agentResource(a *client.Agent, parentResourceID *v2.ResourceId) (*v2.Resour a.Id, resource.WithAgentTrait(agentOpts...), resource.WithParentResourceID(parentResourceID), + resource.WithResourceStatus(agentStatus(a.Status), a.Status), + resource.WithResourceProfile(profile), + resource.WithResourceCreatedAt(a.CreatedAt), ) } diff --git a/pkg/connector/connector_test.go b/pkg/connector/connector_test.go index 2a3766e3..3cdd9b1b 100644 --- a/pkg/connector/connector_test.go +++ b/pkg/connector/connector_test.go @@ -110,7 +110,7 @@ func TestSecretsEmitSecretTrait(t *testing.T) { st := pickSecretTrait(t, r) assert.NotEqual(t, v2.SecretTrait_CREDENTIAL_TYPE_UNSPECIFIED, st.GetCredentialType()) credTypes[st.GetCredentialType()]++ - require.NotNil(t, st.GetCreatedAt()) + require.NotNil(t, r.GetCreatedAt()) if st.GetIdentityId() != nil { owned++ // Owned secrets back-reference a user (service account) resource. @@ -194,7 +194,8 @@ func TestAgentsEmitAgentTrait(t *testing.T) { assert.Equal(t, agentResourceType.Id, r.GetId().GetResourceType()) at, err := resource.GetAgentTrait(r) require.NoError(t, err) - assert.NotEqual(t, v2.AgentTrait_AGENT_STATUS_UNSPECIFIED, at.GetStatus()) + require.NotNil(t, r.GetStatus()) + assert.NotEqual(t, v2.Status_RESOURCE_STATUS_UNSPECIFIED, r.GetStatus().GetStatus()) // Each agent authenticates as a service-account user. require.NotNil(t, at.GetIdentityResourceId()) assert.Equal(t, userResourceType.Id, at.GetIdentityResourceId().GetResourceType()) diff --git a/pkg/connector/groups.go b/pkg/connector/groups.go index d80cfc27..41cba434 100644 --- a/pkg/connector/groups.go +++ b/pkg/connector/groups.go @@ -42,12 +42,14 @@ func groupResource(g *client.Group, parentResourceID *v2.ResourceId) (*v2.Resour profile["created_at"] = g.CreatedAt.Format(time.RFC3339) profile["updated_at"] = g.UpdatedAt.Format(time.RFC3339) - return resource.NewGroupResource( + return resource.NewResource( g.Name, groupResourceType, g.Id, - []resource.GroupTraitOption{resource.WithGroupProfile(profile)}, + resource.WithGroupTrait(), resource.WithParentResourceID(parentResourceID), + resource.WithResourceProfile(profile), + resource.WithResourceCreatedAt(g.CreatedAt), ) } diff --git a/pkg/connector/nhis.go b/pkg/connector/nhis.go index b120c28e..cc51f3b7 100644 --- a/pkg/connector/nhis.go +++ b/pkg/connector/nhis.go @@ -42,16 +42,15 @@ func nhiResource(n *client.NHI, rt *v2.ResourceType, parentResourceID *v2.Resour opts := []resource.ResourceOption{ resource.WithParentResourceID(parentResourceID), resource.WithNHIType(nhiType(n.NhiType), n.NhiDetail), + resource.WithResourceProfile(map[string]any{ + "nhi_type": n.NhiType, + }), } switch n.Kind { case client.NHIKindRole: - opts = append(opts, resource.WithRoleTrait(resource.WithRoleProfile(map[string]interface{}{ - "nhi_type": n.NhiType, - }))) + opts = append(opts, resource.WithRoleTrait()) default: - opts = append(opts, resource.WithAppTrait(resource.WithAppProfile(map[string]interface{}{ - "nhi_type": n.NhiType, - }))) + opts = append(opts, resource.WithAppTrait()) } return resource.NewResource(n.Name, rt, n.Id, opts...) } diff --git a/pkg/connector/roles.go b/pkg/connector/roles.go index cca85a3f..1c6cb9ce 100644 --- a/pkg/connector/roles.go +++ b/pkg/connector/roles.go @@ -9,6 +9,7 @@ import ( "github.com/conductorone/baton-demo/pkg/client" v2 "github.com/conductorone/baton-sdk/pb/c1/connector/v2" "github.com/conductorone/baton-sdk/pkg/annotations" + "github.com/conductorone/baton-sdk/pkg/connectorbuilder" "github.com/conductorone/baton-sdk/pkg/pagination" sdkEntitlement "github.com/conductorone/baton-sdk/pkg/types/entitlement" sdkGrant "github.com/conductorone/baton-sdk/pkg/types/grant" @@ -25,22 +26,30 @@ type roleBuilder struct { client *client.Client } +var _ connectorbuilder.ResourceSyncerV2 = &roleBuilder{} + func (o *roleBuilder) ResourceType(ctx context.Context) *v2.ResourceType { return roleResourceType } func roleResource(r *client.Role, parentResourceID *v2.ResourceId) (*v2.Resource, error) { - traits := []resource.RoleTraitOption{ - resource.WithRoleProfile(map[string]any{ - "role_color": "blue", - "total_assignments": len(r.DirectAssignments) + len(r.GroupAssignments), - "direct_assignments": len(r.DirectAssignments), - "group_assignments": len(r.GroupAssignments), - "created_at": r.CreatedAt.Format(time.RFC3339), - "updated_at": r.UpdatedAt.Format(time.RFC3339), - }), + profile := map[string]any{ + "role_color": "blue", + "total_assignments": len(r.DirectAssignments) + len(r.GroupAssignments), + "direct_assignments": len(r.DirectAssignments), + "group_assignments": len(r.GroupAssignments), + "created_at": r.CreatedAt.Format(time.RFC3339), + "updated_at": r.UpdatedAt.Format(time.RFC3339), } - return resource.NewRoleResource(r.Name, roleResourceType, r.Id, traits, resource.WithParentResourceID(parentResourceID)) + return resource.NewResource( + r.Name, + roleResourceType, + r.Id, + resource.WithRoleTrait(), + resource.WithParentResourceID(parentResourceID), + resource.WithResourceProfile(profile), + resource.WithResourceCreatedAt(r.CreatedAt), + ) } // List returns all the roles from the database as resource objects diff --git a/pkg/connector/secrets.go b/pkg/connector/secrets.go index 766f1d41..34c6b585 100644 --- a/pkg/connector/secrets.go +++ b/pkg/connector/secrets.go @@ -37,7 +37,6 @@ func credentialType(s string) v2.SecretTrait_CredentialType { func secretResource(s *client.Secret, parentResourceID *v2.ResourceId) (*v2.Resource, error) { traitOpts := []resource.SecretTraitOption{ resource.WithSecretType(credentialType(s.CredentialType)), - resource.WithSecretCreatedAt(s.CreatedAt), } if s.CredentialDetail != "" { traitOpts = append(traitOpts, resource.WithSecretDetail(s.CredentialDetail)) @@ -57,12 +56,13 @@ func secretResource(s *client.Secret, parentResourceID *v2.ResourceId) (*v2.Reso traitOpts = append(traitOpts, resource.WithSecretIdentityID(identityID)) } - return resource.NewSecretResource( + return resource.NewResource( s.Name, secretResourceType, s.Id, - traitOpts, + resource.WithSecretTrait(traitOpts...), resource.WithParentResourceID(parentResourceID), + resource.WithResourceCreatedAt(s.CreatedAt), ) } diff --git a/pkg/connector/users.go b/pkg/connector/users.go index e8b767d0..281c53fa 100644 --- a/pkg/connector/users.go +++ b/pkg/connector/users.go @@ -99,17 +99,15 @@ func accountType(s string) v2.UserTrait_AccountType { } } -func userResource(u *client.User, parentResourceID *v2.ResourceId) (*v2.Resource, error) { - // Determine the user status based on the enabled field - var status v2.UserTrait_Status_Status - var statusMessage string - if u.Enabled { - status = v2.UserTrait_Status_STATUS_ENABLED - statusMessage = "Enabled" - } else { - status = v2.UserTrait_Status_STATUS_DISABLED - statusMessage = "Disabled" +func userStatus(enabled bool) (v2.Status_ResourceStatus, string) { + if enabled { + return v2.Status_RESOURCE_STATUS_ENABLED, "Enabled" } + return v2.Status_RESOURCE_STATUS_DISABLED, "Disabled" +} + +func userResource(u *client.User, parentResourceID *v2.ResourceId) (*v2.Resource, error) { + status, statusMessage := userStatus(u.Enabled) attrs := make(map[string]any) for k, v := range u.Attrs { @@ -120,21 +118,21 @@ func userResource(u *client.User, parentResourceID *v2.ResourceId) (*v2.Resource attrs["created_at"] = u.CreatedAt.Format(time.RFC3339) attrs["updated_at"] = u.UpdatedAt.Format(time.RFC3339) - traits := []resource.UserTraitOption{ + userOpts := []resource.UserTraitOption{ resource.WithEmail(u.Email, true), resource.WithUserLogin(u.Id), - resource.WithDetailedStatus(status, statusMessage), resource.WithEmployeeID(u.Id), resource.WithAccountType(accountType(u.AccountType)), - resource.WithUserProfile(attrs), - resource.WithCreatedAt(u.CreatedAt), } - return resource.NewUserResource( + return resource.NewResource( u.Name, userResourceType, u.Id, - traits, + resource.WithUserTrait(userOpts...), resource.WithParentResourceID(parentResourceID), + resource.WithResourceStatus(status, statusMessage), + resource.WithResourceProfile(attrs), + resource.WithResourceCreatedAt(u.CreatedAt), ) }