这是一个用于FABRIC的信息模型实用程序包
项目描述
信息模型实用程序
本存储库中有多个库和实用程序,有助于将来自各种来源的信息转换为FABRIC信息模型
实用程序库
该库使用不同的来源提取构建FABRIC控制框架的站点和网络广告模型所需的信息
- fimutil.ralph - 使用Ralph库存系统REST API创建站点模型
- fimutil.netam - 使用NSO和其他来源创建网络模型
- fimutil.al2s - 使用Internet2虚拟网络API创建网络模型
Ralph REST
由于Ralph以嵌套字典的形式呈现信息,该库使用PyJQ映射必要的属性。例如,服务器的模型名称可以找到为.results[0].model.category.name
,这意味着'results'字典,然后取列表的第一个元素(索引0),然后遵循字典层次结构['model']['category']['name']。如果找不到指定的字段,则抛出RalphJSONError
。每个类都有自己的字段映射,可以从JSON文档中获取这些字段。
当需要时,将根据初始文档中找到的更多URL进行更多REST调用,以确定特定资源资产的具体信息。
库定义了多个资产类(所有都是基础Asset类的子类),每个类都知道如何解析自身及其可能的子组件。它还定义了一个帮助调用Ralph REST API的类。因此,获取单个工作者的信息可以像这样简单完成:
ralph = RalphURI(token=args.token, base_uri=args.base_uri)
worker = WorkerNode(uri=worker_search_uri, ralph=ralph)
worker.parse()
print(worker)
注意:我们为如何将信息存储在Ralph中以支持FABRIC硬件创建了一系列约定。Ansible脚本根据这些约定从硬件中抓取信息到Ralph。其他人可能决定以不符合这些约定的方式在Ralph中存储相同的信息,这将使本包中的实用程序变得无用。
最终用户实用程序
使用Pip安装包(参见安装部分)。实用程序应在PATH上。从Ralph GUI获取Ralph API令牌以及NSO的用户名/密码。
scan_worker.py
根据FQDN扫描单个工作节点,并返回有关它及其组件的信息。
调用
$ scan_worker.py -w <worker FQDN> -t <Ralph API Token> -b https://hostname/api/
该实用程序足够智能,可以尝试丢弃不需要反映在信息模型中的组件(内部工作磁盘、iDrac或断开连接的端口等)
您可以在Ralph中的个人资料页找到您的Ralph API令牌。
scan_site.py
类似于上述内容,搜索站点(工作节点、数据交换机、存储)的所有可用组件,并打印找到的内容或将它们保存到模型中。
调用
$ scan_site.py -b https://hostname/api/ -s <site acronym> -t <token> -p
打印从Ralph收集的信息
$ scan_site.py -b https://hostname/api/ -s <site acronym> -t <token> -a <street address string> -m <model name>.graphml -c <config file>
将站点模型保存为GraphML格式的文件。
强烈建议使用-a
选项(以支持切片的GIS风格可视化),代码会自动测试提供的邮政地址,以确保它可以解析为经纬度坐标。
您还可以使用--brief
选项与-p
一起使用,以获得更简短的打印输出。
要生成站点JSON文件,请使用-j
或--json
后跟一个文件名。
选项-p
、-m
和-j
可以一起使用(即生成模型、打印输出和JSON文件)。如果没有指定任何一个,则扫描站点,但是不会生成额外的输出。
配置文件(默认为.scan-config.json
)允许静态覆盖某些扫描的详细信息
- 允许站点声明它正在使用其他站点的DP交换机
文件的通用格式示例如下(SITE1、SITE2都是大写站点名称)
{
"ram_offset": 24
"SITE1": {
"dpswitch": {
"URL": <URL of SITE2's dp switch in Ralph>,
"Site": "SITE2"
},
"ptp": true,
"storage": {
"Disk": "500TB"
},
"workers": {
<worker FQDN>: {
"Disk": "100TB",
"Core": "15",
"RAM": "2TB",
"CPU": "4",
"cpu_allocation_ratio": 1
}
},
"mac_offset": "f2:ab"
"connected_ports": [ "HundredGigE0/0/0/15" ]
}
}
ram_offset
指定从实际RAM值中减去的偏移量。这是为工作器上的NOVA分配的RAM所需的调整。mac_offset
旨在与OpenStack站点一起使用,以帮助为vNICs生成唯一的MAC地址。请注意,mac_offset的第一个八位字节必须是偶数。
connected_ports
仅对生成JSON文件有效(不影响ARM),然后将其他端口(不包括上行链路和设施端口)放入管理DOWN状态。
cpu_allocation_ratio
旨在启用站点超订阅时使用。默认情况下,此值设置为1,表示没有超订阅。对于EDC/EDUKY,此值可能设置为16,表示模型中的总核心数将乘以这个数字。
scan_net.py
类似于上述内容,查询NSO、PCE(未来工作)以创建站点间网络的模型。
调用
$ scan_net.py -c config_file -m <model name>.graphml --isis-link-validation
将模型保存为GraphML格式的文件,其中指定了-m
。
可选的--isis-link-validation
启用通过检查SR-PCE的IPv4拓扑中的IS-IS邻接关系来验证和验证活动链路。如果没有它,模型生成将仅依赖于NSO信息。
可选的-c
参数指向一个包含NSO和SR-PCE REST认证参数的YAML配置文件。如果没有指定,默认位置是$HOME/.netam.conf或/etc/netam.conf。下面是一个示例:
nso_url: https://192.168.11.222/restconf/data
nso_user: admin
nso_pass: xxxxx
sr_pce_url: http://192.168.13.3:8080/topo/subscribe/txt
sr_pce_user: admin
sr_pce_pass: xxxxx
sites_config: ...NetworkController/device-config/ansible/inventory/sites.yaml
使用NetworkController/device-config/ansible/inventory/fabric-cisco-dev.py --yaml
预先生成sites_config
yaml文件。
scan_al2s.py
类似于上述内容,查询NSO、PCE(未来工作)以创建站点间网络的模型。
调用
$ scan_al2s.py -c config_file -m <model name>.graphml
将模型保存为GraphML格式的文件,其中指定了-m
。
可选的-c
参数指向一个包含NSO和SR-PCE REST认证参数的YAML配置文件。如果没有指定,默认位置是$HOME/al2s.conf或/etc/al2s.conf。下面是一个示例:
api_base_url: https://api.ns.internet2.edu
api_access_key: xxx-xxx-xxx
generate_instance_flavors.py
一个工具,根据CPU、RAM和磁盘的排列组合生成OpenStack VM类型的列表。
可以将结果输出为三种格式:CSV、用于FIM(可作为FIM目录数据文件的一部分)的JSON以及用于Ansible任务(用于将类型加载到OpenStack中)的JSON。
usage: generate_instance_flavors.py [-h] [-f FILE] [-o FORMAT] [-d DELIMITER] [-i DIALECT]
optional arguments:
-h, --help show this help message and exit
-f FILE, --file FILE output CSV file
-o FORMAT, --format FORMAT
CSV, JSON, JSONA (JSON for Ansible), defaults to CSV
-d DELIMITER, --delimiter DELIMITER
Delimiter character to use for CSV format
-i DIALECT, --dialect DIALECT
CSV dialect (excel, unix), defaults to excel
典型用法是
$ generate_instance_flavors.py -o JSONA -f flavors.json
安装
使用
您可以使用virtualenv或直接安装
$ pip install fimutil
开发
在Python 3.9下开发。使用virtualenv,以下设置应该可以工作
$ git clone https://github.com/fabric-testbed/information-model-utils.git
$ mkvirtualenv -r requirements.txt fim-utils
$ cd information-model-utils/utilities/
$ python scan_worker.py <options>
请注意,要作为依赖项安装PyJQ,您需要在系统上安装automake
。因此,请使用yum install automake
或brew install automake
或类似的命令。
构建和打包
使用(请确保先运行pip install flit
)
$ flit build
$ flit publish
项目详情
下载文件
下载适合您平台文件的文件。如果您不确定要选择哪个,请了解更多关于安装包的信息。
源分布
构建分布
fim-utils-1.7.2.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ed041191da8ae400f8a57ace65a57c62f9a01482d4bf3aec00cfec0c502d3da8 |
|
MD5 | 114fd3ded9e71740d62bbcf12550874c |
|
BLAKE2b-256 | cf19844d1c7d060ae18efc3be4e2c4e1a934a3f3e903188a1ef5b29e10dc4a24 |
fim_utils-1.7.2-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | be5ab7bb088e902fc7771e61866801dd658a883d0bc58ba06b08adf8eccdf02a |
|
MD5 | 9f6fa7a5ede10131a1cc751df41fe6dc |
|
BLAKE2b-256 | 0e46d82c78c3ff90505216a1fb47686409a4c2a70546df7d262ee49c47298499 |