최신판 |
당신의 편집 |
52번째 줄: |
52번째 줄: |
|
| |
|
| * <code>ERROR</code> (오류 발생 시) | | * <code>ERROR</code> (오류 발생 시) |
| :서버를 생성할 때, 이 작업은 비동기적으로 새로운 서버를 프로비저닝합니다. 이 작업의 진행 상황은 요청된 이미지의 위치, 네트워크 I/O, 호스트 로드, 선택된 플레이버 등 여러 요인에 따라 달라집니다. 요청의 진행 상황은 /servers/{server_id}에 대해 '''GET''' 요청을 수행하여 진행률 속성(0%에서 100% 완료)을 확인할 수 있습니다. 새로 생성된 서버에 대한 전체 URL은 <code>Location</code> 헤더를 통해 반환되며, 서버 표현의 <code>self</code>와 <code>bookmark</code> 링크로 사용할 수 있습니다. 서버를 생성할 때 서버 ID, 링크, 관리 비밀번호만 반환되는 것이 보장됩니다. 추가 속성은 서버에 대한 후속 '''GET''' 작업을 수행하여 조회할 수 있습니다. | | :서버를 생성할 때, 이 작업은 비동기적으로 새로운 서버를 프로비저닝합니다. 이 작업의 진행 상황은 요청된 이미지의 위치, 네트워크 I/O, 호스트 로드, 선택된 플레이버 등 여러 요인에 따라 달라집니다. 요청의 진행 상황은 /servers/{server_id}에 대해 '''GET''' 요청을 수행하여 진행률 속성(0%에서 100% 완료)을 확인할 수 있습니다. 새로 생성된 서버에 대한 전체 URL은 Location 헤더를 통해 반환되며, 서버 표현의 <code>self</code>와 <code>bookmark</code> 링크로 사용할 수 있습니다. 서버를 생성할 때 서버 ID, 링크, 관리 비밀번호만 반환되는 것이 보장됩니다. 추가 속성은 서버에 대한 후속 '''GET''' 작업을 수행하여 조회할 수 있습니다. |
|
| |
|
| ==서버 쿼리== | | ==서버 쿼리== |
| 서버를 쿼리하는 데 두 가지 API가 있습니다: <code>GET /servers</code>와 <code>GET /servers/detail</code>. 이 두 API는 쿼리 옵션을 사용하여 쿼리 결과를 필터링하는 것을 지원합니다.
| |
|
| |
| 사용자 역할에 따라 사용할 수 있는 쿼리 옵션 세트가 다릅니다:
| |
|
| |
| * 일반 사용자는 제한된 서버 속성 세트만 쿼리 옵션으로 사용할 수 있습니다. 지원되는 옵션은 다음과 같습니다:
| |
| ** <code>changes-since</code>
| |
| ** <code>flavor</code>
| |
| ** <code>image</code>
| |
| ** <code>ip</code>
| |
| ** <code>ip6</code> (버전 2.5에서 새로 추가됨)
| |
| ** <code>name</code>
| |
| ** <code>not-tags</code> (버전 2.26에서 새로 추가됨)
| |
| ** <code>not-tags-any</code> (버전 2.26에서 새로 추가됨)
| |
| ** <code>reservation_id</code>
| |
| ** <code>status</code>
| |
| ** <code>tags</code> (버전 2.26에서 새로 추가됨)
| |
| ** <code>tags-any</code> (버전 2.26에서 새로 추가됨)
| |
| ** <code>changes-before</code> (버전 2.66에서 새로 추가됨)
| |
| ** <code>locked</code> (버전 2.73에서 새로 추가됨)
| |
| ** <code>availability_zone</code> (버전 2.83에서 새로 추가됨)
| |
| ** <code>config_drive </code>(버전 2.83에서 새로 추가됨)
| |
| ** <code>key_name</code> (버전 2.83에서 새로 추가됨)
| |
| ** <code>created_at</code> (버전 2.83에서 새로 추가됨)
| |
| ** <code>launched_at</code> (버전 2.83에서 새로 추가됨)
| |
| ** <code>terminated_at</code> (버전 2.83에서 새로 추가됨)
| |
| ** <code>power_state</code> (버전 2.83에서 새로 추가됨)
| |
| ** <code>task_state</code> (버전 2.83에서 새로 추가됨)
| |
| ** <code>vm_state</code> (버전 2.83에서 새로 추가됨)
| |
| ** <code>progress</code> (버전 2.83에서 새로 추가됨)
| |
| ** <code>user_id</code> (버전 2.83에서 새로 추가됨)
| |
| :기타 옵션은 nova에 의해 조용히 무시됩니다.
| |
|
| |
| * 관리자의 경우 대부분의 서버 속성을 쿼리 옵션으로 사용할 수 있습니다. Ocata 릴리스 이전에는 서버의 데이터베이스 스키마에 있는 필드가 쿼리 옵션으로 노출되어 예상치 못한 API 변경을 초래할 수 있었습니다. Ocata 릴리스 이후로는 쿼리 옵션의 정의와 데이터베이스 스키마가 분리되었습니다. 이는 서버 API 응답에서 속성 명명과 쿼리 옵션 명명이 다른 이유이기도 합니다.
| |
|
| |
| 사전조건: 다음과 같은 정보가 있는 클라우드에 2개의 서버가 존재합니다:
| |
|
| |
| <syntaxhighlight lang='json'>
| |
| {
| |
| "servers": [
| |
| {
| |
| "name": "t1",
| |
| "OS-EXT-SRV-ATTR:host": "devstack1",
| |
| ...
| |
| },
| |
| {
| |
| "name": "t2",
| |
| "OS-EXT-SRV-ATTR:host": "devstack2",
| |
| ...
| |
| }
| |
| ]
| |
| }
| |
| </syntaxhighlight>
| |
|
| |
| ;<nowiki>예시: 관리자 전용 옵션이 있는 일반 사용자 쿼리(서버 조회)</nowiki>
| |
|
| |
| 비관리자 컨텍스트로 요청: <code>GET /servers/detail?host=devstack1</code>
| |
|
| |
| {{NOTE}}
| |
| host 쿼리 매개변수는 관리자 사용자만 사용할 수 있으며, 비관리자 사용자가 지정한 경우 쿼리 매개변수가 무시됩니다. 따라서 이 예시에서는 devstack1과 devstack2의 서버가 모두 반환됩니다.
| |
| {{/NOTE}}
| |
|
| |
| 응답:
| |
| <syntaxhighlight lang='json'>
| |
| {
| |
| "servers": [
| |
| {
| |
| "name": "t1",
| |
| ...
| |
| },
| |
| {
| |
| "name": "t2",
| |
| ...
| |
| }
| |
| ]
| |
| }
| |
| </syntaxhighlight>
| |
|
| |
| ;<nowiki>예시: 관리자 전용 옵션이 있는 관리자 쿼리(서버 조회)</nowiki>
| |
|
| |
| 관리자 컨텍스트로 요청: <code>GET /servers/detail?host=devstack1</code>
| |
|
| |
| 응답:
| |
| <syntaxhighlight lang='json'>
| |
| {
| |
| "servers": [
| |
| {
| |
| "name": "t1",
| |
| ...
| |
| }
| |
| ]
| |
| }
| |
| </syntaxhighlight>
| |
|
| |
| 특별한 쿼리 옵션도 있습니다:
| |
| * <code>changes-since</code>: 주어진 시간 이후에 업데이트된 서버를 반환합니다. 자세한 내용은: [[Compute API 효율적 폴링|효율적 폴링]]
| |
| * <code>changes-before</code>: 주어진 시간 이전에 업데이트된 서버를 반환합니다. 자세한 내용은: [[Compute API 효율적 폴링|효율적 폴링]]
| |
| * <code>deleted</code>: 삭제된 서버를 반환(또는 제외)합니다.
| |
| * <code>soft_deleted</code>: 'deleted'의 동작을 수정하여 vm_state가 SOFT_DELETED인 인스턴스를 포함하거나 제외합니다.
| |
| * <code>all_tenants</code>: 관리자가 모든 테넌트의 서버를 쿼리할 수 있게 하는 관리자 전용 옵션입니다.
| |
|
| |
| ;<nowiki>예시: 특별 키 changes-since 또는 changes-before가 있는 사용자 쿼리(서버 조회)</nowiki>
| |
|
| |
| 요청: <code>GET /servers/detail</code>
| |
|
| |
| 응답:
| |
| <syntaxhighlight lang='json'>
| |
| {
| |
| "servers": [
| |
| {
| |
| "name": "t1",
| |
| "updated": "2015-12-15T15:55:52Z",
| |
| ...
| |
| },
| |
| {
| |
| "name": "t2",
| |
| "updated": "2015-12-17T15:55:52Z",
| |
| ...
| |
| }
| |
| ]
| |
| }
| |
| </syntaxhighlight>
| |
|
| |
| 요청: <code>GET /servers/detail?changes-since='2015-12-16T15:55:52Z'</code>
| |
|
| |
| 응답:
| |
| <syntaxhighlight lang='json'>
| |
| {
| |
| {
| |
| "name": "t2",
| |
| "updated": "2015-12-17T15:55:52Z",
| |
| ...
| |
| }
| |
| }
| |
| </syntaxhighlight>
| |
|
| |
| 요청: <code>GET /servers/detail?changes-before='2015-12-16T15:55:52Z'</code>
| |
|
| |
| 응답:
| |
| <syntaxhighlight lang='json'>
| |
| {
| |
| {
| |
| "name": "t1",
| |
| "updated": "2015-12-15T15:55:52Z",
| |
| ...
| |
| }
| |
| }
| |
| </syntaxhighlight>
| |
|
| |
| 요청: <code>GET /servers/detail?changes-since='2015-12-10T15:55:52Z'&changes-before='2015-12-28T15:55:52Z'</code>
| |
|
| |
| 응답:
| |
| <syntaxhighlight lang='json'>
| |
| {
| |
| "servers": [
| |
| {
| |
| "name": "t1",
| |
| "updated": "2015-12-15T15:55:52Z",
| |
| ...
| |
| },
| |
| {
| |
| "name": "t2",
| |
| "updated": "2015-12-17T15:55:52Z",
| |
| ...
| |
| }
| |
| ]
| |
| }
| |
| </syntaxhighlight>
| |
|
| |
| 쿼리 옵션에는 두 가지 종류의 매칭이 있습니다: 정확한 매칭과 정규식 매칭.
| |
|
| |
| ;<nowiki>호스트로 정확한 매칭을 사용한 쿼리(서버 조회)</nowiki>
| |
|
| |
| 관리자 컨텍스트로 요청: <code>GET /servers/detail</code>
| |
|
| |
| 응답:
| |
| <syntaxhighlight lang='json'>
| |
| {
| |
| "servers": [
| |
| {
| |
| "name": "t1",
| |
| "OS-EXT-SRV-ATTR:host": "devstack"
| |
| ...
| |
| },
| |
| {
| |
| "name": "t2",
| |
| "OS-EXT-SRV-ATTR:host": "devstack1"
| |
| ...
| |
| }
| |
| ]
| |
| }
| |
| </syntaxhighlight>
| |
|
| |
| 관리자 컨텍스트로 요청: <code>GET /servers/detail?host=devstack</code>
| |
|
| |
| 응답:
| |
| <syntaxhighlight lang='json'>
| |
| {
| |
| "servers": [
| |
| {
| |
| "name": "t1",
| |
| "OS-EXT-SRV-ATTR:host": "devstack"
| |
| ...
| |
| }
| |
| ]
| |
| }
| |
| </syntaxhighlight>
| |
|
| |
| ;<nowiki>예시: 이름으로 정규식 매칭을 사용한 쿼리(서버 조회)</nowiki>
| |
|
| |
| 관리자 컨텍스트로 요청: <code>GET /servers/detail</code>
| |
|
| |
| 응답:
| |
| <syntaxhighlight lang='json'>
| |
| {
| |
| "servers": [
| |
| {
| |
| "name": "test11",
| |
| ...
| |
| },
| |
| {
| |
| "name": "test21",
| |
| ...
| |
| },
| |
| {
| |
| "name": "t1",
| |
| ...
| |
| },
| |
| {
| |
| "name": "t14",
| |
| ...
| |
| }
| |
| ]
| |
| }
| |
| </syntaxhighlight>
| |
|
| |
| 관리자 컨텍스트로 요청: <code>GET /servers/detail?name=t1</code>
| |
|
| |
| 응답:
| |
| <syntaxhighlight lang='json'>
| |
| {
| |
| "servers": [
| |
| {
| |
| "name": "test11",
| |
| ...
| |
| },
| |
| {
| |
| "name": "t1",
| |
| ...
| |
| },
| |
| {
| |
| "name": "t14",
| |
| ...
| |
| }
| |
| ]
| |
| }
| |
| </syntaxhighlight>
| |
|
| |
| ;<nowiki>예시: 호스트로 정확한 매칭, 이름으로 정규식 매칭을 사용한 쿼리(서버 조회)</nowiki>
| |
|
| |
| 관리자 컨텍스트로 요청: <code>GET /servers/detail</code>
| |
|
| |
| 응답:
| |
| <syntaxhighlight lang='json'>
| |
| {
| |
| "servers": [
| |
| {
| |
| "name": "test1",
| |
| "OS-EXT-SRV-ATTR:host": "devstack"
| |
| ...
| |
| },
| |
| {
| |
| "name": "t2",
| |
| "OS-EXT-SRV-ATTR:host": "devstack1"
| |
| ...
| |
| },
| |
| {
| |
| "name": "test3",
| |
| "OS-EXT-SRV-ATTR:host": "devstack1"
| |
| ...
| |
| }
| |
| ]
| |
| }
| |
| </syntaxhighlight>
| |
|
| |
| 관리자 컨텍스트로 요청: <code>GET /servers/detail?host=devstack1&name=test</code>
| |
|
| |
| 응답:
| |
| <syntaxhighlight lang='json'>
| |
| {
| |
| "servers": [
| |
| {
| |
| "name": "test3",
| |
| "OS-EXT-SRV-ATTR:host": "devstack1"
| |
| ...
| |
| }
| |
| ]
| |
| }
| |
| </syntaxhighlight>
| |
|
| |
| 요청: <code>GET /servers/detail?changes-since='2015-12-16T15:55:52Z'</code>
| |
|
| |
| 응답:
| |
| <syntaxhighlight lang='json'>
| |
| {
| |
| {
| |
| "name": "t2",
| |
| "updated": "2015-12-17T15:55:52Z"
| |
| ...
| |
| }
| |
| }
| |
| </syntaxhighlight>
| |
|
| |
| ==서버 액션== | | ==서버 액션== |
| * '''Reboot'''(재부팅) | | * '''Reboot'''(재부팅) |