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

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

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

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

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

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

- check_env检查环境
- generate_random_name生成分流器名称
- create_tap创建分流器
- create_mac创建mac
- 返回两者名称构成的字典
add_to_bridge

- 通过命令行将分流器添加入网桥
clean_tap

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

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

- 获取虚拟机内部接口
- 如果虚拟机是stratovirt,则停止网络管理和防火墙,并且再使能ssh登录后重启sshd
- 按照网络连接类型的不同,选择合适的命令配置虚拟机网络
- 输出ip地址信息
版权声明:本文为qq_52736856原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。