Add project_id attribute to group and group snapshot response

https://blueprints.launchpad.net/cinder/+spec/add-project-id-to-group-groupsnapshot-response

This blueprint proposes to add project_id attribute to the response body of list groups with detail, list group snapshots with detail, show group detail and show group snapshot detail APIs.

Problem Description

Currently, the group and group snapshot show response doesn’t include project_id. It is an important parameter while differentiating between multiple groups and multiple group snapshots in horizon.

Use Cases

As horizon is adding tabs for groups and group snapshots listing with detail in the admin panel[1], it requires project_id as a response parameter from the groups and group snapshots API. It is similar to what is implemented in volumes and snapshots list.

Proposed change

This spec proposes to add project_id attribute to the response body of list groups with detail, list group snapshots with detail, show group detail and show group snapshot detail APIs.

Add a new microverion API to add project_id attribute to the response body of list groups with detail, list group snapshots with detail, show group detail and show group snapshot detail APIs:

  • List groups with detail GET /v3/{project_id}/groups/detail

  • List group snapshots with detail GET /v3/{project_id}/group_snapshots/detail

  • Show group detail GET /v3/{project_id}/groups/{group_id}

  • Show group snapshot detail GET /v3/{project_id}/group_snapshots/{group_snapshot_id}

Alternatives

None

REST API impact

Add a new microversion in Cinder API.

  • List groups with detail:

    GET /v3/{project_id}/groups/detail
    Response BODY:
    {
        "groups": [{
            ...
            "project_id": "7ccf4863071f44aeb8f141f65780c51b"
        }]
    }
    
  • List group snapshots with detail:

    GET /v3/{project_id}/group_snapshots/detail
    Response BODY:
    {
        "group_snapshots": [{
            ...
            "project_id": "7ccf4863071f44aeb8f141f65780c51b"
        }]
    }
    
  • Show group detail:

    GET /v3/{project_id}/groups/{group_id}
    Response BODY:
    {
        "group": [{
            ...
            "project_id": "7ccf4863071f44aeb8f141f65780c51b"
        }]
    }
    
  • Show group snapshot detail:

    GET /v3/{project_id}/group_snapshots/{group_snapshot_id}
    Response BODY:
    {
        "group_snapshot": [{
            ...
            "project_id": "7ccf4863071f44aeb8f141f65780c51b"
        }]
    }
    

Calling this method shows project_id for a group or group snapshot. It is intended for admins to use, which is used to display the project_id to which the group or group snapshot belongs, and controlled by GROUP_ATTRIBUTES_POLICY or GROUP_SNAPSHOT_ATTRIBUTES_POLICY.

Data model impact

None

Security impact

None

Notifications impact

None

Other end user impact

None

Performance Impact

None

Other deployer impact

None

Developer impact

None

Implementation

Assignee(s)

Primary assignee:

Rajat Dhasmana <rajatdhasmana@gmail.com>

Work Items

  • Add a new microversion.

  • Add project_id to the response body of list groups with detail, list group snapshots with detail, show group detail and show group snapshot detail APIs.

  • Add the related unit tests.

  • Update related list groups with detail, list group snapshots with detail, show group detail and show group snapshot detail api doc.

Dependencies

None

Testing

  • Unit-tests and other related test should be implemented

Documentation Impact

None

References

[1] https://blueprints.launchpad.net/horizon/+spec/cinder-generic-volume-groups