• 怎样写 OpenStack Neutron 的 Extension (二)


    接着之前一篇文章,再来谈谈 Extension 的具体实现问题。我使用的是本地数据库加远程API调用的方法,所以先要定义一下数据库中 myextension 如何存储。首先,我们可以在自己的 plugin 根目录下新建一个 db 文件夹,以及三个文件:

    - neutron/

      - plugins/

        - myplugin/

          - __init__.py

          - plugin.py

          - extensions/

          - db/

            - __init__.py

            - db.py

            - models.py

    db.py 用来存放数据库的 wrapper,提供一些读写数据库的方法;而 models.py 直接定义 myextension 的那些属性如何在数据库中存储。下面是 models.py 的一个例子:

    import sqlalchemy as sa
    
    from neutron.db import model_base
    from neutron.db import models_v2
    
    
    class MyExtension(model_base.BASEV2, models_v2.HasId,
                      model_v2.HasTenant):
        ''' Defines the data model for my extension '''
        name = sa.Column(sa.String(255), nullable=False)

    db.py 的实现可以参照 db_base_plugin_v2.py 中的实现方式。然后在自己的 plugin.py 中实现 myextension 的五个操作: CREATE, UPDATE, GET, SHOW,  和 DELETE。到这里,myextension 的后台操作就全了。

    但是这样还不够,因为我们还需要一些方式来从前台发布关于 myextension 的命令,使后台的 plugin controller 可以接收到,并进行相应的操作。这就需要修改 neutronclient 的相应代码,实现通过 CLI 的交互。这部分内容会在下一篇文章中进行介绍。

            

    ----------------------------------------------------------------
    作者:好大一片云
    博客地址:http://www.cnblogs.com/zhutianshi/
    转载声明:可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明,谢谢合作!
    Creative Commons License
    This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
  • 相关阅读:
    eslint 入门项目搭建过程
    ES6 模块化笔记
    闭包
    JavaScript 内存相关知识
    Mac 配置Charles,抓取移动设备数据
    jquery.cookie的path坑
    如何模拟click事件,打开一个a标签链接?
    6月份开发问题整理
    js 淡入淡出的tab选项卡
    点击弹出模态框-以登录表单为例
  • 原文地址:https://www.cnblogs.com/zhutianshi/p/3906228.html
Copyright © 2020-2023  润新知