
1. What is the problem? Originally this patch was committed to the Tricircle and provided dynamic pod binding support. After splitting this feature should be put in Trio2o. So we plan to synchronize this patch from Gerrit to Trio2o. You can find the old patch on Gerrit here[1]. In the Trio2o, each tenant is bound to multiple pods, where it creates various types of resources. However such a binding relationship should be dynamic instead of static. For instance, when some resources in a pod are exhausted, tenant needs to be bound to a new pod in the same AZ. 2. What is the solution to the problem? To deal with the above problem, the Trio2o dynamically binds tenants to pod which has available resources. We call this feature dynamic pod binding, which is explained in the spec[2] in detail. In this patch, we only try to bind a tenant to a pod dynamically, when she tries to create a VM. 3. What the features need to be implemented to the Trio2o to realize the solution? When a tenant creates a VM, the Trio2o first selects all available pods for her. Then by filtering and weighing the pods, the Trio2o selects the most suitable pod for the tenant. Next, the Trio2o queries database for current binding relationship of the tenant. If the tenant is not bound to any pod, we create a new binding relationship, which binds the tenant to the selected pod. If the tenant is already bound to a pod, and the pod is not the one selected by the Trio2o, we update current binding relationship, which binds the tenant to a new pod. If the tenant is already bound to a pod, and the pod is exactly the one selected by the Trio2o, the Trio2o does nothing. [1] https://review.openstack.org/#/c/356187 [2] https://review.openstack.org/#/c/306224 Change-Id: I1c884ce47ace919f732d98ee154bdd59ed22cd74
63 lines
1.9 KiB
INI
63 lines
1.9 KiB
INI
[metadata]
|
|
name = trio2o
|
|
summary = the Trio2o provides an OpenStack API gateway to allow multiple OpenStack instances, spanning in one site or multiple sites or in hybrid cloud, to be managed as a single OpenStack cloud
|
|
description-file = README.rst
|
|
author = OpenStack Trio2o
|
|
author-email = openstack-dev@lists.openstack.org
|
|
home-page = wiki.openstack.org/wiki/Trio2o
|
|
classifier =
|
|
Environment :: OpenStack
|
|
Intended Audience :: Information Technology
|
|
Intended Audience :: System Administrators
|
|
License :: OSI Approved :: Apache Software License
|
|
Operating System :: POSIX :: Linux
|
|
Programming Language :: Python
|
|
Programming Language :: Python :: 2
|
|
Programming Language :: Python :: 2.7
|
|
Programming Language :: Python :: 3
|
|
Programming Language :: Python :: 3.4
|
|
|
|
[files]
|
|
packages =
|
|
trio2o
|
|
|
|
[build_sphinx]
|
|
source-dir = doc/source
|
|
build-dir = doc/build
|
|
all_files = 1
|
|
|
|
[upload_sphinx]
|
|
upload-dir = doc/build/html
|
|
|
|
[compile_catalog]
|
|
directory = trio2o/locale
|
|
domain = trio2o
|
|
|
|
[update_catalog]
|
|
domain = trio2o
|
|
output_dir = trio2o/locale
|
|
input_file = trio2o/locale/trio2o.pot
|
|
|
|
[extract_messages]
|
|
keywords = _ gettext ngettext l_ lazy_gettext
|
|
mapping_file = babel.cfg
|
|
output_file = trio2o/locale/trio2o.pot
|
|
|
|
[entry_points]
|
|
oslo.config.opts =
|
|
|
|
trio2o.api = trio2o.api.opts:list_opts
|
|
trio2o.common = trio2o.common.opts:list_opts
|
|
trio2o.db = trio2o.db.opts:list_opts
|
|
|
|
trio2o.nova_apigw = trio2o.nova_apigw.opts:list_opts
|
|
trio2o.cinder_apigw = trio2o.cinder_apigw.opts:list_opts
|
|
trio2o.xjob = trio2o.xjob.opts:list_opts
|
|
|
|
tempest.test_plugins =
|
|
trio2o_tests = trio2o.tempestplugin.plugin:Trio2oTempestPlugin
|
|
|
|
trio2o.common.schedulers =
|
|
pod_manager = trio2o.common.scheduler.pod_manager:PodManager
|
|
bottom_pod_filter = trio2o.common.scheduler.filters.bottom_pod_filter:BottomPodFilter
|
|
filter_scheduler = trio2o.common.scheduler.filter_scheduler:FilterScheduler |