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

CLA Group Management #12

Description

@dealako

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

03 - MedMedium Prioritysize:MediumAn issue or feature that can be resolved in 1-3 days.

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions