@@ -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