Stratovirt源码分析之网络配置模块

前言

Hydropper的网络配置模块主要是由utils文件中的utils_network.py、resources.py、basevm.py文件构成的。本文将会根据源码进行对应的解读。
作者水平有限,如有分析错误,恳求指正,谢谢!

utils_network.py

generate_random_name

在这里插入图片描述

  1. 生成数字和小写字母序列
  2. 按照序列顺序随机剪裁7个字串,并以“ ”间隔,t开头
  3. 再在生成字串后加上“-”以及空格隔开的随机两字符

is_port_free

在这里插入图片描述

  1. 地址如果是不是本地,则进行相关信息更改
  2. 建立套接字类型和网络协议类型的循环,如果当前类套接字连接成功则说明存在,返回False
  3. 如果出现报错,则进行相应处理
  4. 最后,将套接字关闭

get_free_port

在这里插入图片描述

  1. 按照端口号的限制生成离散序列,按照参数是否随机进行打乱
  2. 遍历序列,若端口号为空则添加,若端口数量达标则停止遍历
  3. 若有空端口生成,如果是一个,则输出端口号,否则输出新端口列表

resources.py:NetworkResource

check_env

在这里插入图片描述

  1. 命令行创建网桥,添加ip并启动
  2. 创建配置工具进行ip地址分配

create_tap

在这里插入图片描述

  1. 为虚拟机创建分流器,并连接到网桥
  2. 若ip命令出错,则尝试tumctl命令

generator_tap

在这里插入图片描述

  1. check_env检查环境
  2. generate_random_name生成分流器名称
  3. create_tap创建分流器
  4. create_mac创建mac
  5. 返回两者名称构成的字典

add_to_bridge

在这里插入图片描述

  1. 通过命令行将分流器添加入网桥

clean_tap

在这里插入图片描述

  1. 通过对于tap_cmd属性的判断选取合适的命令将分流器移除
  2. 判断lock状态,如果分流器存在则在资源列表中移除,并扩展相应ip范围

alloc_ipaddr

在这里插入图片描述

  1. 检测lock状态
  2. 如果分流器存在,则返回对应信息
  3. 在ip范围列表内随机选取一个作为新IP地址,并在列表内移除
  4. 添加对应信息,并返回

basevm.py:config_network

在这里插入图片描述

  1. 获取虚拟机内部接口
  2. 如果虚拟机是stratovirt,则停止网络管理和防火墙,并且再使能ssh登录后重启sshd
  3. 按照网络连接类型的不同,选择合适的命令配置虚拟机网络
  4. 输出ip地址信息

版权声明:本文为qq_52736856原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。