新的 Neutron 配额资源类型

https://blueprints.launchpad.net/heat/+spec/neutron-quota-resource

管理员希望能够在 HOT 模板中指定项目的 Neutron 配额。此蓝图建议为 Neutron 配额创建一个新的 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}

然而,为了指定与项目关联的 Neutron 配额,管理员需要在编排完成后执行类似如下操作:

$ os quota set --floating-ips 5 --networks 5 --subnets 5  <project>

用例

对于 Openstack 管理员来说,理想的情况是能够使用定义项目、项目成员以及分配配额的模板来整体管理项目。

提议的变更

此蓝图建议向 Heat 添加新的资源类型 OS::Neutron::Quota,以解决上述问题。一个示例 OS::Neutron::Quota 模板

resources:
  neutron_quota:
    type: OS::Neutron::Quota
    properties:
      project: {get_param: project}
      floating_ips: 5
      health_monitors: 5
      members: 5
      networks: 5
      pools: 5
      ports: 5
      rbac_policies: 5
      routers: 5
      security_groups: 5
      security_group_rules: 5
      subnetpools: 5
      subnets: 5
      vips: 5
outputs:
  neutron_quota_id:
    value: {get_resource: neutron_quota}

属性:

  • project
    • 必需: True

    • 类型: 字符串

    • 描述: OpenStack keystone 项目

    • 约束条件:必须是有效的 Keystone 项目

  • floating_ips
    • 类型: 整数

    • 描述:浮动 IP 的配额

    • 约束条件:最小值是 -1

  • health_monitors
    • 类型: 整数

    • 描述:健康监控的配额

    • 约束条件:最小值是 -1

  • members
    • 类型: 整数

    • 描述:成员的配额

    • 约束条件:最小值是 -1

  • networks
    • 类型: 整数

    • 描述:网络的配额

    • 约束条件:最小值是 -1

  • pools
    • 类型: 整数

    • 描述:池的配额

    • 约束条件:最小值是 -1

  • ports
    • 类型: 整数

    • 描述:端口的配额

    • 约束条件:最小值是 -1

  • rbac_policies
    • 类型: 整数

    • 描述:RBAC 策略的配额

    • 约束条件:最小值是 -1

  • routers
    • 类型: 整数

    • 描述:路由器的配额

    • 约束条件:最小值是 -1

  • security_groups
    • 类型: 整数

    • 描述:安全组的配额

    • 约束条件:最小值是 -1

  • security_group_rules
    • 类型: 整数

    • 描述:安全组规则的配额

    • 约束条件:最小值是 -1

  • subnetpools
    • 类型: 整数

    • 描述:子网池的配额

    • 约束条件:最小值是 -1

  • subnets
    • 类型: 整数

    • 描述:子网的配额

    • 约束条件:最小值是 -1

  • vips
    • 类型: 整数

    • 描述:VIP 的配额

    • 约束条件:最小值是 -1

将为该资源添加默认策略规则,限制其仅供管理员使用。

"resource_types:OS::Neutron::Quota": "rule:project_admin"

此配额资源将处理创建、更新和删除。对于处理创建和更新,资源将调用 Neutron 客户端的 quota-set 更新方法,因为没有配额创建调用。对于处理删除,资源将调用 Neutron 客户端的 quota delete 方法。这将把配额重置为默认值。请注意,创建多个资源并删除一个将重置配额,即使其他资源仍然存在。

备选方案

管理员或操作员可以在项目编排完成后手动更改项目的默认配额。

OS::Keystone::Project 可以包含一个可选的 Quota 属性。但是,添加似乎超出了 Keystone 的范围,因为 Keystone 没有配额的概念。

实现

负责人

主要负责人

  • Yosef Hoffman - yohoffman

其他指派人

  • Julian Sy - syjulian

  • Andy Hsiang - yh418t

里程碑

完成目标里程碑

ocata-1

工作项

  • 实现新的资源类型 OS::Neutron::Quota

  • 实现适当的单元和功能测试

依赖项