From 05ab27bff927aed6aa5c1cfd486546ead90d2cd3 Mon Sep 17 00:00:00 2001 From: Pete Birley Date: Sat, 26 Aug 2017 17:25:17 -0500 Subject: [PATCH] Nova: Make policy fully configurable via helm values This PS moves the nova policy.yaml to be fully driven by gotpl, allowing full configuration without editing the template. Change-Id: I0af8693df8b54486e2ba3dbe9eaca8d718d7d022 --- nova/templates/configmap-etc.yaml | 2 +- nova/templates/etc/_policy.yaml.tpl | 514 ---------------------------- nova/values.yaml | 259 +++++++++++++- 3 files changed, 258 insertions(+), 517 deletions(-) delete mode 100644 nova/templates/etc/_policy.yaml.tpl diff --git a/nova/templates/configmap-etc.yaml b/nova/templates/configmap-etc.yaml index 21623a7f78..d11dd21c91 100644 --- a/nova/templates/configmap-etc.yaml +++ b/nova/templates/configmap-etc.yaml @@ -105,7 +105,7 @@ data: api-paste.ini: |+ {{- tuple .Values.conf.paste "etc/_api-paste.ini.tpl" . | include "helm-toolkit.utils.configmap_templater" }} policy.yaml: |+ -{{- tuple .Values.conf.policy "etc/_policy.yaml.tpl" . | include "helm-toolkit.utils.configmap_templater" }} +{{ toYaml .Values.conf.policy | indent 4 }} libvirtd.conf: |+ {{- tuple .Values.conf.libvirtd "etc/_libvirtd.conf.tpl" . | include "helm-toolkit.utils.configmap_templater" }} qemu.conf: |+ diff --git a/nova/templates/etc/_policy.yaml.tpl b/nova/templates/etc/_policy.yaml.tpl deleted file mode 100644 index 024ae41da6..0000000000 --- a/nova/templates/etc/_policy.yaml.tpl +++ /dev/null @@ -1,514 +0,0 @@ -# -"os_compute_api:os-admin-actions:discoverable": "@" -# -"os_compute_api:os-admin-actions:reset_state": "rule:admin_api" -# -"os_compute_api:os-admin-actions:inject_network_info": "rule:admin_api" -# -"os_compute_api:os-admin-actions": "rule:admin_api" -# -"os_compute_api:os-admin-actions:reset_network": "rule:admin_api" -# -"os_compute_api:os-admin-password:discoverable": "@" -# -"os_compute_api:os-admin-password": "rule:admin_or_owner" -# -"os_compute_api:os-agents": "rule:admin_api" -# -"os_compute_api:os-agents:discoverable": "@" -# -"os_compute_api:os-aggregates:set_metadata": "rule:admin_api" -# -"os_compute_api:os-aggregates:add_host": "rule:admin_api" -# -"os_compute_api:os-aggregates:discoverable": "@" -# -"os_compute_api:os-aggregates:create": "rule:admin_api" -# -"os_compute_api:os-aggregates:remove_host": "rule:admin_api" -# -"os_compute_api:os-aggregates:update": "rule:admin_api" -# -"os_compute_api:os-aggregates:index": "rule:admin_api" -# -"os_compute_api:os-aggregates:delete": "rule:admin_api" -# -"os_compute_api:os-aggregates:show": "rule:admin_api" -# -"os_compute_api:os-assisted-volume-snapshots:create": "rule:admin_api" -# -"os_compute_api:os-assisted-volume-snapshots:delete": "rule:admin_api" -# -"os_compute_api:os-assisted-volume-snapshots:discoverable": "@" -# -"os_compute_api:os-attach-interfaces": "rule:admin_or_owner" -# -"os_compute_api:os-attach-interfaces:discoverable": "@" -# Controls who can attach an interface to an instance -"os_compute_api:os-attach-interfaces:create": "rule:admin_or_owner" -# Controls who can detach an interface from an instance -"os_compute_api:os-attach-interfaces:delete": "rule:admin_or_owner" -# -"os_compute_api:os-availability-zone:list": "rule:admin_or_owner" -# -"os_compute_api:os-availability-zone:discoverable": "@" -# -"os_compute_api:os-availability-zone:detail": "rule:admin_api" -# -"os_compute_api:os-baremetal-nodes:discoverable": "@" -# -"os_compute_api:os-baremetal-nodes": "rule:admin_api" -# -"context_is_admin": "role:admin" -# -"admin_or_owner": "is_admin:True or project_id:%(project_id)s" -# -"admin_api": "is_admin:True" -# -"network:attach_external_network": "is_admin:True" -# -"os_compute_api:os-block-device-mapping:discoverable": "@" -# -"os_compute_api:os-block-device-mapping-v1:discoverable": "@" -# -"os_compute_api:os-cells:discoverable": "@" -# -"os_compute_api:os-cells:update": "rule:admin_api" -# -"os_compute_api:os-cells:create": "rule:admin_api" -# -"os_compute_api:os-cells": "rule:admin_api" -# -"os_compute_api:os-cells:sync_instances": "rule:admin_api" -# -"os_compute_api:os-cells:delete": "rule:admin_api" -# -"cells_scheduler_filter:DifferentCellFilter": "is_admin:True" -# -"cells_scheduler_filter:TargetCellFilter": "is_admin:True" -# -"os_compute_api:os-certificates:discoverable": "@" -# -"os_compute_api:os-certificates:create": "rule:admin_or_owner" -# -"os_compute_api:os-certificates:show": "rule:admin_or_owner" -# -"os_compute_api:os-cloudpipe": "rule:admin_api" -# -"os_compute_api:os-cloudpipe:discoverable": "@" -# -"os_compute_api:os-config-drive:discoverable": "@" -# -"os_compute_api:os-config-drive": "rule:admin_or_owner" -# -"os_compute_api:os-console-auth-tokens:discoverable": "@" -# -"os_compute_api:os-console-auth-tokens": "rule:admin_api" -# -"os_compute_api:os-console-output:discoverable": "@" -# -"os_compute_api:os-console-output": "rule:admin_or_owner" -# -"os_compute_api:os-consoles:create": "rule:admin_or_owner" -# -"os_compute_api:os-consoles:show": "rule:admin_or_owner" -# -"os_compute_api:os-consoles:delete": "rule:admin_or_owner" -# -"os_compute_api:os-consoles:discoverable": "@" -# -"os_compute_api:os-consoles:index": "rule:admin_or_owner" -# -"os_compute_api:os-create-backup:discoverable": "@" -# -"os_compute_api:os-create-backup": "rule:admin_or_owner" -# -"os_compute_api:os-deferred-delete:discoverable": "@" -# -"os_compute_api:os-deferred-delete": "rule:admin_or_owner" -# -"os_compute_api:os-evacuate:discoverable": "@" -# -"os_compute_api:os-evacuate": "rule:admin_api" -# -"os_compute_api:os-extended-availability-zone": "rule:admin_or_owner" -# -"os_compute_api:os-extended-availability-zone:discoverable": "@" -# -"os_compute_api:os-extended-server-attributes": "rule:admin_api" -# -"os_compute_api:os-extended-server-attributes:discoverable": "@" -# -"os_compute_api:os-extended-status:discoverable": "@" -# -"os_compute_api:os-extended-status": "rule:admin_or_owner" -# -"os_compute_api:os-extended-volumes": "rule:admin_or_owner" -# -"os_compute_api:os-extended-volumes:discoverable": "@" -# -"os_compute_api:extension_info:discoverable": "@" -# -"os_compute_api:extensions": "rule:admin_or_owner" -# -"os_compute_api:extensions:discoverable": "@" -# -"os_compute_api:os-fixed-ips:discoverable": "@" -# -"os_compute_api:os-fixed-ips": "rule:admin_api" -# -"os_compute_api:os-flavor-access:add_tenant_access": "rule:admin_api" -# -"os_compute_api:os-flavor-access:discoverable": "@" -# -"os_compute_api:os-flavor-access:remove_tenant_access": "rule:admin_api" -# -"os_compute_api:os-flavor-access": "rule:admin_or_owner" -# -"os_compute_api:os-flavor-extra-specs:show": "rule:admin_or_owner" -# -"os_compute_api:os-flavor-extra-specs:create": "rule:admin_api" -# -"os_compute_api:os-flavor-extra-specs:discoverable": "@" -# -"os_compute_api:os-flavor-extra-specs:update": "rule:admin_api" -# -"os_compute_api:os-flavor-extra-specs:delete": "rule:admin_api" -# -"os_compute_api:os-flavor-extra-specs:index": "rule:admin_or_owner" -# -"os_compute_api:os-flavor-manage": "rule:admin_api" -# -"os_compute_api:os-flavor-manage:discoverable": "@" -# -"os_compute_api:os-flavor-rxtx": "rule:admin_or_owner" -# -"os_compute_api:os-flavor-rxtx:discoverable": "@" -# -"os_compute_api:flavors:discoverable": "@" -# -"os_compute_api:flavors": "rule:admin_or_owner" -# -"os_compute_api:os-floating-ip-dns": "rule:admin_or_owner" -# -"os_compute_api:os-floating-ip-dns:domain:update": "rule:admin_api" -# -"os_compute_api:os-floating-ip-dns:discoverable": "@" -# -"os_compute_api:os-floating-ip-dns:domain:delete": "rule:admin_api" -# -"os_compute_api:os-floating-ip-pools:discoverable": "@" -# -"os_compute_api:os-floating-ip-pools": "rule:admin_or_owner" -# -"os_compute_api:os-floating-ips": "rule:admin_or_owner" -# -"os_compute_api:os-floating-ips:discoverable": "@" -# -"os_compute_api:os-floating-ips-bulk:discoverable": "@" -# -"os_compute_api:os-floating-ips-bulk": "rule:admin_api" -# -"os_compute_api:os-fping:all_tenants": "rule:admin_api" -# -"os_compute_api:os-fping:discoverable": "@" -# -"os_compute_api:os-fping": "rule:admin_or_owner" -# -"os_compute_api:os-hide-server-addresses:discoverable": "@" -# -"os_compute_api:os-hide-server-addresses": "is_admin:False" -# -"os_compute_api:os-hosts:discoverable": "@" -# -"os_compute_api:os-hosts": "rule:admin_api" -# -"os_compute_api:os-hypervisors:discoverable": "@" -# -"os_compute_api:os-hypervisors": "rule:admin_api" -# -"os_compute_api:image-metadata:discoverable": "@" -# -"os_compute_api:image-size:discoverable": "@" -# -"os_compute_api:image-size": "rule:admin_or_owner" -# -"os_compute_api:images:discoverable": "@" -# -"os_compute_api:os-instance-actions:events": "rule:admin_api" -# -"os_compute_api:os-instance-actions": "rule:admin_or_owner" -# -"os_compute_api:os-instance-actions:discoverable": "@" -# -"os_compute_api:os-instance-usage-audit-log": "rule:admin_api" -# -"os_compute_api:os-instance-usage-audit-log:discoverable": "@" -# -"os_compute_api:ips:discoverable": "@" -# -"os_compute_api:ips:show": "rule:admin_or_owner" -# -"os_compute_api:ips:index": "rule:admin_or_owner" -# -"os_compute_api:os-keypairs:discoverable": "@" -# -"os_compute_api:os-keypairs:index": "rule:admin_api or user_id:%(user_id)s" -# -"os_compute_api:os-keypairs:create": "rule:admin_api or user_id:%(user_id)s" -# -"os_compute_api:os-keypairs:delete": "rule:admin_api or user_id:%(user_id)s" -# -"os_compute_api:os-keypairs:show": "rule:admin_api or user_id:%(user_id)s" -# -"os_compute_api:os-keypairs": "rule:admin_or_owner" -# -"os_compute_api:limits:discoverable": "@" -# -"os_compute_api:limits": "rule:admin_or_owner" -# -"os_compute_api:os-lock-server:discoverable": "@" -# -"os_compute_api:os-lock-server:lock": "rule:admin_or_owner" -# -"os_compute_api:os-lock-server:unlock:unlock_override": "rule:admin_api" -# -"os_compute_api:os-lock-server:unlock": "rule:admin_or_owner" -# -"os_compute_api:os-migrate-server:migrate": "rule:admin_api" -# -"os_compute_api:os-migrate-server:discoverable": "@" -# -"os_compute_api:os-migrate-server:migrate_live": "rule:admin_api" -# -"os_compute_api:os-migrations:index": "rule:admin_api" -# -"os_compute_api:os-migrations:discoverable": "@" -# -"os_compute_api:os-multinic": "rule:admin_or_owner" -# -"os_compute_api:os-multinic:discoverable": "@" -# -"os_compute_api:os-multiple-create:discoverable": "@" -# -"os_compute_api:os-networks:discoverable": "@" -# -"os_compute_api:os-networks": "rule:admin_api" -# -"os_compute_api:os-networks:view": "rule:admin_or_owner" -# -"os_compute_api:os-networks-associate": "rule:admin_api" -# -"os_compute_api:os-networks-associate:discoverable": "@" -# -"os_compute_api:os-pause-server:unpause": "rule:admin_or_owner" -# -"os_compute_api:os-pause-server:discoverable": "@" -# -"os_compute_api:os-pause-server:pause": "rule:admin_or_owner" -# -"os_compute_api:os-pci:index": "rule:admin_api" -# -"os_compute_api:os-pci:detail": "rule:admin_api" -# -"os_compute_api:os-pci:pci_servers": "rule:admin_or_owner" -# -"os_compute_api:os-pci:show": "rule:admin_api" -# -"os_compute_api:os-pci:discoverable": "@" -# -"os_compute_api:os-quota-class-sets:show": "is_admin:True or quota_class:%(quota_class)s" -# -"os_compute_api:os-quota-class-sets:discoverable": "@" -# -"os_compute_api:os-quota-class-sets:update": "rule:admin_api" -# -"os_compute_api:os-quota-sets:update": "rule:admin_api" -# -"os_compute_api:os-quota-sets:defaults": "@" -# -"os_compute_api:os-quota-sets:show": "rule:admin_or_owner" -# -"os_compute_api:os-quota-sets:delete": "rule:admin_api" -# -"os_compute_api:os-quota-sets:discoverable": "@" -# -"os_compute_api:os-quota-sets:detail": "rule:admin_api" -# -"os_compute_api:os-remote-consoles": "rule:admin_or_owner" -# -"os_compute_api:os-remote-consoles:discoverable": "@" -# -"os_compute_api:os-rescue:discoverable": "@" -# -"os_compute_api:os-rescue": "rule:admin_or_owner" -# -"os_compute_api:os-scheduler-hints:discoverable": "@" -# -"os_compute_api:os-security-group-default-rules:discoverable": "@" -# -"os_compute_api:os-security-group-default-rules": "rule:admin_api" -# -"os_compute_api:os-security-groups": "rule:admin_or_owner" -# -"os_compute_api:os-security-groups:discoverable": "@" -# -"os_compute_api:os-server-diagnostics": "rule:admin_api" -# -"os_compute_api:os-server-diagnostics:discoverable": "@" -# -"os_compute_api:os-server-external-events:create": "rule:admin_api" -# -"os_compute_api:os-server-external-events:discoverable": "@" -# -"os_compute_api:os-server-groups:discoverable": "@" -# -"os_compute_api:os-server-groups": "rule:admin_or_owner" -# -"os_compute_api:server-metadata:index": "rule:admin_or_owner" -# -"os_compute_api:server-metadata:show": "rule:admin_or_owner" -# -"os_compute_api:server-metadata:create": "rule:admin_or_owner" -# -"os_compute_api:server-metadata:discoverable": "@" -# -"os_compute_api:server-metadata:update_all": "rule:admin_or_owner" -# -"os_compute_api:server-metadata:delete": "rule:admin_or_owner" -# -"os_compute_api:server-metadata:update": "rule:admin_or_owner" -# -"os_compute_api:os-server-password": "rule:admin_or_owner" -# -"os_compute_api:os-server-password:discoverable": "@" -# -"os_compute_api:os-server-tags:delete_all": "@" -# -"os_compute_api:os-server-tags:index": "@" -# -"os_compute_api:os-server-tags:update_all": "@" -# -"os_compute_api:os-server-tags:delete": "@" -# -"os_compute_api:os-server-tags:update": "@" -# -"os_compute_api:os-server-tags:show": "@" -# -"os_compute_api:os-server-tags:discoverable": "@" -# -"os_compute_api:os-server-usage": "rule:admin_or_owner" -# -"os_compute_api:os-server-usage:discoverable": "@" -# -"os_compute_api:servers:index": "rule:admin_or_owner" -# -"os_compute_api:servers:detail": "rule:admin_or_owner" -# -"os_compute_api:servers:detail:get_all_tenants": "rule:admin_api" -# -"os_compute_api:servers:index:get_all_tenants": "rule:admin_api" -# -"os_compute_api:servers:show": "rule:admin_or_owner" -# -"os_compute_api:servers:show:host_status": "rule:admin_api" -# -"os_compute_api:servers:create": "rule:admin_or_owner" -# -"os_compute_api:servers:create:forced_host": "rule:admin_api" -# -"os_compute_api:servers:create:attach_volume": "rule:admin_or_owner" -# -"os_compute_api:servers:create:attach_network": "rule:admin_or_owner" -# -"os_compute_api:servers:delete": "rule:admin_or_owner" -# -"os_compute_api:servers:update": "rule:admin_or_owner" -# -"os_compute_api:servers:confirm_resize": "rule:admin_or_owner" -# -"os_compute_api:servers:revert_resize": "rule:admin_or_owner" -# -"os_compute_api:servers:reboot": "rule:admin_or_owner" -# -"os_compute_api:servers:resize": "rule:admin_or_owner" -# -"os_compute_api:servers:rebuild": "rule:admin_or_owner" -# -"os_compute_api:servers:create_image": "rule:admin_or_owner" -# -"os_compute_api:servers:create_image:allow_volume_backed": "rule:admin_or_owner" -# -"os_compute_api:servers:start": "rule:admin_or_owner" -# -"os_compute_api:servers:stop": "rule:admin_or_owner" -# -"os_compute_api:servers:trigger_crash_dump": "rule:admin_or_owner" -# -"os_compute_api:servers:discoverable": "@" -# -"os_compute_api:servers:migrations:show": "rule:admin_api" -# -"os_compute_api:servers:migrations:force_complete": "rule:admin_api" -# -"os_compute_api:servers:migrations:delete": "rule:admin_api" -# -"os_compute_api:servers:migrations:index": "rule:admin_api" -# -"os_compute_api:server-migrations:discoverable": "@" -# -"os_compute_api:os-services": "rule:admin_api" -# -"os_compute_api:os-services:discoverable": "@" -# -"os_compute_api:os-shelve:shelve": "rule:admin_or_owner" -# -"os_compute_api:os-shelve:unshelve": "rule:admin_or_owner" -# -"os_compute_api:os-shelve:shelve_offload": "rule:admin_api" -# -"os_compute_api:os-shelve:discoverable": "@" -# -"os_compute_api:os-simple-tenant-usage:show": "rule:admin_or_owner" -# -"os_compute_api:os-simple-tenant-usage:list": "rule:admin_api" -# -"os_compute_api:os-simple-tenant-usage:discoverable": "@" -# -"os_compute_api:os-suspend-server:resume": "rule:admin_or_owner" -# -"os_compute_api:os-suspend-server:suspend": "rule:admin_or_owner" -# -"os_compute_api:os-suspend-server:discoverable": "@" -# -"os_compute_api:os-tenant-networks": "rule:admin_or_owner" -# -"os_compute_api:os-tenant-networks:discoverable": "@" -# -"os_compute_api:os-used-limits:discoverable": "@" -# -"os_compute_api:os-used-limits": "rule:admin_api" -# -"os_compute_api:os-user-data:discoverable": "@" -# -"os_compute_api:versions:discoverable": "@" -# -"os_compute_api:os-virtual-interfaces:discoverable": "@" -# -"os_compute_api:os-virtual-interfaces": "rule:admin_or_owner" -# -"os_compute_api:os-volumes:discoverable": "@" -# -"os_compute_api:os-volumes": "rule:admin_or_owner" -# -"os_compute_api:os-volumes-attachments:index": "rule:admin_or_owner" -# -"os_compute_api:os-volumes-attachments:create": "rule:admin_or_owner" -# -"os_compute_api:os-volumes-attachments:show": "rule:admin_or_owner" -# -"os_compute_api:os-volumes-attachments:discoverable": "@" -# -"os_compute_api:os-volumes-attachments:update": "rule:admin_api" -# -"os_compute_api:os-volumes-attachments:delete": "rule:admin_or_owner" diff --git a/nova/values.yaml b/nova/values.yaml index 22339d44a9..274cd57990 100644 --- a/nova/values.yaml +++ b/nova/values.yaml @@ -273,8 +273,263 @@ conf: override: append: policy: - override: - append: + os_compute_api:os-admin-actions:discoverable: "@" + os_compute_api:os-admin-actions:reset_state: rule:admin_api + os_compute_api:os-admin-actions:inject_network_info: rule:admin_api + os_compute_api:os-admin-actions: rule:admin_api + os_compute_api:os-admin-actions:reset_network: rule:admin_api + os_compute_api:os-admin-password:discoverable: "@" + os_compute_api:os-admin-password: rule:admin_or_owner + os_compute_api:os-agents: rule:admin_api + os_compute_api:os-agents:discoverable: "@" + os_compute_api:os-aggregates:set_metadata: rule:admin_api + os_compute_api:os-aggregates:add_host: rule:admin_api + os_compute_api:os-aggregates:discoverable: "@" + os_compute_api:os-aggregates:create: rule:admin_api + os_compute_api:os-aggregates:remove_host: rule:admin_api + os_compute_api:os-aggregates:update: rule:admin_api + os_compute_api:os-aggregates:index: rule:admin_api + os_compute_api:os-aggregates:delete: rule:admin_api + os_compute_api:os-aggregates:show: rule:admin_api + os_compute_api:os-assisted-volume-snapshots:create: rule:admin_api + os_compute_api:os-assisted-volume-snapshots:delete: rule:admin_api + os_compute_api:os-assisted-volume-snapshots:discoverable: "@" + os_compute_api:os-attach-interfaces: rule:admin_or_owner + os_compute_api:os-attach-interfaces:discoverable: "@" + os_compute_api:os-attach-interfaces:create: rule:admin_or_owner + os_compute_api:os-attach-interfaces:delete: rule:admin_or_owner + os_compute_api:os-availability-zone:list: rule:admin_or_owner + os_compute_api:os-availability-zone:discoverable: "@" + os_compute_api:os-availability-zone:detail: rule:admin_api + os_compute_api:os-baremetal-nodes:discoverable: "@" + os_compute_api:os-baremetal-nodes: rule:admin_api + context_is_admin: role:admin + admin_or_owner: is_admin:True or project_id:%(project_id)s + admin_api: is_admin:True + network:attach_external_network: is_admin:True + os_compute_api:os-block-device-mapping:discoverable: "@" + os_compute_api:os-block-device-mapping-v1:discoverable: "@" + os_compute_api:os-cells:discoverable: "@" + os_compute_api:os-cells:update: rule:admin_api + os_compute_api:os-cells:create: rule:admin_api + os_compute_api:os-cells: rule:admin_api + os_compute_api:os-cells:sync_instances: rule:admin_api + os_compute_api:os-cells:delete: rule:admin_api + cells_scheduler_filter:DifferentCellFilter: is_admin:True + cells_scheduler_filter:TargetCellFilter: is_admin:True + os_compute_api:os-certificates:discoverable: "@" + os_compute_api:os-certificates:create: rule:admin_or_owner + os_compute_api:os-certificates:show: rule:admin_or_owner + os_compute_api:os-cloudpipe: rule:admin_api + os_compute_api:os-cloudpipe:discoverable: "@" + os_compute_api:os-config-drive:discoverable: "@" + os_compute_api:os-config-drive: rule:admin_or_owner + os_compute_api:os-console-auth-tokens:discoverable: "@" + os_compute_api:os-console-auth-tokens: rule:admin_api + os_compute_api:os-console-output:discoverable: "@" + os_compute_api:os-console-output: rule:admin_or_owner + os_compute_api:os-consoles:create: rule:admin_or_owner + os_compute_api:os-consoles:show: rule:admin_or_owner + os_compute_api:os-consoles:delete: rule:admin_or_owner + os_compute_api:os-consoles:discoverable: "@" + os_compute_api:os-consoles:index: rule:admin_or_owner + os_compute_api:os-create-backup:discoverable: "@" + os_compute_api:os-create-backup: rule:admin_or_owner + os_compute_api:os-deferred-delete:discoverable: "@" + os_compute_api:os-deferred-delete: rule:admin_or_owner + os_compute_api:os-evacuate:discoverable: "@" + os_compute_api:os-evacuate: rule:admin_api + os_compute_api:os-extended-availability-zone: rule:admin_or_owner + os_compute_api:os-extended-availability-zone:discoverable: "@" + os_compute_api:os-extended-server-attributes: rule:admin_api + os_compute_api:os-extended-server-attributes:discoverable: "@" + os_compute_api:os-extended-status:discoverable: "@" + os_compute_api:os-extended-status: rule:admin_or_owner + os_compute_api:os-extended-volumes: rule:admin_or_owner + os_compute_api:os-extended-volumes:discoverable: "@" + os_compute_api:extension_info:discoverable: "@" + os_compute_api:extensions: rule:admin_or_owner + os_compute_api:extensions:discoverable: "@" + os_compute_api:os-fixed-ips:discoverable: "@" + os_compute_api:os-fixed-ips: rule:admin_api + os_compute_api:os-flavor-access:add_tenant_access: rule:admin_api + os_compute_api:os-flavor-access:discoverable: "@" + os_compute_api:os-flavor-access:remove_tenant_access: rule:admin_api + os_compute_api:os-flavor-access: rule:admin_or_owner + os_compute_api:os-flavor-extra-specs:show: rule:admin_or_owner + os_compute_api:os-flavor-extra-specs:create: rule:admin_api + os_compute_api:os-flavor-extra-specs:discoverable: "@" + os_compute_api:os-flavor-extra-specs:update: rule:admin_api + os_compute_api:os-flavor-extra-specs:delete: rule:admin_api + os_compute_api:os-flavor-extra-specs:index: rule:admin_or_owner + os_compute_api:os-flavor-manage: rule:admin_api + os_compute_api:os-flavor-manage:discoverable: "@" + os_compute_api:os-flavor-rxtx: rule:admin_or_owner + os_compute_api:os-flavor-rxtx:discoverable: "@" + os_compute_api:flavors:discoverable: "@" + os_compute_api:flavors: rule:admin_or_owner + os_compute_api:os-floating-ip-dns: rule:admin_or_owner + os_compute_api:os-floating-ip-dns:domain:update: rule:admin_api + os_compute_api:os-floating-ip-dns:discoverable: "@" + os_compute_api:os-floating-ip-dns:domain:delete: rule:admin_api + os_compute_api:os-floating-ip-pools:discoverable: "@" + os_compute_api:os-floating-ip-pools: rule:admin_or_owner + os_compute_api:os-floating-ips: rule:admin_or_owner + os_compute_api:os-floating-ips:discoverable: "@" + os_compute_api:os-floating-ips-bulk:discoverable: "@" + os_compute_api:os-floating-ips-bulk: rule:admin_api + os_compute_api:os-fping:all_tenants: rule:admin_api + os_compute_api:os-fping:discoverable: "@" + os_compute_api:os-fping: rule:admin_or_owner + os_compute_api:os-hide-server-addresses:discoverable: "@" + os_compute_api:os-hide-server-addresses: is_admin:False + os_compute_api:os-hosts:discoverable: "@" + os_compute_api:os-hosts: rule:admin_api + os_compute_api:os-hypervisors:discoverable: "@" + os_compute_api:os-hypervisors: rule:admin_api + os_compute_api:image-metadata:discoverable: "@" + os_compute_api:image-size:discoverable: "@" + os_compute_api:image-size: rule:admin_or_owner + os_compute_api:images:discoverable: "@" + os_compute_api:os-instance-actions:events: rule:admin_api + os_compute_api:os-instance-actions: rule:admin_or_owner + os_compute_api:os-instance-actions:discoverable: "@" + os_compute_api:os-instance-usage-audit-log: rule:admin_api + os_compute_api:os-instance-usage-audit-log:discoverable: "@" + os_compute_api:ips:discoverable: "@" + os_compute_api:ips:show: rule:admin_or_owner + os_compute_api:ips:index: rule:admin_or_owner + os_compute_api:os-keypairs:discoverable: "@" + os_compute_api:os-keypairs:index: rule:admin_api or user_id:%(user_id)s + os_compute_api:os-keypairs:create: rule:admin_api or user_id:%(user_id)s + os_compute_api:os-keypairs:delete: rule:admin_api or user_id:%(user_id)s + os_compute_api:os-keypairs:show: rule:admin_api or user_id:%(user_id)s + os_compute_api:os-keypairs: rule:admin_or_owner + os_compute_api:limits:discoverable: "@" + os_compute_api:limits: rule:admin_or_owner + os_compute_api:os-lock-server:discoverable: "@" + os_compute_api:os-lock-server:lock: rule:admin_or_owner + os_compute_api:os-lock-server:unlock:unlock_override: rule:admin_api + os_compute_api:os-lock-server:unlock: rule:admin_or_owner + os_compute_api:os-migrate-server:migrate: rule:admin_api + os_compute_api:os-migrate-server:discoverable: "@" + os_compute_api:os-migrate-server:migrate_live: rule:admin_api + os_compute_api:os-migrations:index: rule:admin_api + os_compute_api:os-migrations:discoverable: "@" + os_compute_api:os-multinic: rule:admin_or_owner + os_compute_api:os-multinic:discoverable: "@" + os_compute_api:os-multiple-create:discoverable: "@" + os_compute_api:os-networks:discoverable: "@" + os_compute_api:os-networks: rule:admin_api + os_compute_api:os-networks:view: rule:admin_or_owner + os_compute_api:os-networks-associate: rule:admin_api + os_compute_api:os-networks-associate:discoverable: "@" + os_compute_api:os-pause-server:unpause: rule:admin_or_owner + os_compute_api:os-pause-server:discoverable: "@" + os_compute_api:os-pause-server:pause: rule:admin_or_owner + os_compute_api:os-pci:index: rule:admin_api + os_compute_api:os-pci:detail: rule:admin_api + os_compute_api:os-pci:pci_servers: rule:admin_or_owner + os_compute_api:os-pci:show: rule:admin_api + os_compute_api:os-pci:discoverable: "@" + os_compute_api:os-quota-class-sets:show: is_admin:True or quota_class:%(quota_class)s + os_compute_api:os-quota-class-sets:discoverable: "@" + os_compute_api:os-quota-class-sets:update: rule:admin_api + os_compute_api:os-quota-sets:update: rule:admin_api + os_compute_api:os-quota-sets:defaults: "@" + os_compute_api:os-quota-sets:show: rule:admin_or_owner + os_compute_api:os-quota-sets:delete: rule:admin_api + os_compute_api:os-quota-sets:discoverable: "@" + os_compute_api:os-quota-sets:detail: rule:admin_api + os_compute_api:os-remote-consoles: rule:admin_or_owner + os_compute_api:os-remote-consoles:discoverable: "@" + os_compute_api:os-rescue:discoverable: "@" + os_compute_api:os-rescue: rule:admin_or_owner + os_compute_api:os-scheduler-hints:discoverable: "@" + os_compute_api:os-security-group-default-rules:discoverable: "@" + os_compute_api:os-security-group-default-rules: rule:admin_api + os_compute_api:os-security-groups: rule:admin_or_owner + os_compute_api:os-security-groups:discoverable: "@" + os_compute_api:os-server-diagnostics: rule:admin_api + os_compute_api:os-server-diagnostics:discoverable: "@" + os_compute_api:os-server-external-events:create: rule:admin_api + os_compute_api:os-server-external-events:discoverable: "@" + os_compute_api:os-server-groups:discoverable: "@" + os_compute_api:os-server-groups: rule:admin_or_owner + os_compute_api:server-metadata:index: rule:admin_or_owner + os_compute_api:server-metadata:show: rule:admin_or_owner + os_compute_api:server-metadata:create: rule:admin_or_owner + os_compute_api:server-metadata:discoverable: "@" + os_compute_api:server-metadata:update_all: rule:admin_or_owner + os_compute_api:server-metadata:delete: rule:admin_or_owner + os_compute_api:server-metadata:update: rule:admin_or_owner + os_compute_api:os-server-password: rule:admin_or_owner + os_compute_api:os-server-password:discoverable: "@" + os_compute_api:os-server-tags:delete_all: "@" + os_compute_api:os-server-tags:index: "@" + os_compute_api:os-server-tags:update_all: "@" + os_compute_api:os-server-tags:delete: "@" + os_compute_api:os-server-tags:update: "@" + os_compute_api:os-server-tags:show: "@" + os_compute_api:os-server-tags:discoverable: "@" + os_compute_api:os-server-usage: rule:admin_or_owner + os_compute_api:os-server-usage:discoverable: "@" + os_compute_api:servers:index: rule:admin_or_owner + os_compute_api:servers:detail: rule:admin_or_owner + os_compute_api:servers:detail:get_all_tenants: rule:admin_api + os_compute_api:servers:index:get_all_tenants: rule:admin_api + os_compute_api:servers:show: rule:admin_or_owner + os_compute_api:servers:show:host_status: rule:admin_api + os_compute_api:servers:create: rule:admin_or_owner + os_compute_api:servers:create:forced_host: rule:admin_api + os_compute_api:servers:create:attach_volume: rule:admin_or_owner + os_compute_api:servers:create:attach_network: rule:admin_or_owner + os_compute_api:servers:delete: rule:admin_or_owner + os_compute_api:servers:update: rule:admin_or_owner + os_compute_api:servers:confirm_resize: rule:admin_or_owner + os_compute_api:servers:revert_resize: rule:admin_or_owner + os_compute_api:servers:reboot: rule:admin_or_owner + os_compute_api:servers:resize: rule:admin_or_owner + os_compute_api:servers:rebuild: rule:admin_or_owner + os_compute_api:servers:create_image: rule:admin_or_owner + os_compute_api:servers:create_image:allow_volume_backed: rule:admin_or_owner + os_compute_api:servers:start: rule:admin_or_owner + os_compute_api:servers:stop: rule:admin_or_owner + os_compute_api:servers:trigger_crash_dump: rule:admin_or_owner + os_compute_api:servers:discoverable: "@" + os_compute_api:servers:migrations:show: rule:admin_api + os_compute_api:servers:migrations:force_complete: rule:admin_api + os_compute_api:servers:migrations:delete: rule:admin_api + os_compute_api:servers:migrations:index: rule:admin_api + os_compute_api:server-migrations:discoverable: "@" + os_compute_api:os-services: rule:admin_api + os_compute_api:os-services:discoverable: "@" + os_compute_api:os-shelve:shelve: rule:admin_or_owner + os_compute_api:os-shelve:unshelve: rule:admin_or_owner + os_compute_api:os-shelve:shelve_offload: rule:admin_api + os_compute_api:os-shelve:discoverable: "@" + os_compute_api:os-simple-tenant-usage:show: rule:admin_or_owner + os_compute_api:os-simple-tenant-usage:list: rule:admin_api + os_compute_api:os-simple-tenant-usage:discoverable: "@" + os_compute_api:os-suspend-server:resume: rule:admin_or_owner + os_compute_api:os-suspend-server:suspend: rule:admin_or_owner + os_compute_api:os-suspend-server:discoverable: "@" + os_compute_api:os-tenant-networks: rule:admin_or_owner + os_compute_api:os-tenant-networks:discoverable: "@" + os_compute_api:os-used-limits:discoverable: "@" + os_compute_api:os-used-limits: rule:admin_api + os_compute_api:os-user-data:discoverable: "@" + os_compute_api:versions:discoverable: "@" + os_compute_api:os-virtual-interfaces:discoverable: "@" + os_compute_api:os-virtual-interfaces: rule:admin_or_owner + os_compute_api:os-volumes:discoverable: "@" + os_compute_api:os-volumes: rule:admin_or_owner + os_compute_api:os-volumes-attachments:index: rule:admin_or_owner + os_compute_api:os-volumes-attachments:create: rule:admin_or_owner + os_compute_api:os-volumes-attachments:show: rule:admin_or_owner + os_compute_api:os-volumes-attachments:discoverable: "@" + os_compute_api:os-volumes-attachments:update: rule:admin_api + os_compute_api:os-volumes-attachments:delete: rule:admin_or_owner nova_sudoers: override: append: