搜索

3.6. 服务

download PDF

服务是负责检索、添加更新、删除和执行 API 支持的对象操作的服务器的一部分。

有两种相关的服务:

管理一组对象的服务
这些服务可用于列出现有对象和添加新对象。例如,Vms 服务负责管理系统中可用的虚拟机的集合。
管理特定对象的服务
这些服务负责在特定对象中检索、更新、删除和执行操作。例如,Vm 服务负责管理特定的虚拟机。

每一服务都可通过服务器中的特定路径访问。例如,可以通过路径 /vms 在 中管理系统中可用的虚拟机集合的服务,以及管理虚拟机 123 的服务可通过路径 /vms/123 获取

所有类型的服务都具有一组方法,表示它们可以执行的操作。管理对象集合的服务通常具有 列表添加 方法。管理特定对象的服务通常具有 get、update remove 方法。此外,服务也可能具有代表较少常见操作的操作方法例如,Vm 服务具有一个用于启动虚拟机的 start 方法。

对于更常用的方法,方法名称和 HTTP 方法名称之间存在直接映射:

方法名称HTTP 方法

add

POST

get

GET

list

GET

update

PUT

remove

删除

HTTP 请求中使用的路径是服务的路径,其前缀为 /ovirt-engine/api

例如,列出 虚拟机的请求应如下所示,使用 HTTP GET 方法和路径 /vms:

GET /ovirt-engine/api/vms

对于操作方法,HTTP 方法始终为 POST,方法的名称作为后缀添加到路径中。例如,启动虚拟机 123 的请求 如下所示,使用 HTTP POST 方法和路径 /vms/123/start

POST /ovirt-engine/api/vms/123/start

每种方法具有一组参数。

参数分为两类:

main 参数
main 参数对应检索、添加或更新的对象或集合。这只适用于 addget列表 和更新 方法,每个方法正好有一个这样的主参数。
辅助参数
其余的参数.

例如,添加虚拟机的操作(请参阅 此处)具有三个参数:vm 克隆和 clone _permissions。主要参数是 vm,因为它描述了要添加的对象。cloneclone_permissions 参数是辅助参数。

用于输入的主要参数必须包含在 HTTP 请求的正文中。例如,在添加虚拟机时,类型为 Vm 的 vm 参数必须包含在请求正文中。因此,添加虚拟机的完整请求(包括所有 HTTP 详情)必须如下所示:

POST /ovirt-engine/api/vms HTTP/1.1
Host: myengine.example.com
Authorization: Bearer fqbR1ftzh8wBCviLxJcYuV5oSDI=
Content-Type: application/xml
Accept: application/xml

<vm>
  <name>myvm</name>
  <description>My VM</description>
  <cluster>
    <name>Default</name>
  </cluster>
  <template>
    <name>Blank</name>
  </template>
</vm>

当用于输出时,主要参数包含在响应正文中。例如,添加虚拟机时,vm 参数将包含在响应正文中。因此,完整的响应正文如下所示:

HTTP/1.1 201 Created
Content-Type: application/xml

<vm href="/ovirt-engine/api/vms/123" id="123">
  <name>myvm</name>
  <description>My VM</description>
  ...
</vm>

辅助参数仅允许进行输入(操作方法除外,稍后介绍),且必须作为查询参数包含。例如,当添加将 clone 参数设置为 true 的虚拟机时,完整的请求必须如下所示:

POST /ovirt-engine/api/vms?clone=true HTTP/1.1
Host: myengine.example.com
Authorization: Bearer fqbR1ftzh8wBCviLxJcYuV5oSDI=
Content-Type: application/xml
Accept: application/xml

<vm>
  <name>myvm</name>
  <description>My VM</description>
  <cluster>
    <name>Default</name>
  </cluster>
  <template>
    <name>Blank</name>
  </template>
</vm>

操作方法仅具有次要参数。它们可用于输入和输出,并且它们应包含在请求正文中,并用 action 元素打包。例如,用于启动虚拟机的操作方法(请参阅 此处)有一个 vm 参数,用于描述应当如何启动虚拟机,以及用于指定是否应使用 cloud-init 参数来配置客户机操作系统 的 use_cloud_ init 参数。因此,在使用 XML 时,使用 cloud-init 启动虚拟机 123 的完整请求将如下所示:

POST /ovirt-engine/api/vms/123/start HTTP/1.1
Host: myengine.example.com
Authorization: Bearer fqbR1ftzh8wBCviLxJcYuV5oSDI=
Content-Type: application/xml
Accept: application/xml

<action>
  <use_cloud_init>true</use_cloud_init>
  <vm>
    <initialization>
      <nic_configurations>
        <nic_configuration>
          <name>eth0</name>
          <on_boot>true</on_boot>
          <boot_protocol>static</boot_protocol>
          <ip>
            <address>192.168.0.100</address>
            <netmask>255.255.255.0</netmask>
            <gateway>192.168.0.1</netmask>
          </ip>
        </nic_configuration>
      </nic_configurations>
      <dns_servers>192.168.0.1</dns_servers>
    </initialization>
  </vm>
</action>
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.