新的 Nova 配额资源类型¶
https://blueprints.launchpad.net/heat/+spec/nova-quota-resource
管理员希望能够在 HOT 模板中指定项目(project)的 nova 配额以及项目用户的 nova 配额。此蓝图建议为 nova 配额创建一个新的 heat 资源类型。
问题描述¶
目前,管理员可以使用类似于以下模板的模板,通过 heat 创建一个新的 keystone 项目
resources:
test_role:
type: OS::Keystone::Role
properties:
name: test_role
test_project:
type: OS::Keystone::Project
properties:
name: test_project
enabled: True
test_user:
type: OS::Keystone::User
properties:
name: test_user
domain: default
default_project: {get_resource: test_project}
roles:
- role: {get_resource: test_role}
domain: default
- role: {get_resource: test_role}
project: {get_resource: test_project}
但是,要指定与项目关联的 nova 配额,管理员需要在编排完成后执行类似以下操作
$ os quota set --cores 5 --ram 51200 <project>
$ nova quota-update --user <user> --floating-ips 20 <project>
用例¶
对于 Openstack 管理员来说,能够使用定义项目、项目成员以及项目和用户的分配配额的模板,整体管理项目将是理想的选择。
提议的变更¶
此蓝图建议向 heat 添加一个新的资源类型 OS::Nova::Quota,以解决上述问题。一个示例 OS::Nova::Quota 模板
resources:
nova_user_quota:
type: OS::Nova::Quota
properties:
project: {get_param: project}
user: {get_param: user}
cores: 5
fixed_ips: 5
floating_ips: 5
instances: 5
injected_files: 5
injected_file_content_bytes: 5
injected_file_path_bytes: 5
key_pairs: 5
metadata_items: 5
ram: 5
security_groups: 5
security_group_rules: 5
server_groups: 5
server_group_members: 5
outputs:
nova_user_quota_id:
value: {get_resource: nova_user_quota}
属性:
- project
必需: True
类型: 字符串
描述: OpenStack keystone 项目
约束: 必须是有效的 keystone 项目
- 用户
类型: 字符串
描述: OpenStack keystone 用户
约束: 必须是有效的 keystone 用户
- cores
类型: 整数
描述: 核心数量的配额
约束: 最小值是 -1
- fixed_ips
类型: 整数
描述: 固定 IP 数量的配额
约束: 最小值是 -1
- floating_ips
类型: 整数
描述: 浮动 IP 数量的配额
约束: 最小值是 -1
- instances
类型: 整数
描述: 实例数量的配额
约束: 最小值是 -1
- injected_files
类型: 整数
描述: 注入文件数量的配额
约束: 最小值是 -1
- injected_file_content_bytes
类型: 整数
描述: 注入文件内容字节数的配额
约束: 最小值是 -1
- injected_file_path_bytes
类型: 整数
描述: 注入文件路径字节数的配额
约束: 最小值是 -1
- key_pairs
类型: 整数
描述: 密钥对数量的配额
约束: 最小值是 -1
- metadata_items
类型: 整数
描述: 元数据项数量的配额
约束: 最小值是 -1
- ram
类型: 整数
描述: 内存量配额(以兆字节为单位)
约束: 最小值是 -1
- security_groups
类型: 整数
描述: 安全组数量的配额
约束: 最小值是 -1
- security_group_rules
类型: 整数
描述: 安全组规则数量的配额
约束: 最小值是 -1
- server_groups
类型: 整数
描述: 服务器组数量的配额
约束: 最小值是 -1
- server_group_members
类型: 整数
描述: 服务器组成员数量的配额
约束: 最小值是 -1
如果提供了用户,则将更新该项目下用户的配额。否则,将更新项目的配额。
将为该资源添加默认策略规则,以限制为管理员使用。
"resource_types:OS::Nova::Quota": "rule:project_admin"
此配额资源将处理创建、更新和删除。对于处理创建和更新,资源将调用 Nova 客户端的 quota-set 更新方法,因为没有 quota create 调用。对于处理删除,资源将调用 Nova 客户端的 quota delete 方法。这将把配额重置为默认值。请注意,创建多个资源并删除一个将重置配额,即使其他资源仍然存在。
备选方案¶
管理员或操作员可以在项目编排完成后手动更改项目的默认配额。
OS::Keystone::Project 可以包含一个可选的 Quota 属性。但是,添加似乎超出了 Keystone 的范围,因为 Keystone 没有配额的概念。
实现¶
负责人¶
主要负责人
Yosef Hoffman - yohoffman
其他指派人
Julian Sy - syjulian
Andy Hsiang - yh418t
里程碑¶
- 完成目标里程碑
ocata-1
工作项¶
实现新的资源类型 OS::Nova::Quota
实现适当的单元和功能测试
依赖项¶
无