openstack中的nova api如何确定可用性区域列表顺序?

openstack中的nova api如何确定可用性区域列表顺序?,openstack,Openstack,我想在horizon中的openstack设置中更改可用性区域的默认选项。但是,我很难找出是什么决定了nova api返回的可用性区域的顺序。例如,运行openstack可用性区域列表I获得: +--------------+-------------+ | Zone Name | Zone Status | +--------------+-------------+ | zone2 | available | | zone1 | available

我想在horizon中的openstack设置中更改可用性区域的默认选项。但是,我很难找出是什么决定了nova api返回的可用性区域的顺序。例如,运行
openstack可用性区域列表
I获得:

+--------------+-------------+
| Zone Name    | Zone Status |
+--------------+-------------+
| zone2        | available   |
| zone1        | available   |
| internal     | available   |
| zone3        | available   |
+--------------+-------------+
这与horizon的下拉框中的顺序相同。但是,直接查询数据库时,我得到:

mysql> select * from aggregate_metadata;
+---------------------+------------+------------+----+--------------+-------------------+--------------+---------+
| created_at          | updated_at | deleted_at | id | aggregate_id | key               | value        | deleted |
+---------------------+------------+------------+----+--------------+-------------------+--------------+---------+
| 2015-06-12 08:43:07 | NULL       | NULL       |  1 |            1 | availability_zone | zone1 |       0 |
| 2015-06-12 08:43:08 | NULL       | NULL       |  2 |            2 | availability_zone | zone2 |       0 |
| 2015-10-26 05:30:15 | NULL       | NULL       |  3 |            3 | availability_zone | zone3 |       0 |
+---------------------+------------+------------+----+--------------+-------------------+--------------+---------+
3 rows in set (0.00 sec)
显然,openstack api在返回结果之前正在进行排序。。。但是,我不知道它是如何排序的,也不知道如何控制排序。

是nova api用来收集可用区域列表的函数

此函数用于获取可用服务的列表(根据id排序),添加可用区域名称并将其添加到这些服务中

因为服务列表是第一步,所以它的id定义了顺序,而不是区域名称

可以根据需要以不同的方式修改排序顺序

  • 在前端(地平线)对订单进行排序

    修改

    ng options=“zone.value作为model.availabilityZones中区域的zone.label”| orderBy:“value”
  • 在后端对订单排序(nova api)

    在get\u availability\u zones函数中的return语句之前添加
    availability\u zones.sort()
    not\u availability\u zones.sort()

  • ng-options="zone.value as zone.label for zone in model.availabilityZones | orderBy:'value'"
    available_zones.sort()
    not_available_zones.sort()