가상 폴더
가상 폴더는 여러 다른 세션에서 공유되며, 지속적이고, 재사용 가능한 파일을 제공합니다.
새로운 세션을 생성할 때 가상 폴더를 마운트할 수 있으며, 로컬 파일 시스템의 일반 디렉토리처럼 사용할 수 있습니다. 물론, 가상 폴더의 내용에 대한 읽기/쓰기는 내부적으로 네트워크 파일 시스템을 사용하기 때문에, 주요 스크래치 디렉토리(대부분의 커널에서는 /home/work
)에 비해 성능이 저하될 수 있습니다.
또한, 가상 폴더를 다른 사용자와 공유할 수 있으며, 적절한 권한을 부여하여 초대할 수 있습니다. 현재, 권한은 각각 세 가지 레벨로 구분됩니다: 읽기 전용, 읽기-쓰기, 읽기-쓰기-삭제. 이들은 각각 'ro'
, 'rw'
, 'wd'
라는 짧은 문자열로 표현됩니다. 가상 폴더의 소유자는 폴더에 대해 읽기-쓰기-삭제 권한을 가집니다.
가상 폴더 목록
현재 키페어로 생성된 가상 폴더의 목록을 반환합니다.
URI:
/folders
메소드 :
GET
매개변수
매개변수 |
타입 |
설명 |
---|---|---|
|
|
(선택 사항) 매개 변수가 |
|
|
(선택 사항) 매개 변수가 설정되면, 지정된 그룹에 속한 가상 폴더를 반환합니다. 사용자 유형 가상 폴더에는 영향을 미치지 않습니다. |
응답
HTTP 상태 코드 |
설명 |
---|---|
200 OK |
Success |
필드 |
타입 |
값 |
---|---|---|
(root) |
|
A list of Virtual Folder List Item Object |
예시:
[
{
"name": "myfolder",
"id": "b4b1b16c-d07f-4f1f-b60e-da9449aa60a6",
"host": "local:volume1",
"usage_mode": "general",
"created_at": "2020-11-28 13:30:30.912056+00",
"is_owner": "true",
"permission": "rw",
"user": "dfa9da54-4b28-432f-be29-c0d680c7a412",
"group": null,
"creator": "admin@lablup.com",
"user_email": "admin@lablup.com",
"group_name": null,
"ownership_type": "user",
"unmanaged_path": null,
"cloneable": "false",
}
]
가상 폴더 호스트 목록
새로운 가상 폴더를 만들 수 있는 현재 키페어의 호스트 이름 목록을 반환합니다.
Added in version v4.20190315.
URI:
/folders/_/hosts
메소드 :
GET
매개변수
None
응답
HTTP 상태 코드 |
설명 |
---|---|
200 OK |
Success |
필드 |
타입 |
값 |
---|---|---|
|
|
The default virtual folder host |
|
|
The list of available virtual folder hosts |
예시:
{
"default": "seoul:nfs1",
"allowed": ["seoul:nfs1", "seoul:nfs2", "seoul:cephfs1"]
}
가상 폴더 생성
URI:
/folders
Method:
POST
현재 API 키와 연결된 가상 폴더를 생성합니다.
매개변수
매개변수 |
타입 |
설명 |
---|---|---|
|
|
The human-readable name of the virtual folder |
|
|
(optional) The name of the virtual folder host |
|
|
(선택 사항) 가상 폴더의 목적. 가능한 값은 |
|
|
(선택 사항) 가상 폴더의 기본 공유 권한. 가상 폴더의 소유자는 해당 매개 변수와 관계없이 항상 |
|
|
(선택 사항) 해당 매개 변수가 설정되면 그룹 유형의 가상 폴더가 생성됩니다. 만약 비어 있다면, 사용자 유형의 가상 폴더가 생성됩니다. |
|
|
(선택 사항) 가상 폴더의 쿼터를 바이트 단위로 설정합니다. 하지만 쿼터는 xfs 파일 시스템에서만 지원됩니다. 디렉토리 단위 쿼터를 지원하지 않는 다른 파일 시스템에서는 해당 매개 변수가 무시됩니다. |
예시:
{
"name": "My Data",
"host": "seoul:nfs1"
}
응답
HTTP 상태 코드 |
설명 |
---|---|
201 Created |
커널이 성공적으로 생성되었습니다. |
400 Bad Request |
잘못되었거나 이미 존재하는 가상 폴더와 중복되는 이름입니다. |
406 Not acceptable |
가상 폴더의 개수 제한을 초과했습니다. (예: 가질 수 있는 최대 폴더 개수) |
필드 |
타입 |
값 |
---|---|---|
|
|
The unique folder ID used for later API calls |
|
|
The human-readable name of the created virtual folder |
|
|
The name of the virtual folder host where the new folder is created |
예시:
{
"id": "aef1691db3354020986d6498340df13c",
"name": "My Data",
"host": "nfs1",
"usage_mode": "general",
"permission": "rw",
"creator": "admin@lablup.com",
"ownership_type": "user",
"user": "dfa9da54-4b28-432f-be29-c0d680c7a412",
"group": "",
}
가상 폴더 정보 얻기
URI:
/folders/:name
메소드 :
GET
가상 폴더의 정보를 검색합니다. 성능상의 이유로, 반환된 정보는 실시간이 아닐 수 있습니다; 보통 서버측에서 몇 초마다 업데이트됩니다.
매개변수
매개변수 |
타입 |
설명 |
---|---|---|
|
|
The human-readable name of the virtual folder |
응답
HTTP 상태 코드 |
설명 |
---|---|
200 OK |
정보가 성공적으로 반환되었습니다. |
404 Not Found |
폴더가 없거나 폴더에 접근할 적절한 권한을 가지고 있지 않습니다. |
필드 |
타입 |
값 |
---|---|---|
(root) |
|
가상 폴더 지우기
URI:
/folders/:name
Method:
DELETE
주어진 가상 폴더의 모든 내용을 즉시 삭제하고 미래의 마운트에 폴더를 사용할 수 없게 합니다.
위험
실행 중인 커널 중 삭제된 가상 폴더를 마운트한 커널이 있다면, 해당 커널은 오작동할 수 있습니다!
경고
이 API가 호출되면 내용을 되돌릴 수 있는 방법이 없습니다.
매개변수
매개변수 |
설명 |
---|---|
|
The human-readable name of the virtual folder |
응답
HTTP 상태 코드 |
설명 |
---|---|
204 No Content |
폴더가 성공적으로 삭제되었습니다. |
404 Not Found |
폴더가 없거나 폴더를 삭제할 적절한 권한을 가지고 있지 않습니다. |
가상 폴더 이름 바꾸기
URI:
/folders/:name/rename
Method:
POST
현재 API 키와 연결된 가상 폴더의 이름을 바꿉니다.
매개변수
매개변수 |
타입 |
설명 |
---|---|---|
|
|
The human-readable name of the virtual folder |
|
|
New virtual folder name |
응답
HTTP 상태 코드 |
설명 |
---|---|
201 Created |
The folder is successfully renamed. |
404 Not Found |
폴더를 찾을 수 없거나 폴더 이름을 바꿀 적절한 권한을 가지고 있지 않습니다. |
가상 폴더 내 파일 목록
현재 키페어와 연결된 가상 폴더 내 파일 목록을 반환합니다.
URI:
/folders/:name/files
메소드 :
GET
매개변수
매개변수 |
타입 |
설명 |
---|---|---|
|
|
The human-readable name of the virtual folder |
|
|
Path inside the virtual folder (default: root) |
응답
HTTP 상태 코드 |
설명 |
---|---|
200 OK |
Success. |
404 Not Found |
폴더에 접근할 수 없거나 경로를 찾을 수 없습니다. |
필드 |
타입 |
값 |
---|---|---|
|
|
가상 폴더에 파일 업로드
현재 키페어와 연결된 가상 폴더에 로컬 파일을 업로드합니다. Manager는 내부적으로 Backend.AI Storage-Proxy 서비스에 업로드를 위임합니다. JSON 웹 토큰은 요청 인증에 사용됩니다.
URI:
/folders/:name/request-upload
Method:
POST
경고
가상 폴더 내 동일한 이름의 파일이 이미 존재하면 경고 없이 덮어써집니다.
매개변수
매개변수 |
타입 |
설명 |
---|---|---|
|
|
The human-readable name of the virtual folder |
|
|
Path of the local file to upload |
|
|
The total size of the local file to upload |
응답
HTTP 상태 코드 |
설명 |
---|---|
200 OK |
Success. |
필드 |
타입 |
값 |
---|---|---|
|
|
Storage-Proxy 서비스에 업로드 세션 인증을 위한 JSON 웹 토큰 |
|
|
Storage-Proxy에 대한 요청 URL. 클라이언트는 이 URL을 사용하여 파일을 업로드해야 합니다. |
가상 폴더 내에 새 디렉토리 생성하기
현재 키페어에 연결된 가상 폴더에 새 디렉토리를 생성합니다. 이 API는 존재하지 않는 상위 디렉토리를 재귀적으로 생성합니다.
URI:
/folders/:name/mkdir
Method:
POST
경고
가상 폴더 내 동일한 이름의 디렉토리가 이미 존재하면 경고 없이 덮어써질 수 있습니다.
매개변수
매개변수 |
타입 |
설명 |
---|---|---|
|
|
The human-readable name of the virtual folder. |
|
|
The relative path of a new folder to create inside the virtual folder |
|
|
|
|
|
디렉토리 이름이 이미 존재하면 오류 없이 덮어씁니다. |
응답
HTTP 상태 코드 |
설명 |
---|---|
201 Created |
Success. |
400 Bad Request |
디렉토리가 아닌 동일한 이름의 파일이 이미 존재합니다. |
404 Not Found |
파일이 없거나 해당 폴더에 쓰기 권한이 없습니다. |
가상 폴더에 있는 파일 또는 디렉토리 다운로드하기
현재 keypair에서 연결된 가상 폴더에 있는 파일 또는 디렉토리를 다운로드합니다. 내부적으로, Manager는 Backend.AI Storage-Proxy 서비스에 다운로드를 위임합니다. JSON 웹 토큰은 요청의 인증에 사용됩니다.
Added in version v4.20190315.
URI:
/folders/:name/request-download
Method:
POST
매개변수
매개변수 |
타입 |
설명 |
---|---|---|
|
|
The human-readable name of the virtual folder |
|
|
다운로드를 위해 가상 폴더 내 파일 또는 디렉토리의 경로 |
|
|
해당 매개변수가 |
응답
HTTP 상태 코드 |
설명 |
---|---|
200 OK |
Success. |
404 Not Found |
파일을 찾을 수 없거나 해당 폴더에 접근할 수 있는 권한이 없습니다. |
필드 |
타입 |
값 |
---|---|---|
|
|
JSON 웹 토큰은 Storage-Proxy 서비스의 다운로드 세션 인증에 사용됩니다. |
|
|
저장-프록시에 대한 요청 URL입니다. 클라이언트는 이 URL을 사용하여 파일을 다운로드해야 합니다. |
가상 폴더 내 파일 삭제하기
가상 폴더 내 파일을 삭제합니다.
경고
한 번 API가 호출되면 파일을 되돌릴 수 없습니다.
URI:
/folders/:name/delete-files
Method:
DELETE
매개변수
매개변수 |
타입 |
설명 |
---|---|---|
|
|
The human-readable name of the virtual folder |
|
|
File paths inside the virtual folder to delete |
|
|
설정이 True로 되어 있으면 폴더를 재귀적으로 삭제합니다. 기본값은 False입니다. |
응답
HTTP 상태 코드 |
설명 |
---|---|
200 OK |
Success. |
400 Bad Request |
recursive 옵션을 True로 설정하지 않고 폴더를 삭제하려고 했습니다. |
404 Not Found |
해당 폴더가 없거나 폴더 내 파일을 삭제할 수 있는 권한이 없습니다. |
가상 폴더 내 파일 이름을 변경하기
Rename a file inside a virtual folder.
URI:
/folders/:name/rename-file
Method:
POST
매개변수
매개변수 |
타입 |
설명 |
---|---|---|
|
|
The human-readable name of the virtual folder |
|
|
The relative path of target file or directory |
|
|
The new name of the file or directory |
|
|
Flag that indicates the |
응답
HTTP 상태 코드 |
설명 |
---|---|
200 OK |
Success. |
400 Bad Request |
is_dir 옵션을 True로 설정하지 않고 디렉토리 이름을 변경하려고 했습니다. |
404 Not Found |
해당 폴더가 없거나 폴더 내 파일을 이름을 변경할 수 있는 권한이 없습니다. |
가상 폴더 내 초대 목록 보기
요청한 사용자가 받은 보류중인 초대 목록을 반환합니다. 이 목록 다른 사용자가 보낸 초대가 표시됩니다.
URI :
/folders/invitations/list
메소드 :
GET
매개변수
이 API는 파라미터가 필요하지 않습니다.
응답
HTTP 상태 코드 |
설명 |
---|---|
200 OK |
Success. |
필드 |
타입 |
값 |
---|---|---|
|
|
A list of Virtual Folder Invitation Object |
초대 생성하기
적절한 권한으로 가상 폴더를 공유할 다른 사용자를 초대합니다. 해당 사용자가 이미 초대되어 있다면 이 API는 새로운 초대를 생성하지 않거나 기존 초대 권한을 업데이트하지 않습니다.
URI :
/folders/:name/invite
Method:
POST
매개변수
매개변수 |
타입 |
설명 |
---|---|---|
|
|
The human-readable name of the virtual folder |
|
|
The permission to grant to invitee |
|
|
A list of user emails to invite |
응답
HTTP 상태 코드 |
설명 |
---|---|
200 OK |
Success. |
400 Bad Request |
초대받을 사용자가 주어지지 않았습니다. |
404 Not Found |
초대가 없습니다. |
필드 |
타입 |
값 |
---|---|---|
|
|
A list of invited user emails |
초대 수락하기
초대를 수락하고 초대에 따른 가상 폴더의 권한을 부여받습니다.
URI :
/folders/invitations/accept
Method:
POST
매개변수
매개변수 |
타입 |
설명 |
---|---|---|
|
|
The unique invitation ID |
응답
HTTP 상태 코드 |
설명 |
---|---|
200 OK |
Success. |
400 Bad Request |
대상 가상 폴더 이름이 이미 존재하는 가상 폴더 이름과 중복됩니다. |
404 Not Found |
존재하지 않는 초대입니다. |
초대 거절하기
초대를 거절합니다.
URI :
/folders/invitations/delete
Method:
DELETE
매개변수
매개변수 |
타입 |
설명 |
---|---|---|
|
|
The unique invitation ID |
응답
HTTP 상태 코드 |
설명 |
---|---|
200 OK |
Success. |
404 Not Found |
존재하지 않는 초대입니다. |
필드 |
타입 |
값 |
---|---|---|
|
|
Detail message for the invitation deletion |
보낸 초대 목록
요청한 사용자가 보낸 가상 폴더 초대 목록을 반환합니다. 이미 수락하거나 거절한 초대는 포함되지 않습니다.
URI :
/folders/invitations/list-sent
메소드 :
GET
매개변수
이 API는 파라미터가 필요하지 않습니다.
응답
HTTP 상태 코드 |
설명 |
---|---|
200 OK |
Success. |
필드 |
타입 |
값 |
---|---|---|
|
|
A list of Virtual Folder Invitation Object |
초대 업데이트
이미 보냈지만 수락하거나 거절하지 않은 초대 권한을 업데이트합니다.
URI :
/folders/invitations/update/:inv_id
Method:
POST
매개변수
매개변수 |
타입 |
설명 |
---|---|---|
|
|
The unique invitation ID |
|
|
The permission to grant to invitee |
응답
HTTP 상태 코드 |
설명 |
---|---|
200 OK |
Success. |
400 Bad Request |
권한을 지정하지 않았습니다. |
404 Not Found |
초대가 없습니다. |
필드 |
타입 |
값 |
---|---|---|
|
|
An update message string |
가상 폴더 복제
Clone a virtual folder
URI:
/folders/:name/clone
Method:
POST
매개변수
매개변수 |
타입 |
설명 |
---|---|---|
|
|
The human-readable name of the virtual folder |
|
|
``True``일 경우, 복제된 가상 폴더를 다시 복제할 수 있습니다. |
|
|
The name of the new virtual folder |
|
|
The targe host volume of the new virtual folder |
|
|
(선택 사항) 새 가상 폴더의 목적. 허용되는 값은 |
|
|
(선택 사항) 새 가상 폴더의 기본 공유 권한. 가상 폴더의 소유자는 해당 매개변수와 무관하게 항상 |
응답
HTTP 상태 코드 |
설명 |
---|---|
200 OK |
Success. |
400 Bad Request |
타겟 이름, 타겟 호스트, 권한이 없습니다. |
403 Forbidden |
소스 가상 폴더는 복제할 수 없습니다. |
404 Not Found |
가상 폴더가 없습니다. |
필드 |
타입 |
값 |
---|---|---|
|
|
A list of user emails those are successfully unshared the virtual folder. |
필드 |
타입 |
값 |
---|---|---|
(root) |
|
예시:
{
"name": "my cloned folder",
"id": "b4b1b16c-d07f-4f1f-b60e-da9449aa60a6",
"host": "local:volume1",
"usage_mode": "general",
"created_at": "2020-11-28 13:30:30.912056+00",
"is_owner": "true",
"permission": "rw",
"user": "dfa9da54-4b28-432f-be29-c0d680c7a412",
"group": null,
"creator": "admin@lablup.com",
"user_email": "admin@lablup.com",
"group_name": null,
"ownership_type": "user",
"unmanaged_path": null,
"cloneable": "false"
}