Skip to content
This repository has been archived by the owner on May 24, 2024. It is now read-only.

CLA Group Management #12

Open
13 of 15 tasks
dealako opened this issue Nov 16, 2019 · 0 comments
Open
13 of 15 tasks

CLA Group Management #12

dealako opened this issue Nov 16, 2019 · 0 comments
Assignees
Labels
03 - Med Medium Priority size:Medium An issue or feature that can be resolved in 1-3 days.
Milestone

Comments

@dealako
Copy link
Member

dealako commented Nov 16, 2019

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:

  1. CLA Group Name
  2. A reference to the parent Foundation/Project (this will be a SFID)
  3. A pair of CLA templates (CCLA and ICLA)
  4. Flags to indicate which CLA templates are active/enabled for this CLA Group
  5. A collection of one or more Project Managers (references to user objects)
  6. 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

  1. Define a swagger specification for creating a CLA group
    1. The swagger specification will accept the foundation id (SFID), CLA Group Name, one or more Project managers (SFID's of users)
  2. Define a swagger specification for updating a CLA group
  3. Define a swagger specification for deleting a CLA group
  4. 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.
  5. 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.
  6. Define the CLA group database schema using dbmate. Fields might include:
    1. id: pk GUID type v4 or something similar
    2. CLA Group Name
    3. Parent foundation id
    4. date created
    5. date updates/last updated
    6. ccla enabled flag (boolean)
    7. icla enabled flag (boolean)
    8. CCLA and ICLA template definitions will be defined in another table
  7. Create a repo implementation for the CRUD operations defined above
  8. Create a service layer to support the REST operations defined above
  9. Create an API handler to bin the Swagger specification to the implementation
  10. Add the handler/service/repo to the setup to stitch it together
  11. 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)
  12. 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

  1. As an LF admin, I want to create, update and delete CLA groups under a Foundation to support project setup and maintenance.
  2. 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.

@dealako dealako added 03 - Med Medium Priority size:Medium An issue or feature that can be resolved in 1-3 days. labels Nov 16, 2019
@dealako dealako added this to the Sprint 01 milestone Nov 16, 2019
@dealako dealako modified the milestones: Sprint 01, Sprint 02 Nov 27, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
03 - Med Medium Priority size:Medium An issue or feature that can be resolved in 1-3 days.
Projects
None yet
Development

No branches or pull requests

2 participants