openstack plugin 之(六)怎样写 OpenStack Neutron 的 Extension
来源:互联网 发布:加工中心简单编程实例 编辑:程序博客网 时间:2024/06/06 02:45
通过上几章的介绍,我们现在的 myplugin 文件夹看上去应该是这样的:
- neutron/
- plugins/
- myplugin/
- __init__.py
- plugin.py
- extensions/
- __init__.py
- myextension.py
- db/
- __init__.py
- db.py
- models.py
我们的plugin.py看上去应该是类似这样的:
from neutron import neutron_plugin_base_v2
class MyPlugin(neutron_plugin_base_v2.NeutronPluginBaseV2): def __init__(self): pass [...]
def create_myextension(self, context, myextension): return myextension def update_myextension(self, context, id, myextension): return myextension def get_myextension(self, context, id, fields=None): myextension = {} return myextension def get_myextensions(self, context, filters=None, fields=None): myextensions = {} return myextensions def delete_myextension(self, context, id): return id
[...]
这些方法需要进一步的定义来做一些有实际意义的事情,这里我只是做一个最简单的举例说明。在有了上述这些文件之后,其实整个 plugin 以及 extension 的后台就已经搞定了,只是这个时候还没有任何途径来使用这些定义好的方法。所以接下来我们需要在 neutronclient 中增加一些对应的方法。
neutronclient 是一个 CLI 客户端,可以用来与 neutron 互动。每一个 OpenStack 的 project 如 nova,neutron 等都有一个类似的自己的 CLI client。首先,我们需要在 CLI 中显示关于 myextension 的命令,这个可以在 neutronclient/shell.py 中设置。这个文件有一个属性叫做 COMMAND_V2,所有可以使用的命令都以 key-value pair 的形式存储在这个变量中:
from neutronclient.neutron.v2_0.myextension import extension as my_ext
COMMAND_V2 = { 'net-list': network.ListNetwork, 'net-external-list': network.ListExternalNetwork, 'net-show': network.ShowNetwork, 'net-create': network.CreateNetwork, 'net-delete': network.DeleteNetwork, 'net-update': network.UpdateNetwork, ...
'myextension-list': my_ext.ListExtension,
'myextension-show': my_ext.ShowExtension,
'myextension-create': my_ext.CreateExtension,
'myextension-delete': my_ext.DeleteExtension,
'myextension-update': my_ext.UpdateExtension,
...
}
下一步就需要去 neutronclient/neutron/v2_0 中新建一个文件夹 myextension,并在其中新建两个文件: __init__.py 和 extension.py,其结构如下:
- neutronclient/
- neutron/
- v2_0/
- myextension/
- __init__.py
- extension.py
然后再 extension.py 中分别定义五个class:List/Show/Create/Delete/UpdateExtension。这部分内容会在下一篇文章中进行介绍。
- openstack plugin 之(六)怎样写 OpenStack Neutron 的 Extension
- openstack plugin 之(三)怎样写 OpenStack Neutron 的 Extension
- openstack plugin 之(五)怎样写 OpenStack Neutron 的 Extension
- openstack plugin 之(七)怎怎样写 OpenStack Neutron 的 Extension
- 怎样写 OpenStack Neutron 的 Extension 和plugin
- openstack plugin 之(一)怎样写 OpenStack Neutron 的 Plugin
- openstack plugin 之(二)怎样写 OpenStack Neutron 的 Plugin
- 怎样写 OpenStack Neutron 的 Plugin
- 怎样写 OpenStack Neutron 的 Plugin (一)
- openstack plugin 之(四)如何区分 OpenStack Neutron Extension 和 Plugin
- openstack plugin 之(八)怎样修改 Openstack Horizon(Dashboard)的显示界面
- openstack plugin 之(九)怎样修改 Openstack Horizon(Dashboard)的显示界面
- Openstack之neutron简介
- Openstack之neutron入门
- Openstack之安装neutron
- 浅谈openstack的neutron
- openstack网络(neutron)模式之GRE的基本原理
- openstack网络(neutron)模式之GRE的基本原理(转)
- 图层颜色叠加
- Android WebView userAgent 设置为桌面UA
- Linux 下串口编程入门
- 面试题12打印1到最大的n位数
- 浅谈几种服务器端模型——多线程并发式(线程池)
- openstack plugin 之(六)怎样写 OpenStack Neutron 的 Extension
- 注解
- shell 流程控制语句测试
- C#学习笔记(七)—–集合--Array
- 计算二叉树中值为data的结点所在的层数
- 移动开发之设计稿转换页面单位尺寸
- [绍棠] iOS开发--AVFoundation自定义相机
- 项目部署时自动停止在ThreadPoolExecutor类中的processWorkerExit(w,completedAbruptly)处
- JQ获取name为test的input文本框中的内容