3.6. 서비스
서비스는 API에서 지원하는 오브젝트에 대한 작업을 검색, 업데이트, 제거 및 실행하는 서버의 일부입니다.
다음과 같은 두 가지 유형의 서비스가 있습니다.
각 서비스는 서버 내에서 특정 경로 를 통해 액세스할 수 있습니다. 예를 들어 시스템에서 사용 가능한 가상 머신 컬렉션을 관리하는 서비스는 /vms 경로를 통해 에서 사용할 수 있으며, 가상 머신 123 을 관리하는 서비스는 /vms/123 을 통해 사용할 수 있습니다.
모든 종류의 서비스에는 수행할 수 있는 작업을 나타내는 일련의 메서드 가 있습니다. 오브젝트 컬렉션을 관리하는 서비스에는 일반적으로 목록 및 추가 메서드가 있습니다. 특정 오브젝트를 관리하는 서비스에는 일반적으로 get,update 및 remove 메서드가 있습니다. 또한 서비스에는 덜 일반적인 작업을 나타내는 동작 메서드가 있을 수도 있습니다. 예를 들어 Vm 서비스에는 가상 시스템을 시작하는 데 사용되는 시작 방법이 있습니다.
더 일반적인 메서드의 경우 메서드 이름과 HTTP 메서드 이름 사이에 직접 매핑이 있습니다.For the more usual methods there is a direct mapping between the name of the method and the name of the HTTP method:
| 메서드 이름 | HTTP 방법 |
|---|---|
|
| POST |
|
| GET |
|
| GET |
|
| PUT |
|
| DELETE |
HTTP 요청에 사용된 경로는 /ovirt-engine/api 접두사가 있는 서비스의 경로입니다.
예를 들어, 가상 머신 목록 요청은 HTTP GET 메서드와 /vms 경로를 사용하여 다음과 같아야 합니다.
GET /ovirt-engine/api/vms
작업 메서드의 경우 HTTP 메서드는 항상 POST 이며 메서드의 이름은 경로에 접미사로 추가됩니다.For action methods the HTTP method is always POST , and the name of the method is added as a suffix to the path. 예를 들어 가상 머신( 123 )을 시작하는 요청은 HTTP POST 메서드와 /vms/123/start 경로를 사용하여 다음과 같아야 합니다.
POST /ovirt-engine/api/vms/123/start
각 방법에는 매개 변수 집합이 있습니다.
매개변수는 다음 두 가지 범주로 분류됩니다.
- 기본 매개변수
-
main 매개변수는 검색, 추가 또는 업데이트되는 오브젝트 또는 컬렉션에 해당합니다. 이 매개 변수는
add,get,list및update메서드에만 적용되며, 메서드당 이러한 기본 매개 변수 하나만 있습니다. - 보조 매개변수
- 나머지 매개 변수
예를 들어 가상 시스템을 추가하는 작업에는 vm,clone 및 clone_permissions 라는 세 가지 매개 변수가 있습니다. main 매개 변수는 추가된 오브젝트를 설명하는 vm 입니다. clone 및 clone_permissions 매개변수는 보조 매개 변수입니다.
input에 사용할 때 main 매개변수는 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>
작업 방법에는 보조 매개 변수만 있습니다. 입력 및 출력에 사용할 수 있으며 작업 요소로 래핑된 요청 본문에 포함되어야 합니다. 예를 들어 가상 시스템을 시작하는 데 사용되는 작업 방법에는 vm 매개 변수가 있어가상 시스템을 시작하는 방법을 설명하고, use_cloud_init 매개 변수를 사용하여 게스트 운영 체제를 구성해야 하는지 여부를 지정합니다. https://cloudinit.readthedocs.io 따라서 cloud-init 를 사용하여 가상 머신 123 을 시작하는 전체 요청은 XML을 사용할 때 다음과 같이 표시됩니다.
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>