Github-blog
CSDN-blog

注意 本文提供的脚本是针对本人之前修改的sriov插件的哈。

sriov-cni简介

sriov-cni是hustcat/sriov-cni开发的一种容器网络插件(Container Network Interface),它使得容器可以直接使用物理机中扩展出来的VF(virtual functions)。Intel在此基础上,为其添加了dpdk功能。本人在Intel版本的基础上进行了修改,对应的版本是2017.10.12,具体commit为f45d68b638df76261170bd585fb4014b99990548。 具体修改如下:

1、保存dpdk配置文件和开启dpdk驱动的代码顺序对调,保证在启动更新成功的情况下才会保存配置文件;
2、配置文件路径添加一级容器网络命名空间ID,从而使得容器内可以识别自身的配置文件;
3、添加netconf的配置保存;
4、类似VF,添加setupPF(),实现流程与setupVF()基本一致。

sriov修改详细介绍

配置文件虽然都进行了保存,但是每次读取查找还是不够便捷,因此又写了个小脚本进行配置信息的查询(portName, isDPDKmode, pciAddress),可以直接放到/usr/bin/下,当个小命令用。
例如:

root@xftony:~# mv getpci.py /usr/bin/getpci
root@xftony:~# chmod a+x /usr/bin/getpci

之后就可以直接使用了。

root@xftony:~# cat getpci.py
#!/usr/bin/python2.7
import os
import json
import optparsedef getNameSpace():nsFile = "/proc/1/ns/net"nsLink = os.readlink(nsFile)ns = nsLink[5:-1]return nsdef getPci(path):ns = getNameSpace()confPath = os.path.join(path, ns)if not os.path.exists(confPath) :    print "can not find the Dir: %s"%confPathreturnfileList = os.listdir(confPath)portList={}for file in fileList:if os.path.splitext(file)[1] != '.json':continueportNew = {}filePath = os.path.join(confPath, file)fileTime = os.stat(filePath).st_ctime fd = open(filePath, 'r')   line = fd.read()try:dic = json.loads(line)except ValueError, e :print filePath, "can not be loaded as json", eportName = dic.get("if0name") if not portName:portName = dic.get("if0name") print filePath,"can not find the ifname"pciAddr = dic.get("pci_addr")if not pciAddr:print filePath,"can not find the pci"continueisDPDKMode = dic.get("DPDKMode")portNew["portName"],portNew["pciAddr"],portNew["isDPDKMode"],portNew["ctime"]= portName,pciAddr,"false",fileTimeif isDPDKMode :portNew["isDPDKMode"] = "true"if portName not in portList.keys():portList[portName] = portNewelse:oldTime = portList.get(portName).get("ctime")if fileTime > oldTime:portList.pop(portName)portList[portName] = portNewreturn portListdef printPortList(portList):for portName in portList.keys():print ("portName:{:<10} isDPDKMode:{:<8}PCI:{:<}".format(portName,portList.get(portName).get("isDPDKMode"),portList.get(portName).get("pciAddr")))if __name__  == "__main__":usage = "usage: %prog [options] arg"parser = optparse.OptionParser(usage)parser.add_option("-p", "--path", dest="path", help="the dir to the confFile, default is \"/opt/pci\" ", default = "/opt/pci")options, args = parser.parse_args()portList = getPci(options.path)if not portList:print "can not find any PCI information in ", options.pathelse:printPortList(portList)

以上~

Kubernetes插件:SRIOV-CNI获取配置信息小脚本相关推荐

  1. java如何取到配置文件中值,从配置文件中获取配置信息的几种方法

    1.利用ResourceBundle类从properties文件中获取配置信息 创建配置文件并写入配置信息 image.png 使用以下代码可以轻松获取配置信息 package com.course. ...

  2. Mapreduce 任务获取配置信息和counters 信息

    获取用户MR 任务配置信息api http://xxxx:8080/proxy/application_1605539278152_9672465/ws/v1/mapreduce/jobs/job_1 ...

  3. vbs获取计算机信息,vbs获取系统硬件信息小脚本

    工作需要,需要获取win服务器的硬件信息,提交给一api 接口,最后用vbs实现了功能,主要是用到了WMI 发包是调用curl.exe来实现的,代码如下: REM '获取IP地址' REM '判断DN ...

  4. Go之开发小功能集合(viper获取配置信息,test编写测试单元,用户目录获取,JWT安全校验,字符串去重,Swag在线接口文档,画字符图像工具,Gin模式的选择,iota枚举,promhttp等)

    提示: 该链接是go语言小工具: https://www.kancloud.cn/congzaifeng/go_third_party_libraries/467593 Go语言学习全面文档:http ...

  5. 【HDFS】HDFS与getconf结合使用,获取配置信息

    1.获取所有参数 [hadoop@node01 ~]$ hdfs getconf hdfs getconf is utility for getting configuration informati ...

  6. php 获取配置信息,PHP系统配置信息的获取

    最进在CSDN上看到了一篇写如何如何获取服务器所在操作系统的一些基本信息.正好自己网站也运用了类似的技术,其中包含了:PHP版本.服务器操作系统等.比l现在总结了一些,分享给大家供大家参考,具体如下: ...

  7. python 模块 wmi 远程连接 windows 获取配置信息

    测试工具应用: https://ask.csdn.net/questions/247013 wmi连接不上报错问题集 https://blog.csdn.net/xcntime/article/det ...

  8. ORACLE 获取配置信息 USERENV函数

    方法一.USERENV## USERENV返回关于当前会话的信息.此信息可以用于编写一个应用程序特定的审计跟踪表或确定特定于语言的角色目前使用的会话. 参数 功能 CLINET_INFO 返回最高可达 ...

  9. Linux终端模式下查看电脑的硬件配置信息小技巧

    原文地址:http://os.51cto.com/art/200803/67281.htm 在图形模式下我们可以很方便的利用Linux的图形工具,点击几下就可以查看到Linux系统的的硬件信息.但是大 ...

最新文章

  1. linux下安装java环境(ubuntu和centos)
  2. 在命令行下进行Oracle用户解锁
  3. 【Keil C51】使用 watch1 来查看变量的值
  4. 栈结构功能实现的伪码展示【数据结构F】
  5. LeetCode MySQL 1098. 小众书籍
  6. mysql xml语句_Mysql语句
  7. 如何根据离散点自动绘制等值线(等高线)之 三角形法
  8. 用@resource注解方式完成属性装配
  9. C语言 main函数
  10. A/B Testing
  11. 如何利用碎片化时间形成知识体系
  12. golang 生成二维码名片 海报
  13. iOS 本地通知基本使用
  14. 医疗和牙科3D打印的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  15. VIJOS 1206 CoVH之再破难关
  16. 广告联盟介绍之——A5广告联盟
  17. 电气隔离 电源模块 升压/充电 实测案例 150V 30W 带四个220UF电解电容并联 300ms
  18. python处理xml文件_实例Python处理XML文件的方法
  19. RN开发问题总结(一)
  20. stm32 hal 库组织分析

热门文章

  1. 软件建模与分析【二】
  2. 利用Origin对曲线进行单线一或者多线段线性拟合
  3. 从大山走出的阿里首席通信科学家,这次要重返课堂
  4. 走迷宫最短距离——广搜
  5. Android——Framework目录分析及系统启动过程以及目录简介
  6. 幼儿园教室计算机数量配备,示范幼儿园标准公布 每班配音响数码相机
  7. 课代表|看懂零信任,必须掌握的专业知识有哪些?
  8. spring core之Ioc介绍
  9. 初出茅庐的小李第92篇博客之看门狗总结
  10. 第78节:Java中的网络编程(上)