通过上几章的介绍,我们现在的 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 myextensiondef update_myextension(self, context, id, myextension):return myextensiondef get_myextension(self, context, id, fields=None):myextension = {}return myextensiondef get_myextensions(self, context, filters=None, fields=None):myextensions = {}return myextensionsdef 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_extCOMMAND_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。这部分内容会在下一篇文章中进行介绍。

转载于:https://www.cnblogs.com/zhutianshi/p/3911582.html

怎样写 OpenStack Neutron 的 Extension (三)相关推荐

  1. 怎样写 OpenStack Neutron 的 Extension (四)

    上文说到需要在 /neutronclient/v2_0/myextension/extension.py 中分别定义五个 class:List/Show/Create/Delete/UpdateExt ...

  2. OpenStack Neutron浅析(三)

    1. 基础知识 1.1 防火墙(firewall) 防火墙是依照特定的规则来控制进出它的网络流量的网络安全系统.一个典型的场景是在一个受信任的内网和不受信任的外网比如 Internet 之间建立一个屏 ...

  3. python openstack vpc互通_深入浅出新一代云网络——VPC中的那些功能与基于OpenStack Neutron的实现(二)-带宽控制...

    在VPC功能实现第一篇中,简单介绍了一下VPC网络对租户间隔离能力的提升以及基于路由提供的一系列网络功能.在这一篇中,将继续介绍VPC网络中十分重要的一个内容:网络带宽的控制,共享以及分离. 首先是对 ...

  4. 深入浅出新一代云网络——VPC中的那些功能与基于OpenStack Neutron的实现(三)-路由与隧道...

    https://www.cnblogs.com/opsec/p/7016631.html 在系列的上一篇, 深入浅出新一代云网络--VPC中的那些功能与基于OpenStack Neutron的实现(二 ...

  5. 带着问题了解Openstack Neutron安全组

    女主宣言 本文出自于ADDOPS团队,该文章作者李文新是360 HULK云平台容器化及虚拟化平台运维开发工程师,负责网络模块的设计与开发.本文是由他最近解决的一个Openstack Neutron安全 ...

  6. 深入理解 OpenStack Neutron:VXLAN

    深入理解 OpenStack Neutron:VXLAN 原创: 李宗标 网事如烟云 2017-02-01 3.8 VXLAN 终于用上了这张图: 老爷子,鸡年大吉! 好吧,我们言归正传!(老爷子说: ...

  7. 深度探索 OpenStack Neutron:Neutron 实现模型

    此文章源于鄙人微信公众号"标哥说天下" [上次发表了(1),这次就不发表(2)了,而是在(1)的基础上继续往下写.如果您已经看过(1),可以往下翻,从 4.2.3 小节开始看起,谢 ...

  8. OpenStack Neutron运行机制解析概要

    问题导读: 1.有OpenVswitch为什么还会有Linux Bridge? 2.整个运行流程是怎样的? 3.什么是TAP设备? 自从开学以来,玩OpenStack也已经3个月了,这段时间主要把精力 ...

  9. OpenStack Neutron浅析(四)

    传统网络到虚拟化网络的演进 传统网络: 虚拟网络: 布式虚拟网络: 单一平面网络到混合平面网络的演进 单一平面租户共享网络:所有租户共享一个网络(IP 地址池),只能存在单一网络类型(VLAN 或 F ...

最新文章

  1. R语言使用pwr包的pwr.r.test函数对相关信息分析(Correlations)进行效用分析(power analysis)的语法
  2. Android- assent和raw的区别
  3. Node.js之readline模块的使用
  4. 对怀孕的人有害的食物。。。朋友们记住咯!(欢迎转载)
  5. php如何输出关联数组的值,php - 如何从PHP关联数组中获取确切的输出 - SO中文参考 - www.soinside.com...
  6. Python中的numpy.sum()
  7. Pandas系列(五)对缺失值的处理
  8. 迅捷word转换成pdf转换器 4.1 官方版
  9. 升级AndroidX appcompat 1.2+版本导致多语言切换失败解决方案及问题分析
  10. Basic开发笔记:Basic语言介绍、环境搭建、基本语法示例与程序实例
  11. python xlsxwriter下载_python_xlsxwriter模块
  12. arcgis之图斑椭球面积及净面积计算工具
  13. C++遇到Id returned 1 exit status解决办法
  14. 强化学习 原理与Python实现(四)
  15. iOS开发-ZFPlayer的简单使用 播放单个网络视频
  16. 如何使用ps的扭曲里面的旋转扭曲
  17. POJ1149 PIGS 题解
  18. 神秘鸭,让语音操作电脑不再神秘 小爱同学
  19. verilog二分频代码verilog三分频代码
  20. C语言等待一秒,延时函数sleep()

热门文章

  1. c# 指定打开某个路径下的CMD_【自学C#】|| 笔记 25 文件的操作
  2. 我的docker随笔21:web 服务器部署
  3. 《转》sql优化的几种方法
  4. ajxs跨域 php_PHP Ajax 跨域问题最佳解决方案
  5. 【算法】剑指 Offer 67. 把字符串转换成整数
  6. 【算法】赫夫曼编码 解码 实际应用 文件的编码 解码
  7. 【es】ElasticSearch master 选举
  8. 【hadoop-未解决】hadoop Error in security property. Constraint unknown: jdk.disabled.namedCurves
  9. 【Spring】Spring注解配置okhttp3
  10. Spark.2.2源码阅读: SPARK SUBMIT任务提交