跳转到主要内容

这是一个用于FABRIC的信息模型实用程序包

项目描述

PyPI

信息模型实用程序

本存储库中有多个库和实用程序,有助于将来自各种来源的信息转换为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 automakebrew install automake或类似的命令。

构建和打包

使用(请确保先运行pip install flit

$ flit build
$ flit publish

项目详情


发布历史 发布通知 | RSS源

下载文件

下载适合您平台文件的文件。如果您不确定要选择哪个,请了解更多关于安装包的信息。

源分布

fim-utils-1.7.2.tar.gz (42.1 kB 查看哈希值)

上传时间

构建分布

fim_utils-1.7.2-py3-none-any.whl (49.1 kB 查看哈希值)

上传时间: Python 3

支持者