Skip to content

Commit

Permalink
unified dataset and model download api
Browse files Browse the repository at this point in the history
  • Loading branch information
goldenxinxing committed Feb 7, 2023
1 parent cf7cc8c commit d4b8354
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 30 deletions.
9 changes: 3 additions & 6 deletions client/starwhale/base/bundle_copy.py
Original file line number Diff line number Diff line change
Expand Up @@ -266,14 +266,11 @@ def _download(_tid: TaskID, fd: FileNode) -> None:
url_path=self._get_remote_instance_rc_url(),
dest_path=fd.path,
instance_uri=self.src_uri,
headers={
"X-SW-DOWNLOAD-TYPE": fd.file_desc.name,
"X-SW-DOWNLOAD-OBJECT-NAME": fd.name,
"X-SW-DOWNLOAD-OBJECT-HASH": fd.signature,
},
params={
# for ds download
"part_name": fd.signature,
"desc": fd.file_desc.name,
"name": fd.name,
"signature": fd.signature,
},
progress=progress,
task_id=_tid,
Expand Down
26 changes: 8 additions & 18 deletions client/tests/base/test_copy.py
Original file line number Diff line number Diff line change
Expand Up @@ -232,22 +232,12 @@ def test_model_copy_c2l(
)
rm.request(
HTTPMethod.GET,
f"http://1.1.1.1:8182/api/v1/project/myproject/model/mnist/version/{version}/file?part_name=",
headers={
"X-SW-DOWNLOAD-TYPE": FileDesc.MANIFEST.name,
"X-SW-DOWNLOAD-OBJECT-NAME": "_manifest.yaml",
"X-SW-DOWNLOAD-OBJECT-HASH": "",
},
f"http://1.1.1.1:8182/api/v1/project/myproject/model/mnist/version/{version}/file?desc=MANIFEST&name=_manifest.yaml&signature=",
json={"resources": []},
)
rm.request(
HTTPMethod.GET,
f"http://1.1.1.1:8182/api/v1/project/myproject/model/mnist/version/{version}/file?part_name=",
headers={
"X-SW-DOWNLOAD-TYPE": FileDesc.SRC_TAR.name,
"X-SW-DOWNLOAD-OBJECT-NAME": "src.tar",
"X-SW-DOWNLOAD-OBJECT-HASH": "",
},
f"http://1.1.1.1:8182/api/v1/project/myproject/model/mnist/version/{version}/file?desc=SRC_TAR&name=src.tar&signature=",
content=b"mnist model content",
)
# m_load_yaml.return_value = {"resources": []}
Expand Down Expand Up @@ -450,16 +440,16 @@ def test_dataset_copy_c2l(self, rm: Mocker, m_td_scan: MagicMock) -> None:
)
rm.request(
HTTPMethod.GET,
f"http://1.1.1.1:8182/api/v1/project/myproject/dataset/mnist/version/{version}/file?part_name=",
headers={
"X-SW-DOWNLOAD-TYPE": FileDesc.MANIFEST.name,
"X-SW-DOWNLOAD-OBJECT-NAME": "_manifest.yaml",
"X-SW-DOWNLOAD-OBJECT-HASH": "",
},
f"http://1.1.1.1:8182/api/v1/project/myproject/dataset/mnist/version/{version}/file?desc=MANIFEST&name=_manifest.yaml&signature=",
json={
"signature": [],
},
)
rm.request(
HTTPMethod.GET,
f"http://1.1.1.1:8182/api/v1/project/myproject/dataset/mnist/version/{version}/file?desc=SRC_TAR&name=archive.swds_meta&signature=",
content=b"mnist dataset content",
)
rm.request(
HTTPMethod.POST,
"http://1.1.1.1:8182/api/v1/datastore/scanTable",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -235,8 +235,8 @@ void pullDs(
@PathVariable(name = "projectUrl") String projectUrl,
@PathVariable(name = "datasetUrl") String datasetUrl,
@PathVariable(name = "versionUrl") String versionUrl,
@Parameter(name = "part_name", description = "optional, _manifest.yaml is used if not specified")
@RequestParam(name = "part_name", required = false) String partName,
@Parameter(name = "signature", description = "optional, _manifest.yaml is used if not specified")
@RequestParam(name = "signature", required = false) String partName,
HttpServletResponse httpResponse);

@Operation(summary = "Pull Dataset uri file contents",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -316,10 +316,10 @@ ResponseEntity<ResponseMessage<Object>> upload(
produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
@PreAuthorize("hasAnyRole('OWNER', 'MAINTAINER')")
void pull(
@RequestHeader(name = "X-SW-DOWNLOAD-TYPE", required = false) FileDesc fileDesc,
@RequestHeader(name = "X-SW-DOWNLOAD-OBJECT-NAME", required = false) String name,
@RequestHeader(name = "X-SW-DOWNLOAD-OBJECT-PATH", required = false) String path,
@RequestHeader(name = "X-SW-DOWNLOAD-OBJECT-HASH", required = false) String signature,
@RequestParam(name = "desc", required = false) FileDesc fileDesc,
@RequestParam(name = "name", required = false) String name,
@RequestParam(name = "path", required = false) String path,
@RequestParam(name = "signature", required = false) String signature,
@PathVariable("projectUrl") String projectUrl,
@Parameter(in = ParameterIn.PATH, required = true, schema = @Schema())
@Pattern(regexp = BUNDLE_NAME_REGEX, message = "Model name is not invalid.")
Expand Down

0 comments on commit d4b8354

Please sign in to comment.