diff --git a/api/scheduler/jobset.go b/api/scheduler/jobset.go index 50d5a0a..b7190d9 100644 --- a/api/scheduler/jobset.go +++ b/api/scheduler/jobset.go @@ -16,7 +16,8 @@ type JobSetSumbitReq struct { } type JobSetSumbitResp struct { - JobSetID string `json:"jobSetID"` + JobSetID string `json:"jobSetID"` + FilesUploadScheme models.JobSetFilesUploadScheme `json:"filesUploadScheme"` } func (c *Client) JobSetSumbit(req JobSetSumbitReq) (*JobSetSumbitResp, error) { @@ -49,14 +50,15 @@ func (c *Client) JobSetSumbit(req JobSetSumbitReq) (*JobSetSumbitResp, error) { return nil, fmt.Errorf("unknow response content type: %s", contType) } -type JobSetSetLocalFileReq struct { +type JobSetLocalFileUploadedReq struct { JobSetID string `json:"jobSetID"` LocalPath string `json:"localPath"` + Error string `json:"error"` PackageID int64 `json:"packageID"` } -func (c *Client) JobSetSetLocalFile(req JobSetSetLocalFileReq) error { - url, err := url.JoinPath(c.baseURL, "/jobSet/setLocalFile") +func (c *Client) JobSetLocalFileUploaded(req JobSetLocalFileUploadedReq) error { + url, err := url.JoinPath(c.baseURL, "/jobSet/localFileUploaded") if err != nil { return err } diff --git a/api/scheduler/scheduler_test.go b/api/scheduler/scheduler_test.go index b3ddb5d..e7a4502 100644 --- a/api/scheduler/scheduler_test.go +++ b/api/scheduler/scheduler_test.go @@ -40,7 +40,7 @@ func Test_JobSet(t *testing.T) { So(err, ShouldBeNil) So(id.JobSetID, ShouldNotBeEmpty) - err = cli.JobSetSetLocalFile(JobSetSetLocalFileReq{ + err = cli.JobSetLocalFileUploaded(JobSetLocalFileUploadedReq{ JobSetID: id.JobSetID, LocalPath: "code", PackageID: 1, diff --git a/api/storage/package.go b/api/storage/package.go index c07f32d..952949e 100644 --- a/api/storage/package.go +++ b/api/storage/package.go @@ -14,11 +14,12 @@ import ( ) type PackageUploadReq struct { - UserID int64 `json:"userID"` - BucketID int64 `json:"bucketID"` - Name string `json:"name"` - Redundancy models.TypedRedundancyInfo `json:"redundancy"` - Files PackageUploadFileIterator `json:"-"` + UserID int64 `json:"userID"` + BucketID int64 `json:"bucketID"` + Name string `json:"name"` + Redundancy models.TypedRedundancyInfo `json:"redundancy"` + NodeAffinity *int64 `json:"nodeAffinity"` + Files PackageUploadFileIterator `json:"-"` } type IterPackageUploadFile struct { diff --git a/api/storage/storage_test.go b/api/storage/storage_test.go index e3e3395..04e4e91 100644 --- a/api/storage/storage_test.go +++ b/api/storage/storage_test.go @@ -23,7 +23,8 @@ func Test_Object(t *testing.T) { fileData[i] = byte(i) } - _, err := cli.PackageUpload(PackageUploadReq{ + nodeAff := int64(2) + upResp, err := cli.PackageUpload(PackageUploadReq{ UserID: 0, BucketID: 1, Name: uuid.NewString(), @@ -31,6 +32,7 @@ func Test_Object(t *testing.T) { Type: models.RedundancyRep, Info: models.NewRepRedundancyInfo(1), }, + NodeAffinity: &nodeAff, Files: iterator.Array( &IterPackageUploadFile{ Path: "test", @@ -55,11 +57,11 @@ func Test_Object(t *testing.T) { // So(downFileData, ShouldResemble, fileData) // downFs.Close() - //err = cli.PackageDelete(PackageDeleteReq{ - // UserID: 0, - // PackageID: upResp.PackageID, - //}) - //So(err, ShouldBeNil) + err = cli.PackageDelete(PackageDeleteReq{ + UserID: 0, + PackageID: upResp.PackageID, + }) + So(err, ShouldBeNil) }) } diff --git a/models/job.go b/models/scheduler.go similarity index 74% rename from models/job.go rename to models/scheduler.go index d796491..28dd6b0 100644 --- a/models/job.go +++ b/models/scheduler.go @@ -118,3 +118,43 @@ func JobSetInfoFromJSON(data []byte) (*JobSetInfo, error) { return &ret, nil } + +const ( + FileScheduleActionNo = "No" + FileScheduleActionMove = "Move" + FileScheduleActionLoad = "Load" +) + +type FileScheduleScheme struct { + Action string `json:"action"` + TargetStorageID int64 `json:"targetStorageID"` +} + +const ( + ImageScheduleActionNo = "No" + ImageScheduleActionImport = "Import" +) + +type ImageScheduleScheme struct { + Action string `json:"action"` +} + +type JobScheduleScheme struct { + TargetSlwNodeID int64 `json:"targetSlwNodeID"` + Dataset FileScheduleScheme `json:"dataset"` + Code FileScheduleScheme `json:"code"` + Image ImageScheduleScheme `json:"image"` +} + +type JobSetPreScheduleScheme struct { + JobSchemes map[string]JobScheduleScheme `json:"jobSchemes"` // 任务的预调度方案。Key为LocalJobIDs +} + +type JobSetFilesUploadScheme struct { + LocalFileSchemes []LocalFileUploadScheme `json:"localFileUploadSchemes"` +} + +type LocalFileUploadScheme struct { + LocalPath string `json:"localPath"` + UploadToStgNodeID *int64 `json:"uploadToStgNodeID"` +}