openSUSE:构建服务概念请求
请求
构建服务将拥有一个通用的请求系统。从合并请求或提交请求的需求出发,我们通过讨论发现,构建服务可能受益于一个更通用的请求系统。
这使得设置通用的事情(例如概述页面、报告、通知和工作流功能)来处理所有待处理的请求变得更容易,这些都应该在主题下讨论。
除了提交请求之外,请求示例包括重命名请求、删除请求和用户添加请求。(这些尚未存在)。
XML中的请求数据结构将包含一个通用部分,其中包含所有请求通用的数据,以及一个包含针对特定请求类型信息的专业化部分。
通用部分包含诸如生命周期信息之类的元素,这些信息跟踪请求上的更改。
请求数据结构
这是基于XML的请求数据结构的简短说明。
示例:提交请求
这是一个示例,用于说明用户请求将私有软件包中的补丁提交到官方软件包。
<?xml version="1.0" encoding="UTF-8"?>
<request id="4711">
<action type="submit">
<source project="home:kfreitag" package="kraft_jp" />
<target project="home:krafti" package="kraft" />
</action>
<name>Tritratrallala Patch</name>
<description>This patch fixes japanese.</description>
<state name="rejected" who="bauersman" when="2008-01-07T12:23:00">
<comment>Breaks everything except japanese</comment>
</state>
<history name="new" who="freitag" when="2008-01-05T03:51:00/>
</request>
请求的第一部分包含请求特定的部分,该部分由submit标签包围。
通用请求数据
通用请求数据包含以下元素名称, description, state和history。当请求存储在服务器上时,会添加一个唯一的ID作为根元素的属性request。
历史
历史记录元素表示请求经历过的状态。每当请求状态更改时,都会添加一个新的history元素。
每个状态标签包含状态的名称、将请求移动到该状态的人员的名称以及时间。
当前存在的状态包括:new(新建)、deleted(删除)、declined(拒绝)、accepted(接受)、revoked(撤销)和 review(审核)。
状态具有一个comment标签,用于说明请求移动到该状态的原因,例如拒绝原因。它可以为空。
请求处理
请求主要通过软件创建,该软件使用户能够执行导致请求的操作,例如创建对他们不拥有的软件包的更改。请求不应由用户直接创建。
API调用定义
请求创建
通过发送
POST /request?cmd=create
创建请求。初始请求文档必须发送到请求主体中,并且不应包含id属性或历史记录元素。成功后(HTTP 200),API将响应包含生成的唯一ID的请求文档。发生错误时,将返回默认错误XML。
列出请求
可以通过带有其数字ID的直接URL访问单个请求
GET /request/<id>
用户和项目的请求列表都可通过搜索界面获得
GET /search/request/<requesttype>?match
例如
GET /search/request?match=state/@name='new'%20and%20submit/target/@project='openSUSE%3ATools'
列出“new”状态下的所有请求,并将其定向到openSUSE:Tools项目。
这将返回与查询匹配的所有请求的联合集合。
更改请求状态
要更改请求的状态,请将POST发送到请求URL
POST /request/<id>
,并带有参数cmd=changestate&newstate=<state>。用户名将从身份验证子系统中获取。
要完全删除请求,必须将状态更改为deleted,或者发出DELETE请求
DELETE /request/<id>
修改请求
要修改请求的属性(例如描述),请发出PUT请求
PUT /request/<id>
请求文档必须发送到HTTP请求主体中;id属性和历史记录元素将被忽略并设置为适当的值。