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