跳转到: 导航, 搜索

Neutron/FlavorFramework

原理

Flavor Framework 的目的是提供一个 API,允许用户通过一组已声明的服务能力来选择服务类型,而不是通过提供商类型或命名供应商来选择。

Flavor 面向用户的部分是一组服务参数。 提出的 Flavor 概念类似于 nova 的概念,区别在于 Flavor 参数是动态的(例如,不是固定的或硬编码的)。


从实现的角度来看,Flavor 是一个用于将逻辑服务实例(对于任何服务)绑定到具体提供商的对象,该提供商随后将被用于在通过持久层后分派 REST API 调用。
绑定过程称为调度;它将为特定资源(在创建时)选择的 Flavor 映射到提供商,然后映射到特定的后端。

对象模型

Flavor Framework 定义了以下对象

Flavor

属性

* Service Type - string identifier (LOADBALANCER, FWAAS, L3, VPN, etc)
* Name - name of the flavor
* Tags - string containing a list of (key, value) pairs (tags) that define capabilities.

每个驱动程序,包括每个服务的默认驱动程序,都应提供至少其默认能力对象。

API

公共 API 包括 flavors 资源,用户可以列出或显示该资源

neutron flavor-list
------------------------------------------------------------------------------
|    ID    |   Service Type              |    Name            | Description  |
------------------------------------------------------------------------------
|  UUID    | LOADBALANCER                |    Reference       |  Basic LB    |
|  UUID    | LOADBALANCER                |    Hi-perf         | expensive    |
------------------------------------------------------------------------------
neutron flavor-show UUID
---------------------------------------------------------
|  ID                 |     UUID                        |
| Service Type        |      VPN                        |
| Name                |     ipsec                       |
| Description         |      reference                  |
| Tags                |     [Tags]                      |
---------------------------------------------------------


只有管理员才能使用 create/update/delete 命令。

服务资源(代表服务实例,如 vpn 连接、防火墙、池或 vip、路由器)获得公共属性 'flavor',该属性可以在创建时指定。

调度

调度是为资源选择提供商和后端的流程。 有一些问题需要讨论

  • 调度应该是一个单步过程吗? 例如,提供商和后端都应该是调度的结果吗?

似乎是的:如果我们推迟将资源绑定到后端,我们可能会成功调度到提供商,但无法成功调度到后端,因此资源将处于 ERROR 状态,并且需要重新调度到不同的 Flavor。
尽早失败更好。

  • 调度应该从 (provider, backend) 列表中选择,还是先选择提供商,然后提供商选择后端?

似乎第二种方法更简单,因为它不会对后端调度施加设计限制。
例如,后端可以是代理或设备,我们不需要为它们设计用于单个调度器的数据结构。

工作流程

TDB

  1. Flavor Framework 应该允许简单的无提供商资源创建

如果未指定 Flavor,则新资源将调度到某个服务的默认提供商。

驱动程序要求

迁移

预计从现有配置的迁移将是直接的。
如果服务支持 Provider Framework,则其服务实例对象具有 'provider' 属性,该属性有助于将 REST API 调用分派到正确的驱动程序。
从 Flavor Framework 的角度来看,这些资源似乎已经使用未知的 Flavor 进行了调度。
这不应影响它们的可操作性和管理状态。

从 REST API 的角度来看,'provider' 属性仅对管理员可见(并且不能在 create/update 中提供),而 Flavor 属性可用于常规用户的 create/update 操作。

可能存在的问题