码迷,mamicode.com
首页 > 其他好文 > 详细

怎样写 OpenStack Neutron 的 Extension (二)

时间:2014-08-12 03:09:40      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   使用   io   文件   数据   for   

接着之前一篇文章,再来谈谈 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 的交互。这部分内容会在下一篇文章中进行介绍。

        

怎样写 OpenStack Neutron 的 Extension (二),布布扣,bubuko.com

怎样写 OpenStack Neutron 的 Extension (二)

标签:style   blog   color   使用   io   文件   数据   for   

原文地址:http://www.cnblogs.com/zhutianshi/p/3906228.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!