This repository was archived by the owner on May 24, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 5
This repository was archived by the owner on May 24, 2024. It is now read-only.
CLA Group Management #12
Copy link
Copy link
Open
Labels
03 - MedMedium PriorityMedium Prioritysize:MediumAn issue or feature that can be resolved in 1-3 days.An issue or feature that can be resolved in 1-3 days.
Milestone
Description
Summary
This task is to create an API for CLA Group Management
Background
A CLA Group is a logical organization under a single Foundation (also often called a Project) that groups a collection of related source code organizations (e.g. GitHub Organization or Gerrit Group) and/or repositories under a single CLA legal grouping/policy.
The CLA Group consists of:
- CLA Group Name
- A reference to the parent Foundation/Project (this will be a SFID)
- A pair of CLA templates (CCLA and ICLA)
- Flags to indicate which CLA templates are active/enabled for this CLA Group
- A collection of one or more Project Managers (references to user objects)
- References to the source code organizations/repositories
This task will define, implement, validate and test the API services supporting creating, updating, viewing, searching and deleting CLA Groups.
Tasks
- Define a swagger specification for creating a CLA group
- The swagger specification will accept the foundation id (SFID), CLA Group Name, one or more Project managers (SFID's of users)
- Define a swagger specification for updating a CLA group
- Define a swagger specification for deleting a CLA group
- Define a swagger specification for searching or listing a list of CLA groups by foundation id. Include pagination params as well: page_size/limit, offset, order_by as the list of CLA groups should be managed.
- Define a swagger specification for searching or listing a list of CLA groups by a project manager id. Include pagination params as well: page_size/limit, offset, order_by as the list of CLA groups should be managed.
- Define the CLA group database schema using
dbmate. Fields might include:- id: pk GUID type v4 or something similar
- CLA Group Name
- Parent foundation id
- date created
- date updates/last updated
- ccla enabled flag (boolean)
- icla enabled flag (boolean)
- CCLA and ICLA template definitions will be defined in another table
- Create a repo implementation for the CRUD operations defined above
- Create a service layer to support the REST operations defined above
- Create an API handler to bin the Swagger specification to the implementation
- Add the handler/service/repo to the setup to stitch it together
- Create an audit event in the audit table when a CLA Group is added, updated or deleted (we will backfill the API user info later)
- test/validate CRUD operations
This is the first piece of several to establish the Project/CLA Group/Template setup required for on-boarding a project.
User Story
- As an LF admin, I want to create, update and delete CLA groups under a Foundation to support project setup and maintenance.
- As a Project Manager, I want to view my CLA groups under a given Foundation.
Acceptance Criteria
- Unit tests for create/delete audit events
- Create function tests for audit events (see @dealako for CI/CD automation)
- Demonstration of audit service to product owners.
References
See existing cla-project-{STAGE} table concepts/schema already defined in DynamoDB for an example.
Metadata
Metadata
Assignees
Labels
03 - MedMedium PriorityMedium Prioritysize:MediumAn issue or feature that can be resolved in 1-3 days.An issue or feature that can be resolved in 1-3 days.