3.8. 링크 다음
API는 관련 오브젝트에 대한 참조를 링크로 반환합니다. 예를 들어 가상 머신이 검색되면 디스크 연결 및 네트워크 인터페이스 카드에 대한 링크가 포함됩니다.
<vm id="123" href="/ovirt-engine/api/vms/123"> ... <link rel="diskattachments" href="/ovirt-engine/api/vms/123/diskattachments"/> <link rel="nics" href="/ovirt-engine/api/vms/123/nics"/> ... </vm>
연결된 오브젝트에 대한 전체 설명은 별도의 요청을 전송하여 검색할 수 있습니다.
GET /ovirt-engine/api/vms/123/diskattachments GET /ovirt-engine/api/vms/123/nics
그러나 경우에 따라 동일한 요청에서 연결된 정보를 검색하기 위해 API를 사용하는 애플리케이션이 더 편리합니다. 예를 들어 추가 네트워크 왕복에서 허용되지 않는 오버헤드가 발생할 때 또는 다중 요청이 불안정한 방식으로 애플리케이션 코드를 복잡할 때 유용합니다. 이러한 사용 사례의 경우 API는 애플리케이션이 하나의 요청만 사용하여 연결된 정보를 검색할 수 있는 follow
매개 변수를 제공합니다.
다음
매개 변수의 값은 쉼표로 구분된 문자열 목록입니다. 이러한 각 문자열은 연결된 개체의 경로 입니다. 예를 들어 위의 예에서 디스크 첨부 파일 및 NIC를 검색하려면 요청의 다음과 같아야 합니다.
GET /ovirt-engine/api/vms/123?follow=disk_attachments,nics
그러면 다음과 같은 응답이 반환됩니다.
<vm id="123" href="/ovirt-engine/api/vms/123"> ... <disk_attachments> <disk_attachment id="456" href="/ovirt-engine/api/vms/123/diskattachments/456"> <active>true</active> <bootable>true</bootable> <interface>virtio_scsi</interface> <pass_discard>false</pass_discard> <read_only>false</read_only> <uses_scsi_reservation>false</uses_scsi_reservation> <disk id="789" href="/ovirt-engine/api/disks/789"/> </disk_attachment> ... </disk_attacments> <nics> <nic id="234" href="/ovirt-engine/api/vms/123/nics/234"> <name>eth0</name> <interface>virtio</interface> <linked>true</linked> <mac> <address>00:1a:4a:16:01:00</address> </mac> <plugged>true</plugged> </nic> ... </nics> ... </vm>
연결된 개체의 경로는 이전 예제와 같이 단일 단어일 수 있거나 중첩된 데이터를 요청하기 위해 점으로 구분된 일련의 단어일 수 있습니다. 예를 들어 이전 예제에서는 disk_attachments
를 사용하여 디스크 첨부 파일의 전체 설명을 검색했지만 각 디스크 연결에는 디스크 링크가 포함되어 있습니다. 디스크에 대한 링크도 따르려면 다음 요청을 사용할 수 있습니다.
GET /ovirt-engine/api/vms/123?follow=disk_attachments.disk
그러면 다음과 같은 응답이 표시됩니다.
<vm id="123" href="/ovirt-engine/api/vms/123"> <disk_attachments> <disk_attachment id="456" href="/ovirt-engine/api/vms/123/diskattachments/456"> <active>true</active> <bootable>true</bootable> <interface>virtio_scsi</interface> <pass_discard>false</pass_discard> <read_only>false</read_only> <uses_scsi_reservation>false</uses_scsi_reservation> <disk id="789" href="/ovirt-engine/api/disks/789"> <name>mydisk</name> <description>My disk</description> <actual_size>0</actual_size> <format>raw</format> <sparse>true</sparse> <status>ok</status> <storage_type>image</storage_type> <total_size>0</total_size> ... </disk> </disk_attachment> ... </disk_attachments> ... </vm>
경로는 필요에 따라 자세히 만들 수 있습니다. 예를 들어 디스크의 통계도 가져오려면 다음을 수행합니다.
GET /ovirt-engine/api/vms/123?follow=disk_attachments.disk.statistics
여러 경로 요소와 여러 경로를 결합할 수 있습니다. 예를 들어 디스크 연결 및 네트워크 인터페이스 카드를 가져오려면 둘 다 통계가 있습니다.
GET /ovirt-engine/api/vms/123?follow=disk_attachments.disk.statistics,nics.statistics
오브젝트를 검색하는 거의 모든 작업은 follow
매개 변수를 지원하지만 일부 작업에서 지원하지 않을 수 있으므로 참조 문서를 명시적으로 확인하거나 최상의 성능을 얻기 위해 사용하는 방법에 대한 조언을 제공할 수 있습니다.
다음
매개 변수를 사용하여 오버헤드를 클라이언트 측에서 서버 측으로 이동합니다. 추가 데이터를 요청할 때 서버에서 기본 데이터를 가져와서 병합해야 합니다. 서버 측에서 CPU 및 메모리를 사용하는 경우 대부분의 경우 추가 데이터베이스 쿼리가 필요합니다. 이는 특히 대규모 환경에서 서버의 성능에 부정적인 영향을 미칠 수 있습니다. 실제 환경에서 애플리케이션을 테스트하고 방금 설명한 경우에만 다음
매개 변수를 사용하십시오.