一键导入
fabric-resource-discovery
Query FABRIC testbed sites, available resources, hosts, images, and component types
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Query FABRIC testbed sites, available resources, hosts, images, and component types
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | fabric-resource-discovery |
| description | Query FABRIC testbed sites, available resources, hosts, images, and component types |
| allowed-tools | ["Read","Grep","Glob","Write","Edit","Bash"] |
When the user asks about FABRIC sites, resources, available hardware, images, or capacity, generate code to discover and query testbed resources. This skill is also auto-invoked when context suggests the user needs resource information.
Always assume FABlib is already initialized as fablib. If unsure, prepend initialization code.
# List all sites with details
fablib.list_sites(
output=None, # "text", "pandas", "json", "list" (default: pandas in notebook)
fields=None, # List of field names to display
quiet=False, # Suppress printed output
filter_function=None, # Lambda to filter sites
pretty_names=True, # Use human-readable field names
start=None, # datetime: future availability window start
end=None, # datetime: future availability window end
)
# List hosts at sites
fablib.list_hosts(
output=None,
fields=None,
quiet=False,
filter_function=None,
)
# Get a random site (useful for testing)
fablib.get_random_site(
avoid=None, # List of site names to avoid
filter_function=None, # Lambda to filter eligible sites
update=True, # Refresh resource data
) -> str
# Get multiple random sites
fablib.get_random_sites(
count=1,
avoid=None,
filter_function=None,
update=True,
) -> list[str]
# Get available OS images
fablib.get_image_names() -> dict[str, dict]
# Returns: {"image_name": {"default_user": "...", "description": "..."}, ...}
default_ubuntu_24 — Ubuntu 24.04 (default if not specified)default_ubuntu_22 — Ubuntu 22.04default_ubuntu_20 — Ubuntu 20.04default_centos_9_stream — CentOS 9 Streamdefault_centos_8 — CentOS 8default_rocky_9 — Rocky Linux 9default_rocky_8 — Rocky Linux 8default_debian_12 — Debian 12default_fedora_41 — Fedora 41Use these string values with node.add_component(model=...):
| Model String | Description |
|---|---|
NIC_Basic | Single port 100 Gbps SR-IOV VF on ConnectX-6 |
NIC_ConnectX_5 | Dual port 25 Gbps Mellanox ConnectX-5 |
NIC_ConnectX_6 | Dual port 100 Gbps Mellanox ConnectX-6 |
NIC_ConnectX_7_100 | ConnectX-7 100 Gbps |
NIC_ConnectX_7_400 | ConnectX-7 400 Gbps |
NIC_BlueField_2_ConnectX_6 | BlueField-2 SmartNIC |
| Model String | Description |
|---|---|
GPU_TeslaT4 | NVIDIA Tesla T4 |
GPU_RTX6000 | NVIDIA RTX 6000 |
GPU_A30 | NVIDIA A30 |
GPU_A40 | NVIDIA A40 |
| Model String | Description |
|---|---|
NVME_P4510 | Intel P4510 NVMe SSD |
| Model String | Description |
|---|---|
FPGA_Xilinx_U280 | Xilinx Alveo U280 |
FPGA_Xilinx_SN1022 | Xilinx SN1022 |
Filter functions receive a site dict. Use pretty_names=False on list_sites() to see programmatic field names. The non-pretty field names for filter functions are:
_available, _capacity, or _allocated)| Field Prefix | Resource |
|---|---|
cores | CPU cores |
ram | RAM (GB) |
disk | Disk (GB) |
nic_basic | NIC_Basic (shared 100G) |
nic_connectx_5 | ConnectX-5 (25G) |
nic_connectx_6 | ConnectX-6 (100G) |
nic_connectx_7_100 | ConnectX-7 (100G) |
nic_connectx_7_400 | ConnectX-7 (400G) |
nvme | NVMe P4510 |
tesla_t4 | GPU Tesla T4 |
rtx6000 | GPU RTX 6000 |
a30 | GPU A30 |
a40 | GPU A40 |
fpga_u280 | FPGA Xilinx U280 |
name — Site namestate — Site stateaddress — Physical addresslocation — (lat, lon) tupleptp_capable — PTP support (bool)hosts — Number of hostsfablib.list_sites()
fablib.list_sites(pretty_names=False)
# Find sites with available RTX6000 GPUs
fablib.list_sites(
output="text",
filter_function=lambda x: x["rtx6000_available"] > 0
)
site = fablib.get_random_site(avoid=["EDC", "FIU"])
print(f"Selected site: {site}")
# Sites with NVMe storage
fablib.list_sites(
output="text",
fields=["name", "nvme_available", "cores_available", "ram_available"],
filter_function=lambda x: x["nvme_available"] > 0,
pretty_names=False,
)
site = fablib.get_random_site(
filter_function=lambda x: x["tesla_t4_available"] > 0
)
print(f"GPU site: {site}")
# Sites with ConnectX-5 NICs west of St. Louis
st_louis_lon = -96.797448
fablib.list_sites(
filter_function=lambda x: x["nic_connectx_5_available"] > 2
and x["location"][1] < st_louis_lon
)
fablib.list_sites(filter_function=lambda x: x["ptp_capable"] is True)
sites = fablib.get_random_sites(
count=4,
filter_function=lambda x: x["rtx6000_available"] > 0
)
print(f"Selected sites: {sites}")
fablib.list_hosts(
filter_function=lambda x: x["site"] == "TACC"
)
from datetime import datetime, timezone, timedelta
start = datetime.now(timezone.utc) + timedelta(days=1)
end = start + timedelta(days=1)
fablib.list_sites(start=start, end=end)
site_list = fablib.list_sites(output="list", quiet=True)
for site in site_list:
print(f"Site: {site['name']}, Cores: {site['cores_available']}")
fablib.list_facility_ports()
fablib.list_links()
Run iPerf3 network performance benchmarks with optional CPU pinning and SmartNIC optimization
Generate FABRIC testbed environment setup, configuration validation, and SSH key management code
Deploy Docker containers and Kubernetes clusters on FABRIC nodes
Connect FABRIC to external testbeds via facility ports and set up port mirroring
Provision and flash Xilinx U280 FPGAs on FABRIC nodes
Provision GPU nodes on FABRIC with driver installation and CUDA setup