Skip to content

Add Group Membership Management #7

@Trozz

Description

@Trozz

Feature Request: Group Membership Management

Enhance the existing group resource to support managing user-group memberships.

Current State

The current pocketid_group resource can:

  • Create and manage groups
  • Set group names and friendly names

Missing Functionality

Cannot manage which users belong to which groups through Terraform.

Proposed Enhancement

Option 1: Add members attribute to group resource

resource "pocketid_group" "developers" {
  name          = "developers"
  friendly_name = "Development Team"
  
  # NEW: Manage group membership
  member_ids = [
    pocketid_user.john.id,
    pocketid_user.jane.id,
    pocketid_user.bob.id
  ]
}

Option 2: Create a separate membership resource

resource "pocketid_group_membership" "john_dev" {
  group_id = pocketid_group.developers.id
  user_id  = pocketid_user.john.id
}

# Or batch management
resource "pocketid_group_memberships" "dev_team" {
  group_id = pocketid_group.developers.id
  user_ids = [
    pocketid_user.john.id,
    pocketid_user.jane.id,
    pocketid_user.bob.id
  ]
}

Use Cases

  • Automated user onboarding/offboarding
  • Role-based access control setup
  • Team management automation
  • Compliance and audit requirements
  • Dynamic group membership based on other infrastructure

Implementation Considerations

  • Option 1 is simpler but requires managing all members at once
  • Option 2 allows more granular control and better handles dynamic membership
  • Need to handle membership conflicts gracefully
  • Consider import functionality for existing memberships
  • Update operations should handle additions and removals efficiently

API Integration

Need to identify the correct API endpoints for:

  • Adding users to groups
  • Removing users from groups
  • Listing group members
  • Bulk membership updates

Recommendation

Option 2 (separate resource) is recommended as it:

  • Allows individual membership management
  • Better handles dynamic scenarios
  • Avoids conflicts when multiple resources manage the same group
  • More aligned with Terraform patterns (like AWS IAM)

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions