4e195570e5
Update default policy-in-code rules in horizon based on nova/neutron/cinder/glance RC deliverables. More precisely, they are based on the top of stable/wallaby branch of these projects as of Apr 7 14UTC. Change-Id: I2040201b533f1d16f1f629e31be8d7b9130b2e52
667 lines
21 KiB
YAML
667 lines
21 KiB
YAML
# Decides what is required for the 'is_admin:True' check to succeed.
|
|
#"context_is_admin": "role:admin"
|
|
|
|
# Default rule for most non-Admin APIs.
|
|
#"admin_or_owner": "is_admin:True or (role:admin and is_admin_project:True) or project_id:%(project_id)s"
|
|
|
|
# Default rule for most Admin APIs.
|
|
#"admin_api": "is_admin:True or (role:admin and is_admin_project:True)"
|
|
|
|
# Default rule for admins of cloud, domain or a project.
|
|
#"system_or_domain_or_project_admin": "(role:admin and system_scope:all) or (role:admin and domain_id:%(domain_id)s) or (role:admin and project_id:%(project_id)s)"
|
|
|
|
# Create attachment.
|
|
# POST /attachments
|
|
#"volume:attachment_create": ""
|
|
|
|
# Update attachment.
|
|
# PUT /attachments/{attachment_id}
|
|
#"volume:attachment_update": "rule:admin_or_owner"
|
|
|
|
# Delete attachment.
|
|
# DELETE /attachments/{attachment_id}
|
|
#"volume:attachment_delete": "rule:admin_or_owner"
|
|
|
|
# Mark a volume attachment process as completed (in-use)
|
|
# POST /attachments/{attachment_id}/action (os-complete)
|
|
#"volume:attachment_complete": "rule:admin_or_owner"
|
|
|
|
# Allow multiattach of bootable volumes.
|
|
# POST /attachments
|
|
#"volume:multiattach_bootable_volume": "rule:admin_or_owner"
|
|
|
|
# List messages.
|
|
# GET /messages
|
|
#"message:get_all": "rule:admin_or_owner"
|
|
|
|
# Show message.
|
|
# GET /messages/{message_id}
|
|
#"message:get": "rule:admin_or_owner"
|
|
|
|
# Delete message.
|
|
# DELETE /messages/{message_id}
|
|
#"message:delete": "rule:admin_or_owner"
|
|
|
|
# List clusters.
|
|
# GET /clusters
|
|
# GET /clusters/detail
|
|
#"clusters:get_all": "rule:admin_api"
|
|
|
|
# Show cluster.
|
|
# GET /clusters/{cluster_id}
|
|
#"clusters:get": "rule:admin_api"
|
|
|
|
# Update cluster.
|
|
# PUT /clusters/{cluster_id}
|
|
#"clusters:update": "rule:admin_api"
|
|
|
|
# Clean up workers.
|
|
# POST /workers/cleanup
|
|
#"workers:cleanup": "rule:admin_api"
|
|
|
|
# Show snapshot's metadata or one specified metadata with a given key.
|
|
# GET /snapshots/{snapshot_id}/metadata
|
|
# GET /snapshots/{snapshot_id}/metadata/{key}
|
|
#"volume:get_snapshot_metadata": "rule:admin_or_owner"
|
|
|
|
# Update snapshot's metadata or one specified metadata with a given
|
|
# key.
|
|
# PUT /snapshots/{snapshot_id}/metadata
|
|
# PUT /snapshots/{snapshot_id}/metadata/{key}
|
|
#"volume:update_snapshot_metadata": "rule:admin_or_owner"
|
|
|
|
# Delete snapshot's specified metadata with a given key.
|
|
# DELETE /snapshots/{snapshot_id}/metadata/{key}
|
|
#"volume:delete_snapshot_metadata": "rule:admin_or_owner"
|
|
|
|
# List snapshots.
|
|
# GET /snapshots
|
|
# GET /snapshots/detail
|
|
#"volume:get_all_snapshots": "rule:admin_or_owner"
|
|
|
|
# List or show snapshots with extended attributes.
|
|
# GET /snapshots/{snapshot_id}
|
|
# GET /snapshots/detail
|
|
#"volume_extension:extended_snapshot_attributes": "rule:admin_or_owner"
|
|
|
|
# Create snapshot.
|
|
# POST /snapshots
|
|
#"volume:create_snapshot": "rule:admin_or_owner"
|
|
|
|
# Show snapshot.
|
|
# GET /snapshots/{snapshot_id}
|
|
#"volume:get_snapshot": "rule:admin_or_owner"
|
|
|
|
# Update snapshot.
|
|
# PUT /snapshots/{snapshot_id}
|
|
#"volume:update_snapshot": "rule:admin_or_owner"
|
|
|
|
# Delete snapshot.
|
|
# DELETE /snapshots/{snapshot_id}
|
|
#"volume:delete_snapshot": "rule:admin_or_owner"
|
|
|
|
# Reset status of a snapshot.
|
|
# POST /snapshots/{snapshot_id}/action (os-reset_status)
|
|
#"volume_extension:snapshot_admin_actions:reset_status": "rule:admin_api"
|
|
|
|
# Update database fields of snapshot.
|
|
# POST /snapshots/{snapshot_id}/action (update_snapshot_status)
|
|
#"snapshot_extension:snapshot_actions:update_snapshot_status": ""
|
|
|
|
# Force delete a snapshot.
|
|
# POST /snapshots/{snapshot_id}/action (os-force_delete)
|
|
#"volume_extension:snapshot_admin_actions:force_delete": "rule:admin_api"
|
|
|
|
# List (in detail) of snapshots which are available to manage.
|
|
# GET /manageable_snapshots
|
|
# GET /manageable_snapshots/detail
|
|
#"snapshot_extension:list_manageable": "rule:admin_api"
|
|
|
|
# Manage an existing snapshot.
|
|
# POST /manageable_snapshots
|
|
#"snapshot_extension:snapshot_manage": "rule:admin_api"
|
|
|
|
# Stop managing a snapshot.
|
|
# POST /snapshots/{snapshot_id}/action (os-unmanage)
|
|
#"snapshot_extension:snapshot_unmanage": "rule:admin_api"
|
|
|
|
# List backups.
|
|
# GET /backups
|
|
# GET /backups/detail
|
|
#"backup:get_all": "rule:admin_or_owner"
|
|
|
|
# List backups or show backup with project attributes.
|
|
# GET /backups/{backup_id}
|
|
# GET /backups/detail
|
|
#"backup:backup_project_attribute": "rule:admin_api"
|
|
|
|
# Create backup.
|
|
# POST /backups
|
|
#"backup:create": ""
|
|
|
|
# Show backup.
|
|
# GET /backups/{backup_id}
|
|
#"backup:get": "rule:admin_or_owner"
|
|
|
|
# Update backup.
|
|
# PUT /backups/{backup_id}
|
|
#"backup:update": "rule:admin_or_owner"
|
|
|
|
# Delete backup.
|
|
# DELETE /backups/{backup_id}
|
|
#"backup:delete": "rule:admin_or_owner"
|
|
|
|
# Restore backup.
|
|
# POST /backups/{backup_id}/restore
|
|
#"backup:restore": "rule:admin_or_owner"
|
|
|
|
# Import backup.
|
|
# POST /backups/{backup_id}/import_record
|
|
#"backup:backup-import": "rule:admin_api"
|
|
|
|
# Export backup.
|
|
# POST /backups/{backup_id}/export_record
|
|
#"backup:export-import": "rule:admin_api"
|
|
|
|
# Reset status of a backup.
|
|
# POST /backups/{backup_id}/action (os-reset_status)
|
|
#"volume_extension:backup_admin_actions:reset_status": "rule:admin_api"
|
|
|
|
# Force delete a backup.
|
|
# POST /backups/{backup_id}/action (os-force_delete)
|
|
#"volume_extension:backup_admin_actions:force_delete": "rule:admin_api"
|
|
|
|
# List groups.
|
|
# GET /groups
|
|
# GET /groups/detail
|
|
#"group:get_all": "rule:admin_or_owner"
|
|
|
|
# Create group.
|
|
# POST /groups
|
|
#"group:create": ""
|
|
|
|
# Show group.
|
|
# GET /groups/{group_id}
|
|
#"group:get": "rule:admin_or_owner"
|
|
|
|
# Update group.
|
|
# PUT /groups/{group_id}
|
|
#"group:update": "rule:admin_or_owner"
|
|
|
|
# List groups or show group with project attributes.
|
|
# GET /groups/{group_id}
|
|
# GET /groups/detail
|
|
#"group:group_project_attribute": "rule:admin_api"
|
|
|
|
# Create, update or delete a group type.
|
|
# POST /group_types/
|
|
# PUT /group_types/{group_type_id}
|
|
# DELETE /group_types/{group_type_id}
|
|
#"group:group_types_manage": "rule:admin_api"
|
|
|
|
# Show group type with type specs attributes.
|
|
# GET /group_types/{group_type_id}
|
|
#"group:access_group_types_specs": "rule:admin_api"
|
|
|
|
# Create, show, update and delete group type spec.
|
|
# GET /group_types/{group_type_id}/group_specs/{g_spec_id}
|
|
# GET /group_types/{group_type_id}/group_specs
|
|
# POST /group_types/{group_type_id}/group_specs
|
|
# PUT /group_types/{group_type_id}/group_specs/{g_spec_id}
|
|
# DELETE /group_types/{group_type_id}/group_specs/{g_spec_id}
|
|
#"group:group_types_specs": "rule:admin_api"
|
|
|
|
# List group snapshots.
|
|
# GET /group_snapshots
|
|
# GET /group_snapshots/detail
|
|
#"group:get_all_group_snapshots": "rule:admin_or_owner"
|
|
|
|
# Create group snapshot.
|
|
# POST /group_snapshots
|
|
#"group:create_group_snapshot": ""
|
|
|
|
# Show group snapshot.
|
|
# GET /group_snapshots/{group_snapshot_id}
|
|
#"group:get_group_snapshot": "rule:admin_or_owner"
|
|
|
|
# Delete group snapshot.
|
|
# DELETE /group_snapshots/{group_snapshot_id}
|
|
#"group:delete_group_snapshot": "rule:admin_or_owner"
|
|
|
|
# Update group snapshot.
|
|
# PUT /group_snapshots/{group_snapshot_id}
|
|
#"group:update_group_snapshot": "rule:admin_or_owner"
|
|
|
|
# List group snapshots or show group snapshot with project attributes.
|
|
# GET /group_snapshots/{group_snapshot_id}
|
|
# GET /group_snapshots/detail
|
|
#"group:group_snapshot_project_attribute": "rule:admin_api"
|
|
|
|
# Reset status of group snapshot.
|
|
# POST /group_snapshots/{g_snapshot_id}/action (reset_status)
|
|
#"group:reset_group_snapshot_status": "rule:admin_api"
|
|
|
|
# Delete group.
|
|
# POST /groups/{group_id}/action (delete)
|
|
#"group:delete": "rule:admin_or_owner"
|
|
|
|
# Reset status of group.
|
|
# POST /groups/{group_id}/action (reset_status)
|
|
#"group:reset_status": "rule:admin_api"
|
|
|
|
# Enable replication.
|
|
# POST /groups/{group_id}/action (enable_replication)
|
|
#"group:enable_replication": "rule:admin_or_owner"
|
|
|
|
# Disable replication.
|
|
# POST /groups/{group_id}/action (disable_replication)
|
|
#"group:disable_replication": "rule:admin_or_owner"
|
|
|
|
# Fail over replication.
|
|
# POST /groups/{group_id}/action (failover_replication)
|
|
#"group:failover_replication": "rule:admin_or_owner"
|
|
|
|
# List failover replication.
|
|
# POST /groups/{group_id}/action (list_replication_targets)
|
|
#"group:list_replication_targets": "rule:admin_or_owner"
|
|
|
|
# List qos specs or list all associations.
|
|
# GET /qos-specs
|
|
# GET /qos-specs/{qos_id}/associations
|
|
#"volume_extension:qos_specs_manage:get_all": "rule:admin_api"
|
|
|
|
# Show qos specs.
|
|
# GET /qos-specs/{qos_id}
|
|
#"volume_extension:qos_specs_manage:get": "rule:admin_api"
|
|
|
|
# Create qos specs.
|
|
# POST /qos-specs
|
|
#"volume_extension:qos_specs_manage:create": "rule:admin_api"
|
|
|
|
# Update qos specs (including updating association).
|
|
# PUT /qos-specs/{qos_id}
|
|
# GET /qos-specs/{qos_id}/disassociate_all
|
|
# GET /qos-specs/{qos_id}/associate
|
|
# GET /qos-specs/{qos_id}/disassociate
|
|
#"volume_extension:qos_specs_manage:update": "rule:admin_api"
|
|
|
|
# delete qos specs or unset one specified qos key.
|
|
# DELETE /qos-specs/{qos_id}
|
|
# PUT /qos-specs/{qos_id}/delete_keys
|
|
#"volume_extension:qos_specs_manage:delete": "rule:admin_api"
|
|
|
|
# Show or update project quota class.
|
|
# GET /os-quota-class-sets/{project_id}
|
|
# PUT /os-quota-class-sets/{project_id}
|
|
#"volume_extension:quota_classes": "rule:admin_api"
|
|
|
|
# Show project quota (including usage and default).
|
|
# GET /os-quota-sets/{project_id}
|
|
# GET /os-quota-sets/{project_id}/default
|
|
# GET /os-quota-sets/{project_id}?usage=True
|
|
#"volume_extension:quotas:show": "rule:admin_or_owner"
|
|
|
|
# Update project quota.
|
|
# PUT /os-quota-sets/{project_id}
|
|
#"volume_extension:quotas:update": "rule:admin_api"
|
|
|
|
# Delete project quota.
|
|
# DELETE /os-quota-sets/{project_id}
|
|
#"volume_extension:quotas:delete": "rule:admin_api"
|
|
|
|
# Show backend capabilities.
|
|
# GET /capabilities/{host_name}
|
|
#"volume_extension:capabilities": "rule:admin_api"
|
|
|
|
# List all services.
|
|
# GET /os-services
|
|
#"volume_extension:services:index": "rule:admin_api"
|
|
|
|
# Update service, including failover_host, thaw, freeze, disable,
|
|
# enable, set-log and get-log actions.
|
|
# PUT /os-services/{action}
|
|
#"volume_extension:services:update": "rule:admin_api"
|
|
|
|
# Freeze a backend host.
|
|
# PUT /os-services/freeze
|
|
#"volume:freeze_host": "rule:admin_api"
|
|
|
|
# Thaw a backend host.
|
|
# PUT /os-services/thaw
|
|
#"volume:thaw_host": "rule:admin_api"
|
|
|
|
# Failover a backend host.
|
|
# PUT /os-services/failover_host
|
|
#"volume:failover_host": "rule:admin_api"
|
|
|
|
# List all backend pools.
|
|
# GET /scheduler-stats/get_pools
|
|
#"scheduler_extension:scheduler_stats:get_pools": "rule:admin_api"
|
|
|
|
# List, update or show hosts for a project.
|
|
# GET /os-hosts
|
|
# PUT /os-hosts/{host_name}
|
|
# GET /os-hosts/{host_id}
|
|
#"volume_extension:hosts": "rule:admin_api"
|
|
|
|
# Show limits with used limit attributes.
|
|
# GET /limits
|
|
#"limits_extension:used_limits": "rule:admin_or_owner"
|
|
|
|
# List (in detail) of volumes which are available to manage.
|
|
# GET /manageable_volumes
|
|
# GET /manageable_volumes/detail
|
|
#"volume_extension:list_manageable": "rule:admin_api"
|
|
|
|
# Manage existing volumes.
|
|
# POST /manageable_volumes
|
|
#"volume_extension:volume_manage": "rule:admin_api"
|
|
|
|
# Stop managing a volume.
|
|
# POST /volumes/{volume_id}/action (os-unmanage)
|
|
#"volume_extension:volume_unmanage": "rule:admin_api"
|
|
|
|
# Create, update and delete volume type.
|
|
# POST /types
|
|
# PUT /types
|
|
# DELETE /types
|
|
#"volume_extension:types_manage": "rule:admin_api"
|
|
|
|
# Get one specific volume type.
|
|
# GET /types/{type_id}
|
|
#"volume_extension:type_get": ""
|
|
|
|
# List volume types.
|
|
# GET /types/
|
|
#"volume_extension:type_get_all": ""
|
|
|
|
# Base policy for all volume type encryption type operations. This
|
|
# can be used to set the policies for a volume type's encryption type
|
|
# create, show, update, and delete actions in one place, or any of
|
|
# those may be set individually using the following policy targets for
|
|
# finer grained control.
|
|
# POST /types/{type_id}/encryption
|
|
# PUT /types/{type_id}/encryption/{encryption_id}
|
|
# GET /types/{type_id}/encryption
|
|
# GET /types/{type_id}/encryption/{key}
|
|
# DELETE /types/{type_id}/encryption/{encryption_id}
|
|
#"volume_extension:volume_type_encryption": "rule:admin_api"
|
|
|
|
# Create volume type encryption.
|
|
# POST /types/{type_id}/encryption
|
|
#"volume_extension:volume_type_encryption:create": "rule:volume_extension:volume_type_encryption"
|
|
|
|
# Show a volume type's encryption type, show an encryption specs item.
|
|
# GET /types/{type_id}/encryption
|
|
# GET /types/{type_id}/encryption/{key}
|
|
#"volume_extension:volume_type_encryption:get": "rule:volume_extension:volume_type_encryption"
|
|
|
|
# Update volume type encryption.
|
|
# PUT /types/{type_id}/encryption/{encryption_id}
|
|
#"volume_extension:volume_type_encryption:update": "rule:volume_extension:volume_type_encryption"
|
|
|
|
# Delete volume type encryption.
|
|
# DELETE /types/{type_id}/encryption/{encryption_id}
|
|
#"volume_extension:volume_type_encryption:delete": "rule:volume_extension:volume_type_encryption"
|
|
|
|
# List or show volume type with access type extra specs attribute.
|
|
# GET /types/{type_id}
|
|
# GET /types
|
|
#"volume_extension:access_types_extra_specs": "rule:admin_api"
|
|
|
|
# List or show volume type with access type qos specs id attribute.
|
|
# GET /types/{type_id}
|
|
# GET /types
|
|
#"volume_extension:access_types_qos_specs_id": "rule:admin_api"
|
|
|
|
# Volume type access related APIs.
|
|
# GET /types
|
|
# GET /types/detail
|
|
# GET /types/{type_id}
|
|
# POST /types
|
|
#"volume_extension:volume_type_access": "rule:admin_or_owner"
|
|
|
|
# Add volume type access for project.
|
|
# POST /types/{type_id}/action (addProjectAccess)
|
|
#"volume_extension:volume_type_access:addProjectAccess": "rule:admin_api"
|
|
|
|
# Remove volume type access for project.
|
|
# POST /types/{type_id}/action (removeProjectAccess)
|
|
#"volume_extension:volume_type_access:removeProjectAccess": "rule:admin_api"
|
|
|
|
# Extend a volume.
|
|
# POST /volumes/{volume_id}/action (os-extend)
|
|
#"volume:extend": "rule:admin_or_owner"
|
|
|
|
# Extend a attached volume.
|
|
# POST /volumes/{volume_id}/action (os-extend)
|
|
#"volume:extend_attached_volume": "rule:admin_or_owner"
|
|
|
|
# Revert a volume to a snapshot.
|
|
# POST /volumes/{volume_id}/action (revert)
|
|
#"volume:revert_to_snapshot": "rule:admin_or_owner"
|
|
|
|
# Reset status of a volume.
|
|
# POST /volumes/{volume_id}/action (os-reset_status)
|
|
#"volume_extension:volume_admin_actions:reset_status": "rule:admin_api"
|
|
|
|
# Retype a volume.
|
|
# POST /volumes/{volume_id}/action (os-retype)
|
|
#"volume:retype": "rule:admin_or_owner"
|
|
|
|
# Update a volume's readonly flag.
|
|
# POST /volumes/{volume_id}/action (os-update_readonly_flag)
|
|
#"volume:update_readonly_flag": "rule:admin_or_owner"
|
|
|
|
# Force delete a volume.
|
|
# POST /volumes/{volume_id}/action (os-force_delete)
|
|
#"volume_extension:volume_admin_actions:force_delete": "rule:admin_api"
|
|
|
|
# Upload a volume to image with public visibility.
|
|
# POST /volumes/{volume_id}/action (os-volume_upload_image)
|
|
#"volume_extension:volume_actions:upload_public": "rule:admin_api"
|
|
|
|
# Upload a volume to image.
|
|
# POST /volumes/{volume_id}/action (os-volume_upload_image)
|
|
#"volume_extension:volume_actions:upload_image": "rule:admin_or_owner"
|
|
|
|
# Force detach a volume.
|
|
# POST /volumes/{volume_id}/action (os-force_detach)
|
|
#"volume_extension:volume_admin_actions:force_detach": "rule:admin_api"
|
|
|
|
# migrate a volume to a specified host.
|
|
# POST /volumes/{volume_id}/action (os-migrate_volume)
|
|
#"volume_extension:volume_admin_actions:migrate_volume": "rule:admin_api"
|
|
|
|
# Complete a volume migration.
|
|
# POST /volumes/{volume_id}/action (os-migrate_volume_completion)
|
|
#"volume_extension:volume_admin_actions:migrate_volume_completion": "rule:admin_api"
|
|
|
|
# Initialize volume attachment.
|
|
# POST /volumes/{volume_id}/action (os-initialize_connection)
|
|
#"volume_extension:volume_actions:initialize_connection": "rule:admin_or_owner"
|
|
|
|
# Terminate volume attachment.
|
|
# POST /volumes/{volume_id}/action (os-terminate_connection)
|
|
#"volume_extension:volume_actions:terminate_connection": "rule:admin_or_owner"
|
|
|
|
# Roll back volume status to 'in-use'.
|
|
# POST /volumes/{volume_id}/action (os-roll_detaching)
|
|
#"volume_extension:volume_actions:roll_detaching": "rule:admin_or_owner"
|
|
|
|
# Mark volume as reserved.
|
|
# POST /volumes/{volume_id}/action (os-reserve)
|
|
#"volume_extension:volume_actions:reserve": "rule:admin_or_owner"
|
|
|
|
# Unmark volume as reserved.
|
|
# POST /volumes/{volume_id}/action (os-unreserve)
|
|
#"volume_extension:volume_actions:unreserve": "rule:admin_or_owner"
|
|
|
|
# Begin detach volumes.
|
|
# POST /volumes/{volume_id}/action (os-begin_detaching)
|
|
#"volume_extension:volume_actions:begin_detaching": "rule:admin_or_owner"
|
|
|
|
# Add attachment metadata.
|
|
# POST /volumes/{volume_id}/action (os-attach)
|
|
#"volume_extension:volume_actions:attach": "rule:admin_or_owner"
|
|
|
|
# Clear attachment metadata.
|
|
# POST /volumes/{volume_id}/action (os-detach)
|
|
#"volume_extension:volume_actions:detach": "rule:admin_or_owner"
|
|
|
|
# List volume transfer.
|
|
# GET /os-volume-transfer
|
|
# GET /os-volume-transfer/detail
|
|
# GET /volume_transfers
|
|
# GET /volume-transfers/detail
|
|
#"volume:get_all_transfers": "rule:admin_or_owner"
|
|
|
|
# Create a volume transfer.
|
|
# POST /os-volume-transfer
|
|
# POST /volume_transfers
|
|
#"volume:create_transfer": "rule:admin_or_owner"
|
|
|
|
# Show one specified volume transfer.
|
|
# GET /os-volume-transfer/{transfer_id}
|
|
# GET /volume-transfers/{transfer_id}
|
|
#"volume:get_transfer": "rule:admin_or_owner"
|
|
|
|
# Accept a volume transfer.
|
|
# POST /os-volume-transfer/{transfer_id}/accept
|
|
# POST /volume-transfers/{transfer_id}/accept
|
|
#"volume:accept_transfer": ""
|
|
|
|
# Delete volume transfer.
|
|
# DELETE /os-volume-transfer/{transfer_id}
|
|
# DELETE /volume-transfers/{transfer_id}
|
|
#"volume:delete_transfer": "rule:admin_or_owner"
|
|
|
|
# Show volume's metadata or one specified metadata with a given key.
|
|
# GET /volumes/{volume_id}/metadata
|
|
# GET /volumes/{volume_id}/metadata/{key}
|
|
#"volume:get_volume_metadata": "rule:admin_or_owner"
|
|
|
|
# Create volume metadata.
|
|
# POST /volumes/{volume_id}/metadata
|
|
#"volume:create_volume_metadata": "rule:admin_or_owner"
|
|
|
|
# Update volume's metadata or one specified metadata with a given key.
|
|
# PUT /volumes/{volume_id}/metadata
|
|
# PUT /volumes/{volume_id}/metadata/{key}
|
|
#"volume:update_volume_metadata": "rule:admin_or_owner"
|
|
|
|
# Delete volume's specified metadata with a given key.
|
|
# DELETE /volumes/{volume_id}/metadata/{key}
|
|
#"volume:delete_volume_metadata": "rule:admin_or_owner"
|
|
|
|
# Volume's image metadata related operation, create, delete, show and
|
|
# list.
|
|
# GET /volumes/detail
|
|
# GET /volumes/{volume_id}
|
|
# POST /volumes/{volume_id}/action (os-set_image_metadata)
|
|
# POST /volumes/{volume_id}/action (os-unset_image_metadata)
|
|
#"volume_extension:volume_image_metadata": "rule:admin_or_owner"
|
|
|
|
# Update volume admin metadata. It's used in `attach` and `os-
|
|
# update_readonly_flag` APIs
|
|
# POST /volumes/{volume_id}/action (os-update_readonly_flag)
|
|
# POST /volumes/{volume_id}/action (os-attach)
|
|
#"volume:update_volume_admin_metadata": "rule:admin_api"
|
|
|
|
# List type extra specs.
|
|
# GET /types/{type_id}/extra_specs
|
|
#"volume_extension:types_extra_specs:index": "rule:admin_api"
|
|
|
|
# Create type extra specs.
|
|
# POST /types/{type_id}/extra_specs
|
|
#"volume_extension:types_extra_specs:create": "rule:admin_api"
|
|
|
|
# Show one specified type extra specs.
|
|
# GET /types/{type_id}/extra_specs/{extra_spec_key}
|
|
#"volume_extension:types_extra_specs:show": "rule:admin_api"
|
|
|
|
# Update type extra specs.
|
|
# PUT /types/{type_id}/extra_specs/{extra_spec_key}
|
|
#"volume_extension:types_extra_specs:update": "rule:admin_api"
|
|
|
|
# Delete type extra specs.
|
|
# DELETE /types/{type_id}/extra_specs/{extra_spec_key}
|
|
#"volume_extension:types_extra_specs:delete": "rule:admin_api"
|
|
|
|
# Create volume.
|
|
# POST /volumes
|
|
#"volume:create": ""
|
|
|
|
# Create volume from image.
|
|
# POST /volumes
|
|
#"volume:create_from_image": ""
|
|
|
|
# Show volume.
|
|
# GET /volumes/{volume_id}
|
|
#"volume:get": "rule:admin_or_owner"
|
|
|
|
# List volumes or get summary of volumes.
|
|
# GET /volumes
|
|
# GET /volumes/detail
|
|
# GET /volumes/summary
|
|
#"volume:get_all": "rule:admin_or_owner"
|
|
|
|
# Update volume or update a volume's bootable status.
|
|
# PUT /volumes
|
|
# POST /volumes/{volume_id}/action (os-set_bootable)
|
|
#"volume:update": "rule:admin_or_owner"
|
|
|
|
# Delete volume.
|
|
# DELETE /volumes/{volume_id}
|
|
#"volume:delete": "rule:admin_or_owner"
|
|
|
|
# Force Delete a volume.
|
|
# DELETE /volumes/{volume_id}
|
|
#"volume:force_delete": "rule:admin_api"
|
|
|
|
# List or show volume with host attribute.
|
|
# GET /volumes/{volume_id}
|
|
# GET /volumes/detail
|
|
#"volume_extension:volume_host_attribute": "rule:admin_api"
|
|
|
|
# List or show volume with tenant attribute.
|
|
# GET /volumes/{volume_id}
|
|
# GET /volumes/detail
|
|
#"volume_extension:volume_tenant_attribute": "rule:admin_or_owner"
|
|
|
|
# List or show volume with migration status attribute.
|
|
# GET /volumes/{volume_id}
|
|
# GET /volumes/detail
|
|
#"volume_extension:volume_mig_status_attribute": "rule:admin_api"
|
|
|
|
# Show volume's encryption metadata.
|
|
# GET /volumes/{volume_id}/encryption
|
|
# GET /volumes/{volume_id}/encryption/{encryption_key}
|
|
#"volume_extension:volume_encryption_metadata": "rule:admin_or_owner"
|
|
|
|
# Create multiattach capable volume.
|
|
# POST /volumes
|
|
#"volume:multiattach": "rule:admin_or_owner"
|
|
|
|
# Set or update default volume type.
|
|
# PUT /default-types
|
|
# Intended scope(s): system
|
|
#"volume_extension:default_set_or_update": "rule:system_or_domain_or_project_admin"
|
|
|
|
# Get default types.
|
|
# GET /default-types/{project-id}
|
|
# Intended scope(s): system
|
|
#"volume_extension:default_get": "rule:system_or_domain_or_project_admin"
|
|
|
|
# Get all default types. WARNING: Changing this might open up too much
|
|
# information regarding cloud deployment.
|
|
# GET /default-types/
|
|
# Intended scope(s): system
|
|
#"volume_extension:default_get_all": "role:admin and system_scope:all"
|
|
|
|
# Unset default type.
|
|
# DELETE /default-types/{project-id}
|
|
# Intended scope(s): system
|
|
#"volume_extension:default_unset": "rule:system_or_domain_or_project_admin"
|
|
|