VMM插件和OpenStack nova集成(华三CAS插件处理虚拟化流程及源码分析)

2023-05-16

插件组成

华三目前依托OpenStack有以下几个插件:

l  {openstack}_cas_nova-{version}.tar.gz  --虚拟化

l  {openstack}_cas_cinder-{version}.tar.gz  --为用户提供统一的卷相关操作的存储接口

l  {openstack}_cas_neutron-{version}.tar.gz  -- 网络相关

l  {openstack}_cas_ceilometer-{version}.tar.gz -- 收集其他组件的事件日志、监控

l  {openstack}_cas_patch-{version}.tar.gz

关键术语

Instance :虚拟机实例

Instance Status :虚拟机状态

  •   power_status:  Running、Shutdown、NoState;
  •   vm_state:  Active、Suspended

Flavor : 在新建 Instance 之前,需要为 Instance 请求一组资源(Disk/Memory/VCPU/RootDisk/EphemeralDisk/Swap),nova还要计算物理机能否给出足够的资源。这组资源的设置就是 flavor,即创建虚拟机的规格。每个 Instance 对象的 instance_type_id 字段就表示该 Instance 所拥有的 flavor

Virt Driver :Nova 仅仅是作为云计算虚拟机的管理工具,其本身并不提供任何的虚拟化技术,而是交由具体的 Hypervisor 来实现虚拟机的创建和管理。因此,nova-compute 需要和不同的 Hpyervisor 进行交互,并使用 Virt Driver 来作为这种交互的支撑,Nova 实现了 Hyper-V/Libvirt/VMware/Xen 这四种 Virt Dirver 。

流程图

 

代码分析

整体工程结构

 

工程配置文件分析

文件:config.py

作用:通过获取openstack的配置文件,向程序注入静态Key-Value配置信息

 

有4个主要方法:

行号

方法名

35

NovaSceneData

69

CeilometerSceneData

84

CinderSceneData

104

NeutronSceneData

 

代码分析,以NovaSceneData 为例,Openstack nova配置文件为/etc/nova/nova.conf


class NovaSceneData(BaseSceneData):

    conf_file = '/etc/nova/nova.conf'

    user_conf_file = 'nova.conf.ini'

    original_conf_file = '/etc/nova/nova.conf.original'

    backup_conf_file = '/etc/nova/nova.conf.last'

    key_opts = [

        {'option':'compute_driver','section':'DEFAULT','default':'casapi.CasDriver','required':'true'},

        {'option':'host_ip','section':'cas','default':'','required':'true'},

        {'option':'host_username','section':'cas','default':'','required':'true'},

        {'option':'host_password','section':'cas','default':'','required':'true'},

        {'option':'hpName','section':'cas','default':'','required':'true'},

        {'option':'clusterName','section':'cas','default':'','required':'false'},

        {'option':'host_transparent','section':'cas','default':'False','required':'false'},

        {'option':'neutron_plugin','section':'cas','default':'openvswitch','required':'true'},

        {'option':'glance_host','section':'cas','default':'','required':'true'},

        {'option':'pci_passthrough_whitelist','section':'DEFAULT','default':'','required':'false'}]  

openstack_cas_nova 工程分析

结构:

 

Client.py 分析

客户端认证

Client.py定义了agent的HTTPDigestAuth认证信息,agent host和openstack使用http、https通讯,即openstack发命令(如创建虚拟机、关机等),通过agent来调用cas执行。

认证需要username、password

 

http请求和响应

content-type是xml格式

 

driver.py分析

包模块引用

 

配置

 

类分析

分为2个类

 

CasDriver类分析

CasDriver用于沟通物理主机,虚拟机生命周期管理。

 

 

实例分析: 创建虚拟机

我们以创建虚拟机核心方法spawn为例

定义:


    def spawn(self, context, instance, image_meta, injected_files,

              admin_password, network_info=None, block_device_info=None):  

实际创建虚拟机的工作是交给vmops类,CasDriver传递给vmops类spawn方法的参数:

  • l  虚拟机instance对象实例
  • l  image_meta 镜像元数据
  • l  admin_password 管理员密码
  • l  network_info 网络信息
  • l  block_devices 块存储信息
  • l  False 标识是否重新创建

vmops类spawn方法流程

 

代码细节逻辑(从448行开始):

 

Spawn方法需要调用的关键方法:

  • l  配置vm:_config_vm
  • l  加入块存储:_attach_block_devices
  • l  部署vm:_deploy
  • l  获取部署vm参数:_get_deploy_parameter
  • l  获取物理CPU信息:_get_cpu_info

其中部署的关键代码:

发送xml为格式存储的命令到cas,通过消息号msgId来将agent和cas Task进程异构沟通协作,OpenStack和CAS通过nova的MQ消息队列进行协同,wait_for_task是一个同步方法,agent必须一直等待Task完成后返回。

 

实例分析:关闭虚拟机

和上例同样逻辑,使用driver.py 作为入口,power_off为公共方法


    def power_off(self, instance, timeout=0, retry_interval=0):

        self._vmops.power_off(instance)  

vmops.py 的vmopt作为实现类,负责执行:

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VMM插件和OpenStack nova集成(华三CAS插件处理虚拟化流程及源码分析) 的相关文章

随机推荐

  • 网线八根线作用及水晶头网线制作流程

    网线八根线作用 xff1a 首先要知道的是八根铜导线的整体作用 xff0c 八根铜导线是为了削减电磁信号的彼此搅扰 xff0c 每两根按必定的密度缠绞在一起 这样 xff0c 在传输电信号时彼此之间辐射的电波就会彼此抵消 xff0c 最大程
  • C++中常用的容器String、vector、list、map(学习笔记)

    目录 一 String容器 初始化 string对象上的操作 二 vector容器 初始化 区分是列表初始化还是值初始化 xff1a 其他操作 三 list容器 四 map容器 这里主要讲C 43 43 中经常用到的一些保存数据的容器 xf
  • Linux C++使用TCP通信实现同一局域网下电脑客户端与工控机服务端传输文件数据(亲测可用)

    使用平台说明 xff1a 电脑 xff08 客户端 xff09 ubuntu18 43 vscode 工控机 xff08 服务端 xff09 ubuntu16 43 vscode 实现功能说明 xff1a 电脑和工控机连在同一wifi局域网
  • Ubuntu18终端显示内容太少的解决办法

    1 在终端的空白处点击鼠标右键 xff0c 选择配置文件首选项 2 点击配置 gt 点击滚动 gt 选择无限回滚
  • Docker ——给我们的应用映射端口号

    一 概念 Docker 端口映射即映射容器内应用的服务端口到本机宿主机器 二 实现 当容器中运行一些网络应用 xff0c 要让外部访问这些应用时 xff0c 可以通过 P 或 p 参数两种方式来指定端口映射 1 随机映射 使用 P 参数时
  • HI3516DV300/HI3519AV100/HI3559AV100 实现RTSP/RTMP视频流实时识别YOLOV3 识别速度14帧/S

    本教程是基于yolov3在硬件实现硬件的实时视频处理 xff01 不是SAMPLE中的处理单张图片照片 xff01 未采用opencv库 xff0c 数据处理全部采用硬件加速 xff01 直接对摄像头数据直接进行图像识别 xff01 HI3
  • 海思3559平台MCP2515 SPI转CAN驱动配置

    1 转载前言 由于海思平台需要接入CAN设备 xff0c 而3559平台的CAN接口没有驱动支持 xff1b 但是标准Linux是支持mcp2515驱动 xff0c 作为CAN设备接入的 2 需要修改内容 SPI pinmux复用配置内核开
  • vscode 修改C/C++的代码格式化风格

    默认的样式真的太丑了 xff0c 预定义样式 Ctrl 43 Shift 43 P输入user settings xff0c 进入Settings界面 xff1b 或者菜单栏File Preferences Settings 搜索clang
  • linux 下 pthread_cond_t 详解

    一览 本文目的为何需要条件变量三个问题 传入前锁mutex传入后解锁mutex返回前再次锁mutex pthread cond signal的两种写法尾语 本文目的 首先说明 xff0c 本文重点不在怎么用条件变量 这里我先列出 apue
  • 基于Jetson TX1的caffe环境搭建

    Data 2017 03 13 Author cjh Theme Set up the Caffe environment 步骤1 xff1a 安装caffe所需的安装包 sudo add apt repository universe s
  • 服务器BMC与IPMI基础知识

    初识BMC与IPMI 什么是BMC xff1f BMC全名Baseboard management controller 是一种嵌入式管理微控制器 BMC全称为基板管理控制器 xff08 Baseboard Manager Controll
  • 外企常用邮件回复

    Ways to Say Thank You xff08 如何表达感谢 xff09 1 Thanks Thank you xff08 谢谢 xff09 2 Thanks a lot xff08 多谢 xff09 3 Thank you so
  • 光模块SFP基础接口标准入门

    说到光模块 xff0c 相信大家一定不会觉得陌生 随着光通信的高速发展 xff0c 现在我们工作和生活中很多场景都已经实现了 光进铜退 也就是说 xff0c 以同轴电缆 网线为代表的金属介质通信 xff0c 逐渐被光纤介质所取代 而光模块
  • 7.PCIE配置空间读写软件

    软件 7 PCIE配置空间读写 软件 7 PCIE配置空间读写 软件 7 PCIE配置空间读写 软件读写配置空间 驱动层接口原理分析 驱动层代码接口驱动层接口与原理 相关参考基础知识raw pci ops 得初始化raw pci ext o
  • SFF-8436 QSFP + 4X 10 Gb / s可插拔收发器规范 Rev 4.9文档翻译

    之前利用闲暇时间依次翻译了SFP MSA SFF 8024 SFF 8472的相关文档 xff0c 原由是在交换机端口开发中有参考到相关的信息 xff0c 虽然用到的字段不多 xff0c 但是本着学习的心态 xff0c 对其内容作了大部分的
  • MDIO:读数据下冲不满足spec

    PHY C827 MDC PHY C827 MDIO Measured at U CPU AD53 AE52 Description MDIO 读数据下冲不满足spec xff08 Spec要求 xff1a Min 0 5V xff09 测
  • 定时器产生PWM

    1 用两个定时器 计数器产生矩形波 这种方法的基本原理就是用T0作为矩形波的周期的定时器 xff0c 每一周期产生一次中断 xff0c 用T1作为矩形波的高电平的计时器 xff0c 每到T0的定时中断 xff0c 输出矩形波的引脚输出高电平
  • Windows下的汉字到了Linux下成了乱码

    Linux和Windows下面的汉字编码不一样 xff0c Linux下面是UTF 8 xff0c Windows下面是GB2312 xff0c 正是由于编码格式不相同从而导致乱码 几种解决方法如下 xff1a 1 在Windows上用记事
  • 调整树莓派4B使用VNC View的分辨率的一个方法

    这几天在摆弄树莓派4B xff0c 一直被一个问题困扰 xff1a 刚装上系统时 xff0c 用VNC Viewer连接可以达到1920x1080的分辨率 xff0c 就算什么都不做 xff0c 重启一下 xff0c 分辨率就成1024x7
  • VMM插件和OpenStack nova集成(华三CAS插件处理虚拟化流程及源码分析)

    插件组成 华三目前依托OpenStack有以下几个插件 xff1a l openstack cas nova version tar gz 虚拟化 l openstack cas cinder version tar gz 为用户提供统一的