1. 以下代码来自trove/datastore
    该目录下一共有4个文件__init__,views,models,service
  2.  
  3. 大概关系(主要是wsgi吧,没仔细学过,简单的从代码上做推测),
    service接收api发来的请求,然后将请求的内容作为参数发给models里面做处理,
    models处理完之后,
    再转给views,最后由service通过wsgi的方式反馈。
  4.  
  5. 以下是trove/datastore/service的代码
  6.  
  7. from trove.common import wsgi
    from trove.datastore import models, views
    from trove.flavor import views as flavor_views
  8.  
  9. class DatastoreController(wsgi.Controller):
  10.  
  11. 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, 将数据库和数据库版本作为参数提交给viewview会返回一个字典类型,其中包括
    req).data(), 200) id,name,links
  12.  
  13. 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)
  14.  
  15. 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)
  16.  
  17. 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)
  18.  
  19. 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)
  20.  
  21. 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原创作品,受国家《著作权法》保护,未经许可,任何单位及个人不得做营利性使用;若仅做个人学习、交流等非营利性使用,应当指明作者姓名、作品名称,原文地址,并且不得侵犯作者依法享有的其他权利。

  1.  

trove datastore 浅析的更多相关文章

  1. trove taskmanger api

    trove-taskmanager服务在配置实例,管理实例的生命周期以及对数据库实例执行操作方面做了很多工作.taskmanager会通过Nova.Swift的API访问Openstack基础的服务, ...

  2. trove最新命令简单分类解析

    usage: trove [--version] [--debug] [--service-type <service-type>] [--service-name <service ...

  3. trove命令翻译(上)(只做翻译,未实验效果)

    The trove client is the command-line interface (CLI) for the Database service API and its extensions ...

  4. trove manual installation 翻译

    目标 此文件提供了一步一步的指导手动安装trove在一个现有OpenStack的环境为了开发. 该文件将不包括: OpenStack的设置 trove服务配置 要求 正在运行的OpenStack的环境 ...

  5. Trove系列(七)——Trove的Mysql的复制功能介绍

    描述提供各种复制功能的支持对于Trove来说是很关键的.本章节将描述各种使用案例和相关的用户需求.并依次提出了MySQL的初始阶段的实现.Mysql的复制功能介绍概述先介绍一下MySQL的复制功能原理 ...

  6. Trove系列(六)——Trove的安全组功能和Trove的卷数据快照功能介绍

    Trove的安全组功能功能描述用户目前没有办法在Trove guest 实例上配置安全组 和 安全组规则. 我们建议按照以下指导原则创建一个简单的安全组操作规则.本功能作为Trove 的附加功能实现( ...

  7. Trove系列(五)—Trove的数据存储管理程序类型和版本管理功能介绍

    功能描述数据存储管理程序(Datastore)类型管理允许Trove的用户从操作者列出的名单中选择数据库存储管理程序和版本.操作者将可以控制数据库存储管理程序的类型,添加一个新的版本并去活一个老版本. ...

  8. Trove系列(三)—Trove的功能管理功能介绍

    Trove的功能管理功能Trove的功能管理功能包括给各种不同的版本的 datastore 安装不同的 功能. 本管理功能只适用于激活/去活全系统的功能.唯一例外的是数据存储功能列表功能,该功能对所有 ...

  9. Trove系列(二)—Trove 的架构和流程介绍

    Trove主要逻辑目前Trove支持用户创建一个数据库服务实例,在实例里可以创建多个数据库并进行管理.数据库服务实例目前通过Nova API来创建,然后同样通过Nova API创建一个Volume(未 ...

随机推荐

  1. javascript保留两位

    原文:javascript保留两位 //保留两位小数 //功能:将浮点数四舍五入,取小数点后2位 function toDecimal(x) { var f = parseFloat(x); if ( ...

  2. 你是否听过 TypeScript?

    Type入门(JavaScript的超集)-译   你是否听过 TypeScript? TypeScript 是 JavaScript 的超集,TypeScript结合了类型检查和静态分析,显式接口. ...

  3. Javascript模块化编程之难处

    接着上一篇“Javascript模块化编程之Why”说起,Javascript担子重了之后程序也就复杂了.在大把语言都模块化编程的形势下,Javascript也不可能袖手旁观啊,毕竟这是一条经过实践检 ...

  4. CentOS6.8安装JDK1.7

    一.查看当前系统是否自带JDK rpm -qa | grep java tzdata-java-2016c-1.el6.noarch java-1.7.0-openjdk-1.7.0.99-2.6.5 ...

  5. 批量转换cue文件编码

    之前在网上下载的无损(flac.ape),好多都是整盘的,也就是说一个flac或ape文件搭配一个cue分轨文件,这个文件记录着在不同时间段是哪一首歌曲. 由于之前的操作都是在windows下进行的, ...

  6. 新部署的linux web服务器error Host ‘*.*.*.*’ is not allowed to connect to this MySQL server

    最近上头交给我个任务,把WINDOWS平台下开发的网站,部署在LINUX环境上. 把mysql安装好了,所有表单都导入没问题,然后代码都放在tomcat下的webapps文件夹下了,主页 面可以正常显 ...

  7. 增加窗体边框3D效果

    /// <summary> /// 增加窗体边框3D效果 /// </summary> /// <param name="e"></par ...

  8. JavaScript 面向对象编程(三)如何写类和子类

    在JavaScript面向对象编程(一)原型与继承和JavaScript面向对象编程(二)构造函数和类中,我们分别讨论了JavaScript中面向对象的原型和类的概念.基于这两点理论,本篇文章用一个简 ...

  9. ubunt 命令行下链接VPN

    Ubuntu命令行下VPN连接与使用 route add default dev ppp0 route add -net 192.168.2.0 netmask 255.255.255.0 ppp0 ...

  10. 使用HttpURLConnection实现多线程下载

    HttpURLConnection继承了URLConnection,因此也可用于向指定网站发送GET请求.POST请求,而且它在URLConnection基础上提供了如下便捷方法: 实现多线程下载的步 ...