CMS运行登记客户

runregistr的Python项目详细描述


构建状态

运行注册表客户端

python客户端从cms run registry中检索和查询数据

安装

pip install runregistry

python版本和虚拟环境

此软件包需要python版本>;=3.6。

在lxplus中使用python 3.6:https://cern.service-now.com/service-portal/article.do?N=KB0000730 还需要虚拟环境,如果您在lxplus中,则应运行以下命令:

virtualenv venv
source venv/bin/activate

身份验证(先决条件)

必须为客户端提供一种访问网格用户证书的方法。

您可以用三种可能的方法来完成此操作:

  1. 手动提供证书(解释如下)。
  2. 在常规路径中提供无密码用户证书(第一个是~\private\,第二个是~.globus\)(解释如下)。
  3. 在环境变量中设置存储证书的路径:cern_certificate_path

手动提供证书

  1. 此处下载网格用户证书
  2. 将其转换为公钥和私钥(证书必须是无密码的。 ):
mkdir -p ~/private
# For next commands Import Password is blank, PEM passphrase needs to be set
openssl pkcs12 -clcerts -nokeys -in myCertificate.p12 -out ~/private/usercert.pem
openssl pkcs12 -nocerts -in myCertificate.p12 -out ~/private/userkey.tmp.pem
openssl rsa -in ~/private/userkey.tmp.pem -out ~/private/userkey.pem

如果您在lxplus中,则此时应完成所有操作,因为包将首先查找~/private/,并且上述命令将在~/private/中设置证书。

如果您想继续手动提供证书,您将不得不修改上面的命令,并将-out放入您记忆中的文件夹中。

然后按以下方式使用客户端:

importrunregistryrun=runregistry.get_run(run_number=328762,cert=(cert,key))

其中cert和key是指向上面生成的usercert.pem和userkey.pem的路径。

用法

跑一次(跑一次):

importrunregistryrun=runregistry.get_run(run_number=328762)

查询几次运行(获取运行):

importrunregistryruns=runregistry.get_runs(run_number={'or':[328762,323555,323444]})

应用自定义筛选器(运行309000到310000之间的编号,其中至少有一个良好的dt lumisection)

importrunregistryruns=runregistry.get_runs(filter={'run_number':{'and':[{'>':309000},{'<':310000}]},'dt-dt':'GOOD'})

请注意,我们使用dt dt('dt'两次)这是因为有多个工作区,第一个'dt'表示我们在dt工作区,第二个'dt'表示我们想要列'dt'。所以状态标志的语法是{workspace}-{column}。如果我们想让tracker工作区的strip列至少有一个lumisection良好,那么查询将如下所示:

importrunregistryruns=runregistry.get_runs(filter={'run_number':{'and':[{'>':309000},{'<':310000}]},'tracker-strip':'GOOD'})

根据属性,您可以使用不同的运算符:

运算符

<表><广告>属性支持的运算符< /广告><正文>数字"="、">;"、"<;"、">;="、"<;="、"<;"、"<;gt;"字符串=,喜欢,不喜欢布尔型=(真,假)日期"="、">;"、"<;"、">;="、"<;="、"<;"、"<;gt;"

使用"like"或"notlike"运算符时,必须用百分比符号包围查询,请参见下面的示例。

当筛选三元组属性(任何好/坏/备用…)时,不能使用任何字符串值,唯一允许的值是严格相等的"=",并且默认设置。允许的值包括good、bad、standby、notset、excluded和empty。

您也可以组合过滤器:

importrunregistryruns=runregistry.get_runs(filter={'run_number':{'and':[{'>':309000},{'<':310000}]},'hlt_key':{'like':'%commissioning2018%'}'significant':{'=':True}})

如果通过观察rr中的网络请求,b应用程序,您要使用网络请求观察到的相同筛选器。只需将ignore_filter_transformation=true传递到任何查询即可。

示例(运行309000到310000之间的编号,其中至少有一个良好的dt lumisection):

pip install runregistry
0

另外,如果通过观察rr web应用程序中的网络请求,您希望获得网络请求中的数据。只需compress_attributes=false,例如:

pip install runregistry
1

尚无法通过注释和原因进行查询

获取数据集

pip install runregistry
2

获取数据集

pip install runregistry
3

获取lumisections

获取lumisects数组

您可以查询运行(或数据集)的lumisections,您将需要运行编号和数据集名称(查询运行时,数据集名称必须为"online")

pip install runregistry
4

响应将是一个包含{workspace}-{column}:{"status":"good/bad/standby…"、"comment":"为范围所做的注释"、"cause":"一个常见的重复原因"}

要获取OMS数据:请使用OMS API。您应该只对rr负责的数据使用run registry。 但是,如果仍要访问OMS lumisections,可以这样做:

上一次运行注册表允许您更改每个数据集的OMS(当时是WBM)属性,如果需要特定的数据集lumisections,可以在第二个参数中提供RR数据集的名称:

pip install runregistry
5

获取lumisection范围

通常会有包含大量lumisects(有些甚至超过5000个)的运行/数据集,因此查询这些类型的lumisects可能会对api造成很大的负担。

检索范围的查询也是可能的,您可以这样做:

pip install runregistry
6

您将收到一个范围数组,除了为每个列声明三元组(注释、状态和原因)外,该数组还将包含两个属性,称为start(范围开始的lumisection)和end(范围结束的lumisection)。

处理响应

运行筛选时,响应的属性分为属于OMS的属性和属于RR的属性(要查看哪些属性属于哪个属性,请参阅下表,或查看响应)。

属于OMS的属性位于"OMS属性"中。

属于RR的属性在"RR属性"中。

可供查询的属性

根据属性类型(数字、字符串、布尔值),请参见上面的运算符表,以了解哪些类型的运算符可用于查询

OMS属性:

<表><广告>属性键入属于 < /广告><正文>运行单元编号编号OMS能量编号OMS一级键字符串OMSb_字段编号OMSHLT U键字符串OMSL1菜单字符串OMS一级费率编号OMS持续时间编号OMS结束lumi编号OMS结束时间日期OMS顺序字符串OMS初始lumi编号OMS时钟类型字符串OMS开始时间日期OMS填充编号编号OMS一级HLT模式字符串OMS上次更新日期OMSLS U持续时间编号OMS稳定光束布尔值OMS触发模式字符串OMSCMSSW U版本字符串OMS录制的"lumi"编号OMS交付_lumi编号OMS第0层传输布尔值OMS一级键已取消字符串OMS填充类型1 字符串OMS填充类型2部分 字符串OMS物理速率 编号OMS物理尺寸 编号OMS填充类型运行时字符串OMS物理计数器 编号OMS一级触发计数器编号OMSl1_hlt_mode_剥离字符串OMSHLT物理吞吐量编号OMS初始缩放指数编号OMS光束存在且稳定布尔值OMS

RR运行属性:

<表><广告>属性键入属于 < /广告><正文>类字符串rr状态字符串rr显著布尔值rr停止原因字符串rr

RR数据集属性:

<表><广告>属性键入属于 < /广告><正文>数据集名称字符串rrdt_状态字符串rrCSC状态字符串rrHLT U状态字符串rrL1t_状态字符串rrrpc_状态字符串rrtau状态字符串rrbtag_状态字符串rrECAL U状态字符串rrHCAL U状态字符串rrlumi_状态字符串rrμu状态字符串rrCTPPS状态字符串rr卡斯托州字符串rrEgamma_状态字符串rr全局状态字符串rrJetMet_状态字符串rr跟踪器状态字符串rr

dt_状态、csc_状态等是数据集的工作区脱机状态,它们可以是打开、关闭或完成。

对于脱机和联机状态标志,也可以进行筛选。属性由{workspace}-{column}组成。例如,如果我们想查询309000到310000之间运行的良好跟踪条数据集,我们可以这样做:

pip install runregistry
7

运行测试

pip install runregistry
8

故障排除

支架

如果您有任何问题,或者客户工作不正常,请随时给我发电子邮件至f.e@cern.ch。或者通过Fabio24的Skype,我也可以在Mattermost上使用。

更新pip包

pip install runregistry
9

FAQ

这是否适用于Python2.7?

< /P>

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
arraylist IndexOutOfBoundsException预防措施不起作用[Java]   java在多个字段上设置唯一约束   java Sonar没有显示测试覆盖范围   java有没有一种直接从我的应用程序发送反馈的方法?   java如何将字符串中的两个值相加?   优先级队列Java TreeSet使用的内存是否比PriorityQueue少?   java如何合并两个参数相同的XML文件?   java RxJava过期订阅   编译器优化反编译工具修改的源代码。java中的类文件   Java Swing GUI按钮和文本字段不会出现。这是一个包含Jbutton和JTextField的测试代码   java如何在stringBuilder中存储日志   swing获取Java中的屏幕大小   使用PDFBox和Swing显示嵌入式字体的java   在Java中打印1到100之间的小数字   数据结构如何在Java中创建数组、ArrayList、堆栈和队列?   java Hibernate onetomany外键   java如何从Groovy中没有“${str}”的字符串创建GString   在Android Studio(java)中创建巨大网格   Java中如何将字符串值转换为布尔值