Skip to content

Commit 6b3b012

Browse files
fao89claude
andcommitted
Add descriptions to LOCKED_ROLES for improved role documentation
Converts LOCKED_ROLES from list format to dictionary format with descriptive explanations for better role understanding and maintenance. Fixes: AAP-52212 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]> Signed-off-by: Fabricio Aguiar <[email protected]>
1 parent 74a9023 commit 6b3b012

File tree

1 file changed

+227
-118
lines changed

1 file changed

+227
-118
lines changed

pulp_container/app/viewsets.py

Lines changed: 227 additions & 118 deletions
Original file line numberDiff line numberDiff line change
@@ -451,18 +451,30 @@ class ContainerRemoteViewSet(RemoteViewSet, RolesMixin):
451451
"queryset_scoping": {"function": "scope_queryset"},
452452
}
453453
LOCKED_ROLES = {
454-
"container.containerremote_creator": [
455-
"container.add_containerremote",
456-
],
457-
"container.containerremote_owner": [
458-
"container.view_containerremote",
459-
"container.change_containerremote",
460-
"container.delete_containerremote",
461-
"container.manage_roles_containerremote",
462-
],
463-
"container.containerremote_viewer": [
464-
"container.view_containerremote",
465-
],
454+
"container.containerremote_creator": {
455+
"description": "Create new container remotes.",
456+
"permissions": [
457+
"container.add_containerremote",
458+
],
459+
},
460+
"container.containerremote_owner": {
461+
"description": (
462+
"Manage all aspects of container remotes including viewing, modifying, "
463+
"deleting, and managing user roles."
464+
),
465+
"permissions": [
466+
"container.view_containerremote",
467+
"container.change_containerremote",
468+
"container.delete_containerremote",
469+
"container.manage_roles_containerremote",
470+
],
471+
},
472+
"container.containerremote_viewer": {
473+
"description": "View container remote configurations and details.",
474+
"permissions": [
475+
"container.view_containerremote",
476+
],
477+
},
466478
}
467479

468480

@@ -531,18 +543,32 @@ class ContainerPullThroughRemoteViewSet(RemoteViewSet, RolesMixin):
531543
"queryset_scoping": {"function": "scope_queryset"},
532544
}
533545
LOCKED_ROLES = {
534-
"container.containerpullthroughremote_creator": [
535-
"container.add_containerpullthroughremote",
536-
],
537-
"container.containerpullthroughremote_owner": [
538-
"container.view_containerpullthroughremote",
539-
"container.change_containerpullthroughremote",
540-
"container.delete_containerpullthroughremote",
541-
"container.manage_roles_containerpullthroughremote",
542-
],
543-
"container.containerpullthroughremote_viewer": [
544-
"container.view_containerpullthroughremote",
545-
],
546+
"container.containerpullthroughremote_creator": {
547+
"description": (
548+
"Create new pull-through container remotes for caching external registries."
549+
),
550+
"permissions": [
551+
"container.add_containerpullthroughremote",
552+
],
553+
},
554+
"container.containerpullthroughremote_owner": {
555+
"description": (
556+
"Manage all aspects of pull-through container remotes including viewing, "
557+
"modifying, deleting, and managing user roles."
558+
),
559+
"permissions": [
560+
"container.view_containerpullthroughremote",
561+
"container.change_containerpullthroughremote",
562+
"container.delete_containerpullthroughremote",
563+
"container.manage_roles_containerpullthroughremote",
564+
],
565+
},
566+
"container.containerpullthroughremote_viewer": {
567+
"description": "View pull-through container remote configurations and details.",
568+
"permissions": [
569+
"container.view_containerpullthroughremote",
570+
],
571+
},
546572
}
547573

548574

@@ -751,27 +777,45 @@ class ContainerRepositoryViewSet(
751777
"queryset_scoping": {"function": "scope_queryset"},
752778
}
753779
LOCKED_ROLES = {
754-
"container.containerrepository_creator": ["container.add_containerrepository"],
755-
"container.containerrepository_owner": [
756-
"container.view_containerrepository",
757-
"container.change_containerrepository",
758-
"container.delete_containerrepository",
759-
"container.delete_containerrepository_versions",
760-
"container.sync_containerrepository",
761-
"container.modify_content_containerrepository",
762-
"container.build_image_containerrepository",
763-
"container.manage_roles_containerrepository",
764-
],
765-
"container.containerrepository_content_manager": [
766-
"container.view_containerrepository",
767-
"container.delete_containerrepository_versions",
768-
"container.sync_containerrepository",
769-
"container.modify_content_containerrepository",
770-
"container.build_image_containerrepository",
771-
],
772-
"container.containerrepository_viewer": [
773-
"container.view_containerrepository",
774-
],
780+
"container.containerrepository_creator": {
781+
"description": "Create new container repositories.",
782+
"permissions": ["container.add_containerrepository"],
783+
},
784+
"container.containerrepository_owner": {
785+
"description": (
786+
"Manage all aspects of container repositories including viewing, modifying, "
787+
"deleting, syncing, content management, image building, and user role management."
788+
),
789+
"permissions": [
790+
"container.view_containerrepository",
791+
"container.change_containerrepository",
792+
"container.delete_containerrepository",
793+
"container.delete_containerrepository_versions",
794+
"container.sync_containerrepository",
795+
"container.modify_content_containerrepository",
796+
"container.build_image_containerrepository",
797+
"container.manage_roles_containerrepository",
798+
],
799+
},
800+
"container.containerrepository_content_manager": {
801+
"description": (
802+
"Manage container repository content including viewing, syncing, "
803+
"modifying content, building images, and deleting repository versions."
804+
),
805+
"permissions": [
806+
"container.view_containerrepository",
807+
"container.delete_containerrepository_versions",
808+
"container.sync_containerrepository",
809+
"container.modify_content_containerrepository",
810+
"container.build_image_containerrepository",
811+
],
812+
},
813+
"container.containerrepository_viewer": {
814+
"description": "View container repository details and configurations.",
815+
"permissions": [
816+
"container.view_containerrepository",
817+
],
818+
},
775819
}
776820

777821
# This decorator is necessary since a sync operation is asyncrounous and returns
@@ -1367,24 +1411,44 @@ class ContainerDistributionViewSet(DistributionViewSet, RolesMixin):
13671411
},
13681412
}
13691413
LOCKED_ROLES = {
1370-
"container.containerdistribution_creator": ["container.add_containerdistribution"],
1371-
"container.containerdistribution_owner": [
1372-
"container.view_containerdistribution",
1373-
"container.pull_containerdistribution",
1374-
"container.push_containerdistribution",
1375-
"container.delete_containerdistribution",
1376-
"container.change_containerdistribution",
1377-
"container.manage_roles_containerdistribution",
1378-
],
1379-
"container.containerdistribution_collaborator": [
1380-
"container.view_containerdistribution",
1381-
"container.pull_containerdistribution",
1382-
"container.push_containerdistribution",
1383-
],
1384-
"container.containerdistribution_consumer": [
1385-
"container.view_containerdistribution",
1386-
"container.pull_containerdistribution",
1387-
],
1414+
"container.containerdistribution_creator": {
1415+
"description": "Create new container distributions.",
1416+
"permissions": ["container.add_containerdistribution"],
1417+
},
1418+
"container.containerdistribution_owner": {
1419+
"description": (
1420+
"Manage all aspects of container distributions including viewing, pulling, "
1421+
"pushing, deleting, modifying configurations, and managing user roles."
1422+
),
1423+
"permissions": [
1424+
"container.view_containerdistribution",
1425+
"container.pull_containerdistribution",
1426+
"container.push_containerdistribution",
1427+
"container.delete_containerdistribution",
1428+
"container.change_containerdistribution",
1429+
"container.manage_roles_containerdistribution",
1430+
],
1431+
},
1432+
"container.containerdistribution_collaborator": {
1433+
"description": (
1434+
"Collaborate on container distributions with permissions to view, pull, "
1435+
"and push content."
1436+
),
1437+
"permissions": [
1438+
"container.view_containerdistribution",
1439+
"container.pull_containerdistribution",
1440+
"container.push_containerdistribution",
1441+
],
1442+
},
1443+
"container.containerdistribution_consumer": {
1444+
"description": (
1445+
"Consume container distributions with read-only access to view and pull content."
1446+
),
1447+
"permissions": [
1448+
"container.view_containerdistribution",
1449+
"container.pull_containerdistribution",
1450+
],
1451+
},
13881452
}
13891453

13901454
def get_dist_qs(self, qs, ns_perm, dist_perm):
@@ -1525,24 +1589,46 @@ class ContainerPullThroughDistributionViewSet(DistributionViewSet, RolesMixin):
15251589
],
15261590
}
15271591
LOCKED_ROLES = {
1528-
"container.containerpullthroughdistribution_creator": [
1529-
"container.add_containerpullthroughdistribution"
1530-
],
1531-
"container.containerpullthroughdistribution_owner": [
1532-
"container.view_containerpullthroughdistribution",
1533-
"container.delete_containerpullthroughdistribution",
1534-
"container.change_containerpullthroughdistribution",
1535-
"container.manage_roles_containerpullthroughdistribution",
1536-
"container.pull_new_containerdistribution",
1537-
],
1538-
"container.containerpullthroughdistribution_collaborator": [
1539-
"container.view_containerpullthroughdistribution",
1540-
"container.pull_new_containerdistribution",
1541-
],
1542-
"container.containerpullthroughdistribution_consumer": [
1543-
"container.view_containerpullthroughdistribution",
1544-
"container.pull_new_containerdistribution",
1545-
],
1592+
"container.containerpullthroughdistribution_creator": {
1593+
"description": (
1594+
"Create new pull-through container distributions for caching external content."
1595+
),
1596+
"permissions": ["container.add_containerpullthroughdistribution"],
1597+
},
1598+
"container.containerpullthroughdistribution_owner": {
1599+
"description": (
1600+
"Manage all aspects of pull-through container distributions including "
1601+
"viewing, deleting, modifying configurations, managing user roles, "
1602+
"and pulling new content."
1603+
),
1604+
"permissions": [
1605+
"container.view_containerpullthroughdistribution",
1606+
"container.delete_containerpullthroughdistribution",
1607+
"container.change_containerpullthroughdistribution",
1608+
"container.manage_roles_containerpullthroughdistribution",
1609+
"container.pull_new_containerdistribution",
1610+
],
1611+
},
1612+
"container.containerpullthroughdistribution_collaborator": {
1613+
"description": (
1614+
"Collaborate on pull-through container distributions with permissions "
1615+
"to view and pull new content."
1616+
),
1617+
"permissions": [
1618+
"container.view_containerpullthroughdistribution",
1619+
"container.pull_new_containerdistribution",
1620+
],
1621+
},
1622+
"container.containerpullthroughdistribution_consumer": {
1623+
"description": (
1624+
"Consume pull-through container distributions with read-only access "
1625+
"to view and pull new content."
1626+
),
1627+
"permissions": [
1628+
"container.view_containerpullthroughdistribution",
1629+
"container.pull_new_containerdistribution",
1630+
],
1631+
},
15461632
}
15471633

15481634

@@ -1631,43 +1717,66 @@ class ContainerNamespaceViewSet(
16311717
}
16321718

16331719
LOCKED_ROLES = {
1634-
"container.containernamespace_creator": [
1635-
"container.add_containernamespace",
1636-
],
1637-
"container.containernamespace_owner": [
1638-
"container.view_containernamespace",
1639-
"container.delete_containernamespace",
1640-
"container.namespace_add_containerdistribution",
1641-
"container.namespace_delete_containerdistribution",
1642-
"container.namespace_view_containerdistribution",
1643-
"container.namespace_pull_containerdistribution",
1644-
"container.namespace_push_containerdistribution",
1645-
"container.namespace_change_containerdistribution",
1646-
"container.namespace_view_containerpushrepository",
1647-
"container.namespace_modify_content_containerpushrepository",
1648-
"container.namespace_modify_content_containerrepository",
1649-
"container.namespace_change_containerpushrepository",
1650-
"container.manage_roles_containernamespace",
1651-
],
1652-
"container.containernamespace_collaborator": [
1653-
"container.view_containernamespace",
1654-
"container.namespace_add_containerdistribution",
1655-
"container.namespace_delete_containerdistribution",
1656-
"container.namespace_view_containerdistribution",
1657-
"container.namespace_pull_containerdistribution",
1658-
"container.namespace_push_containerdistribution",
1659-
"container.namespace_change_containerdistribution",
1660-
"container.namespace_view_containerpushrepository",
1661-
"container.namespace_modify_content_containerpushrepository",
1662-
"container.namespace_modify_content_containerrepository",
1663-
"container.namespace_change_containerpushrepository",
1664-
],
1665-
"container.containernamespace_consumer": [
1666-
"container.view_containernamespace",
1667-
"container.namespace_view_containerdistribution",
1668-
"container.namespace_pull_containerdistribution",
1669-
"container.namespace_view_containerpushrepository",
1670-
],
1720+
"container.containernamespace_creator": {
1721+
"description": "Create new container namespaces.",
1722+
"permissions": [
1723+
"container.add_containernamespace",
1724+
],
1725+
},
1726+
"container.containernamespace_owner": {
1727+
"description": (
1728+
"Manage all aspects of container namespaces including viewing, deleting, "
1729+
"managing distributions and repositories within the namespace, "
1730+
"modifying content, and managing user roles."
1731+
),
1732+
"permissions": [
1733+
"container.view_containernamespace",
1734+
"container.delete_containernamespace",
1735+
"container.namespace_add_containerdistribution",
1736+
"container.namespace_delete_containerdistribution",
1737+
"container.namespace_view_containerdistribution",
1738+
"container.namespace_pull_containerdistribution",
1739+
"container.namespace_push_containerdistribution",
1740+
"container.namespace_change_containerdistribution",
1741+
"container.namespace_view_containerpushrepository",
1742+
"container.namespace_modify_content_containerpushrepository",
1743+
"container.namespace_modify_content_containerrepository",
1744+
"container.namespace_change_containerpushrepository",
1745+
"container.manage_roles_containernamespace",
1746+
],
1747+
},
1748+
"container.containernamespace_collaborator": {
1749+
"description": (
1750+
"Collaborate on container namespaces with permissions to view, "
1751+
"manage distributions and repositories, modify content, "
1752+
"and perform push/pull operations."
1753+
),
1754+
"permissions": [
1755+
"container.view_containernamespace",
1756+
"container.namespace_add_containerdistribution",
1757+
"container.namespace_delete_containerdistribution",
1758+
"container.namespace_view_containerdistribution",
1759+
"container.namespace_pull_containerdistribution",
1760+
"container.namespace_push_containerdistribution",
1761+
"container.namespace_change_containerdistribution",
1762+
"container.namespace_view_containerpushrepository",
1763+
"container.namespace_modify_content_containerpushrepository",
1764+
"container.namespace_modify_content_containerrepository",
1765+
"container.namespace_change_containerpushrepository",
1766+
],
1767+
},
1768+
"container.containernamespace_consumer": {
1769+
"description": (
1770+
"Consume container namespaces with read-only access to view "
1771+
"namespace content, distributions, and repositories."
1772+
),
1773+
"permissions": [
1774+
"container.view_containernamespace",
1775+
"container.namespace_view_containerdistribution",
1776+
"container.namespace_pull_containerdistribution",
1777+
"container.namespace_view_containerpushrepository",
1778+
],
1779+
},
16711780
}
16721781

16731782
@extend_schema(

0 commit comments

Comments
 (0)