From 2ef94b723db915d96063f91d41c73948f682ecf4 Mon Sep 17 00:00:00 2001 From: Jonghyun Park Date: Mon, 13 Apr 2020 11:39:36 +0900 Subject: [PATCH 1/2] feat: add usage_mode and permission option in creating vfolder --- src/ai/backend/client/cli/vfolder.py | 23 ++++++++++++++++++----- src/ai/backend/client/func/vfolder.py | 5 ++++- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/ai/backend/client/cli/vfolder.py b/src/ai/backend/client/cli/vfolder.py index 7c0aae5b..22bc4b18 100644 --- a/src/ai/backend/client/cli/vfolder.py +++ b/src/ai/backend/client/cli/vfolder.py @@ -26,7 +26,8 @@ def list(list_all): ('ID', 'id'), ('Owner', 'is_owner'), ('Permission', 'permission'), - ('Type', 'type'), + ('Owership Type', 'ownership_type'), + ('Usage Mode', 'usage_mode'), ('User', 'user'), ('Group', 'group'), ] @@ -77,7 +78,15 @@ def list_allowed_types(): @click.option('--unmanaged', 'host_path', type=bool, is_flag=True, help='Treats HOST as a mount point of unmanaged virtual folder. ' 'This option can only be used by Admin or Superadmin.') -def create(name, host, group, host_path): +@click.option('-m', '--usage-mode', metavar='USAGE_MODE', type=str, default='general', + help='Purpose of the folder. Normal folders are usually set to "general". ' + 'Available options: "general", "data" (provides data to users), ' + 'and "model" (provides pre-trained models).') +@click.option('-p', '--permission', metavar='PERMISSION', type=str, default='rw', + help='Folder\'s innate permission. ' + 'Group folders can be shared as read-only by setting this option to "ro".' + 'Invited folders override this setting by its own invitation permission.') +def create(name, host, group, host_path, usage_mode, permission): '''Create a new virtual folder. \b @@ -87,9 +96,11 @@ def create(name, host, group, host_path): with Session() as session: try: if host_path: - result = session.VFolder.create(name=name, unmanaged_path=host, group=group) + result = session.VFolder.create(name=name, unmanaged_path=host, group=group, + usage_mode=usage_mode, permission=permission) else: - result = session.VFolder.create(name=name, host=host, group=group) + result = session.VFolder.create(name=name, host=host, group=group, + usage_mode=usage_mode, permission=permission) print('Virtual folder "{0}" is created.'.format(result['name'])) except Exception as e: print_error(e) @@ -148,7 +159,9 @@ def info(name): print('- Owner:', result['is_owner']) print('- Permission:', result['permission']) print('- Number of files: {0}'.format(result['numFiles'])) - print('- Type: {0}'.format(result['type'])) + print('- Ownership Type: {0}'.format(result['ownership_type'])) + print('- Permission:', result['permission']) + print('- Usage Mode: {0}'.format(result['usage_mode'])) print('- Group ID: {0}'.format(result['group'])) print('- User ID: {0}'.format(result['user'])) except Exception as e: diff --git a/src/ai/backend/client/func/vfolder.py b/src/ai/backend/client/func/vfolder.py index 6ff38d42..3da21e74 100644 --- a/src/ai/backend/client/func/vfolder.py +++ b/src/ai/backend/client/func/vfolder.py @@ -27,13 +27,16 @@ def __init__(self, name: str): @api_function @classmethod - async def create(cls, name: str, host: str = None, unmanaged_path: str = None, group: str = None): + async def create(cls, name: str, host: str = None, unmanaged_path: str = None, group: str = None, + usage_mode: str = 'general', permission: str = 'rw'): rqst = Request(cls.session, 'POST', '/folders') rqst.set_json({ 'name': name, 'host': host, 'unmanaged_path': unmanaged_path, 'group': group, + 'usage_mode': usage_mode, + 'permission': permission, }) async with rqst.fetch() as resp: return await resp.json() From 41d4369fa67cb28e7b517dc650a46dd6037777e7 Mon Sep 17 00:00:00 2001 From: Jonghyun Park Date: Mon, 20 Apr 2020 11:09:50 +0900 Subject: [PATCH 2/2] docs: add changes file --- changes/96.feature | 1 + 1 file changed, 1 insertion(+) create mode 100644 changes/96.feature diff --git a/changes/96.feature b/changes/96.feature new file mode 100644 index 00000000..ed97735a --- /dev/null +++ b/changes/96.feature @@ -0,0 +1 @@ +Add usage_mode and permission option in creating vfolder