• 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原创作品,受国家《著作权法》保护,未经许可,任何单位及个人不得做营利性使用;若仅做个人学习、交流等非营利性使用,应当指明作者姓名、作品名称,原文地址,并且不得侵犯作者依法享有的其他权利。



  • 相关阅读:
    python json模块出现Invalid control character这个异常的原因
    KMS服务,使用命令激活windows/office
    vscode Python文件头部信息
    MIMIC-III Clinical Database 翻译
    autohotkey 设置
    DeepLearning 写代码常用
    VScode 个人设置
    随机种子设置
    samba配置
    jieba 分词不显示日志
  • 原文地址:https://www.cnblogs.com/S-tec-songjian/p/5956543.html
Copyright © 2020-2023  润新知