trove datastore 浅析
以下代码来自trove/datastore
该目录下一共有4个文件__init__,views,models,service
大概关系(主要是wsgi吧,没仔细学过,简单的从代码上做推测),
service接收api发来的请求,然后将请求的内容作为参数发给models里面做处理,
models处理完之后,
再转给views,最后由service通过wsgi的方式反馈。
以下是trove/datastore/service的代码
from trove.common import wsgi
from trove.datastore import models, views
from trove.flavor import views as flavor_views
class DatastoreController(wsgi.Controller):
def show(self, req, tenant_id, id): 这个应该是根据id来查询数据库和数据库版本
datastore = models.Datastore.load(id) 首先是根据id查找出数据库
datastore_versions = (models.DatastoreVersions.load(datastore.id)) 根据数据库的id载入其版本情况
return wsgi.Result(views.
DatastoreView(datastore, datastore_versions, 将数据库和数据库版本作为参数提交给view,view会返回一个字典类型,其中包括
req).data(), 200) id,name,links
def index(self, req, tenant_id): 索引
context = req.environ[wsgi.CONTEXT_KEY] 接受上下文
only_active = True 将只返回active的数据库设置为true
if context.is_admin: 如果是admin用户的话,则返回所有状态的数据库
only_active = False
datastores = models.Datastores.load(only_active) 查找数据库
datastores_versions = models.DatastoreVersions.load_all(only_active) 查找所有的版本
return wsgi.Result(views.
DatastoresView(datastores, datastores_versions,
req).data(), 200)
def version_show(self, req, tenant_id, datastore, id): 显示数据库版本
datastore = models.Datastore.load(datastore)
datastore_version = models.DatastoreVersion.load(datastore, id)
return wsgi.Result(views.DatastoreVersionView(datastore_version,
req).data(), 200)
def version_show_by_uuid(self, req, tenant_id, uuid): 根据uuid显示
datastore_version = models.DatastoreVersion.load_by_uuid(uuid)
return wsgi.Result(views.DatastoreVersionView(datastore_version,
req).data(), 200)
def version_index(self, req, tenant_id, datastore): 版本索引
context = req.environ[wsgi.CONTEXT_KEY]
only_active = True
if context.is_admin:
only_active = False
datastore_versions = models.DatastoreVersions.load(datastore,
only_active)
return wsgi.Result(views.
DatastoreVersionsView(datastore_versions,
req).data(), 200)
def list_associated_flavors(self, req, tenant_id, datastore, 列出具有相关的flavor
version_id):
"""
All nova flavors are returned for a datastore-version unless
one or more entries are found in datastore_version_metadata,
in which case only those are returned.
"""
context = req.environ[wsgi.CONTEXT_KEY]
flavors = (models.DatastoreVersionMetadata.
list_datastore_version_flavor_associations(
context, datastore, version_id))
return wsgi.Result(flavor_views.FlavorsView(flavors, req).data(), 200)
更多信息:http://www.cnblogs.com/S-tec-songjian/
此文章属博客园用户S-tec原创作品,受国家《著作权法》保护,未经许可,任何单位及个人不得做营利性使用;若仅做个人学习、交流等非营利性使用,应当指明作者姓名、作品名称,原文地址,并且不得侵犯作者依法享有的其他权利。