opensciencegrid/topologyTopology镜像是基于OSG(Open Science Grid)Topology仓库构建的容器化解决方案,用于存储、管理和展示OSG生态系统中的关键注册信息,包括研究项目、虚拟组织(VO)、站点资源拓扑结构等。该镜像提供标准化的数据访问接口,支持直接读取YAML格式原始数据或通过XML接口查询过滤后的资源信息,旨在为OSG站点管理员、VO管理者及研究人员提供统一、便捷的资源信息检索与集成工具。
projects/:研究项目信息,每个项目对应<PROJECT>.yaml文件virtual-organizations/:虚拟组织信息,每个VO对应<VO>.yaml文件,另有REPORTING_GROUPS.yaml存储WLCG metric报告组信息topology/:站点资源拓扑信息,按设施(Facility)→站点(Site)→资源组(Resource Group)层级组织,文件路径格式为<FACILITY>/<SITE>/<RESOURCEGROUP>.yaml(如topology/University of Wisconsin/CHTC/CHTC.yaml)myosg.grid.iu.edu兼容的XML格式数据接口,支持资源查询与过滤oim.grid.iu.edu)和myosg.grid.iu.edu的规范假设镜像已发布至容器仓库(如Docker Hub或OSG私有仓库),可通过以下命令拉取:
bashdocker pull opensciencegrid/topology:latest
以下示例通过容器内Nginx服务暴露XML接口,将仓库数据挂载为卷:
bashdocker run -d \ --name osg-topology \ -p 8080:80 \ -v $(pwd)/topology-data:/app/topology \ # 挂载本地YAML数据目录(可选,默认使用镜像内置数据) -e XML_PORT=80 \ # XML服务端口(容器内) -e DATA_REFRESH_INTERVAL=24h \ # 数据自动刷新间隔(默认24小时) opensciencegrid/topology:latest
创建docker-compose.yml:
yamlversion: '3' services: topology-service: image: opensciencegrid/topology:latest container_name: osg-topology ports: - "8080:80" volumes: - ./topology-data:/app/topology # 本地数据卷(可选) environment: - XML_PORT=80 - DATA_REFRESH_INTERVAL=12h # 每12小时刷新数据 restart: unless-stopped
启动服务:
bashdocker-compose up -d
若挂载了本地数据卷,可通过容器内路径或宿主机挂载目录直接读取YAML文件:
bash# 从宿主机访问挂载的YAML数据 cat ./topology-data/virtual-organizations/ATLAS.yaml # 进入容器访问内置数据 docker exec -it osg-topology cat /app/topology/virtual-organizations/ATLAS.yaml
服务启动后,通过http://<宿主机IP>:8080访问XML接口,支持以下端点:
| 数据类型 | XML接口URL |
|---|---|
| 研究项目 | /miscproject/xml |
| 资源Downtime | /rgdowntime/xml |
| 资源拓扑 | /rgsummary/xml |
| 虚拟组织 | /vosummary/xml |
示例:查询活跃的生产资源(设施ID为***、***):
http://localhost:8080/rgsummary/xml?gridtype=on&gridtype_1=on&facility=on&facility_sel[]=***&facility_sel[]=***
| 参数名 | 说明 | 默认值 |
|---|---|---|
XML_PORT | 容器内XML服务监听端口 | 80 |
DATA_PATH | YAML数据存储路径(容器内) | /app/topology |
DATA_REFRESH_INTERVAL | 数据自动拉取/刷新间隔(如12h、30m) | 24h |
布尔过滤器:
| 参数组合 | 效果 |
|---|---|
active=on&active_value=0 | 仅显示非活跃资源 |
active=on&active_value=1 | 仅显示活跃资源 |
disable=on&disable_value=0 | 仅显示已禁用资源 |
disable=on&disable_value=1 | 仅显示启用资源 |
gridtype=on&gridtype_1=on | 仅显示生产资源 |
gridtype=on&gridtype_2=on | 仅显示非生产(ITB)资源 |
service_hidden_value=0 | 仅显示非隐藏服务(无需service_hidden=on) |
service_hidden_value=1 | 仅显示隐藏服务(无需service_hidden=on) |
has_wlcg=on | 仅显示含WLCG信息的资源 |
ID-based过滤器:
支持按设施、站点、资源组等ID筛选,格式为<ATTRIB>=on&<ATTRIB>_sel[]=<ID1>&<ATTRIB>_sel[]=<ID2>,其中<ATTRIB>可取值:facility(设施ID)、site(站点ID)、rg(资源组ID)、service(服务ID)等。
示例:筛选设施ID为***(Fermilab)和***(UW-Madison)的资源:
/rgsummary/xml?facility=on&facility_sel[]=***&facility_sel[]=***
布尔过滤器:
| 参数组合 | 效果 |
|---|---|
active=on&active_value=0 | 仅显示非活跃VO |
active=on&active_value=1 | 仅显示活跃VO |
disable=on&disable_value=0 | 仅显示已禁用VO |
disable=on&disable_value=1 | 仅显示启用VO |
oasis=on&oasis_value=0 | 仅显示不使用OASIS的VO |
oasis=on&oasis_value=1 | 仅显示使用OASIS的VO |
ID-based过滤器:
按VO ID筛选,格式:vo=on&vo_sel[]=<ID1>&vo_sel[]=<ID2>
示例:筛选VO ID为13(GLOW)、67(HCC)、38(IceCube):
/vosummary/xml?vo=on&vo_sel[]=13&vo_sel[]=67&vo_sel[]=38
若在使用过程中遇到问题或有疑问,请根据支持对象提交工单:
| 主要支持对象 | 工单提交渠道 |
|---|---|
| LHC虚拟组织(VO) | GGUS |
| 其他用户 | OSG Helpdesk |
或发送邮件至:***
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务