@@ -41,7 +41,7 @@ type Attachment struct { | |||
Size int64 `xorm:"DEFAULT 0"` | |||
IsPrivate bool `xorm:"DEFAULT false"` | |||
DecompressState int32 `xorm:"DEFAULT 0"` | |||
Type int `xorm:"DEFAULT 0"` | |||
Type int `xorm:"DEFAULT 0"` | |||
CreatedUnix timeutil.TimeStamp `xorm:"created"` | |||
} | |||
@@ -7,24 +7,26 @@ import ( | |||
) | |||
type BlockChainIssueStatus int | |||
const ( | |||
BlockChainIssueInit BlockChainIssueStatus = iota | |||
BlockChainIssueSuccess | |||
BlockChainIssueFailed | |||
) | |||
type BlockChainIssue struct { | |||
ID int64 `xorm:"pk autoincr"` | |||
IssueID int64 `xorm:"INDEX NOT NULL unique"` | |||
Contributor string `xorm:"INDEX NOT NULL"` | |||
ContractAddress string `xorm:"INDEX NOT NULL"` | |||
Status BlockChainIssueStatus `xorm:"INDEX NOT NULL DEFAULT 0"` | |||
Amount int64 `xorm:"INDEX"` | |||
UserID int64 `xorm:"INDEX"` | |||
RepoID int64 `xorm:"INDEX"` | |||
TransactionHash string `xorm:"INDEX"` | |||
CreatedUnix timeutil.TimeStamp `xorm:"created"` | |||
UpdatedUnix timeutil.TimeStamp `xorm:"updated"` | |||
DeletedAt time.Time `xorm:"deleted"` | |||
ID int64 `xorm:"pk autoincr"` | |||
IssueID int64 `xorm:"INDEX NOT NULL unique"` | |||
Contributor string `xorm:"INDEX NOT NULL"` | |||
ContractAddress string `xorm:"INDEX NOT NULL"` | |||
Status BlockChainIssueStatus `xorm:"INDEX NOT NULL DEFAULT 0"` | |||
Amount int64 `xorm:"INDEX"` | |||
UserID int64 `xorm:"INDEX"` | |||
RepoID int64 `xorm:"INDEX"` | |||
TransactionHash string `xorm:"INDEX"` | |||
CreatedUnix timeutil.TimeStamp `xorm:"created"` | |||
UpdatedUnix timeutil.TimeStamp `xorm:"updated"` | |||
DeletedAt time.Time `xorm:"deleted"` | |||
User *User `xorm:"-"` | |||
Repo *Repository `xorm:"-"` | |||
@@ -15,19 +15,19 @@ const ( | |||
) | |||
type BlockChain struct { | |||
ID int64 `xorm:"pk autoincr"` | |||
PrID int64 `xorm:"INDEX NOT NULL unique"` | |||
CommitID string `xorm:"INDEX NOT NULL unique"` | |||
Contributor string `xorm:"INDEX NOT NULL"` | |||
ContractAddress string `xorm:"INDEX NOT NULL"` | |||
Status BlockChainCommitStatus `xorm:"INDEX NOT NULL DEFAULT 0"` | |||
Amount int64 `xorm:"INDEX"` | |||
UserID int64 `xorm:"INDEX"` | |||
RepoID int64 `xorm:"INDEX"` | |||
TransactionHash string `xorm:"INDEX"` | |||
CreatedUnix timeutil.TimeStamp `xorm:"created"` | |||
UpdatedUnix timeutil.TimeStamp `xorm:"updated"` | |||
DeletedAt time.Time `xorm:"deleted"` | |||
ID int64 `xorm:"pk autoincr"` | |||
PrID int64 `xorm:"INDEX NOT NULL unique"` | |||
CommitID string `xorm:"INDEX NOT NULL unique"` | |||
Contributor string `xorm:"INDEX NOT NULL"` | |||
ContractAddress string `xorm:"INDEX NOT NULL"` | |||
Status BlockChainCommitStatus `xorm:"INDEX NOT NULL DEFAULT 0"` | |||
Amount int64 `xorm:"INDEX"` | |||
UserID int64 `xorm:"INDEX"` | |||
RepoID int64 `xorm:"INDEX"` | |||
TransactionHash string `xorm:"INDEX"` | |||
CreatedUnix timeutil.TimeStamp `xorm:"created"` | |||
UpdatedUnix timeutil.TimeStamp `xorm:"updated"` | |||
DeletedAt time.Time `xorm:"deleted"` | |||
User *User `xorm:"-"` | |||
Repo *Repository `xorm:"-"` | |||
@@ -23,25 +23,25 @@ const ( | |||
JobFailed CloudbrainStatus = "FAILED" | |||
JobRunning CloudbrainStatus = "RUNNING" | |||
JobTypeDebug JobType = "DEBUG" | |||
JobTypeBenchmark JobType = "BENCHMARK" | |||
JobTypeDebug JobType = "DEBUG" | |||
JobTypeBenchmark JobType = "BENCHMARK" | |||
JobTypeSnn4imagenet JobType = "SNN4IMAGENET" | |||
ModelArtsCreateQueue ModelArtsJobStatus = "CREATE_QUEUING" //免费资源创建排队中 | |||
ModelArtsCreating ModelArtsJobStatus = "CREATING" //创建中 | |||
ModelArtsCreateFailed ModelArtsJobStatus = "CREATE_FAILED" //创建失败 | |||
ModelArtsStartQueuing ModelArtsJobStatus = "START_QUEUING" //免费资源启动排队中 | |||
ModelArtsReadyToStart ModelArtsJobStatus = "READY_TO_START" //免费资源等待启动 | |||
ModelArtsStarting ModelArtsJobStatus = "STARTING" //启动中 | |||
ModelArtsRestarting ModelArtsJobStatus = "RESTARTING" //重启中 | |||
ModelArtsStartFailed ModelArtsJobStatus = "START_FAILED" //启动失败 | |||
ModelArtsRunning ModelArtsJobStatus = "RUNNING" //运行中 | |||
ModelArtsStopping ModelArtsJobStatus = "STOPPING" //停止中 | |||
ModelArtsStopped ModelArtsJobStatus = "STOPPED" //停止 | |||
ModelArtsUnavailable ModelArtsJobStatus = "UNAVAILABLE" //故障 | |||
ModelArtsDeleted ModelArtsJobStatus = "DELETED" //已删除 | |||
ModelArtsResizing ModelArtsJobStatus = "RESIZING" //规格变更中 | |||
ModelArtsResizFailed ModelArtsJobStatus = "RESIZE_FAILED" //规格变更失败 | |||
ModelArtsCreateQueue ModelArtsJobStatus = "CREATE_QUEUING" //免费资源创建排队中 | |||
ModelArtsCreating ModelArtsJobStatus = "CREATING" //创建中 | |||
ModelArtsCreateFailed ModelArtsJobStatus = "CREATE_FAILED" //创建失败 | |||
ModelArtsStartQueuing ModelArtsJobStatus = "START_QUEUING" //免费资源启动排队中 | |||
ModelArtsReadyToStart ModelArtsJobStatus = "READY_TO_START" //免费资源等待启动 | |||
ModelArtsStarting ModelArtsJobStatus = "STARTING" //启动中 | |||
ModelArtsRestarting ModelArtsJobStatus = "RESTARTING" //重启中 | |||
ModelArtsStartFailed ModelArtsJobStatus = "START_FAILED" //启动失败 | |||
ModelArtsRunning ModelArtsJobStatus = "RUNNING" //运行中 | |||
ModelArtsStopping ModelArtsJobStatus = "STOPPING" //停止中 | |||
ModelArtsStopped ModelArtsJobStatus = "STOPPED" //停止 | |||
ModelArtsUnavailable ModelArtsJobStatus = "UNAVAILABLE" //故障 | |||
ModelArtsDeleted ModelArtsJobStatus = "DELETED" //已删除 | |||
ModelArtsResizing ModelArtsJobStatus = "RESIZING" //规格变更中 | |||
ModelArtsResizFailed ModelArtsJobStatus = "RESIZE_FAILED" //规格变更失败 | |||
) | |||
type Cloudbrain struct { | |||
@@ -59,7 +59,7 @@ type Cloudbrain struct { | |||
UpdatedUnix timeutil.TimeStamp `xorm:"INDEX updated"` | |||
DeletedAt time.Time `xorm:"deleted"` | |||
CanDebug bool `xorm:"-"` | |||
Type int `xorm:"INDEX DEFAULT 0"` | |||
Type int `xorm:"INDEX DEFAULT 0"` | |||
User *User `xorm:"-"` | |||
Repo *Repository `xorm:"-"` | |||
@@ -118,14 +118,14 @@ type GetJobResult struct { | |||
} | |||
type GetImagesResult struct { | |||
Code string `json:"code"` | |||
Msg string `json:"msg"` | |||
Payload GetImagesPayload `json:"payload"` | |||
Code string `json:"code"` | |||
Msg string `json:"msg"` | |||
Payload GetImagesPayload `json:"payload"` | |||
} | |||
type GetImagesPayload struct { | |||
Count int `json:"count"` | |||
ImageInfo []*ImageInfo `json:"rows"` | |||
Count int `json:"count"` | |||
ImageInfo []*ImageInfo `json:"rows"` | |||
} | |||
type CloudbrainsOptions struct { | |||
@@ -136,7 +136,7 @@ type CloudbrainsOptions struct { | |||
SortType string | |||
CloudbrainIDs []int64 | |||
// JobStatus CloudbrainStatus | |||
Type int | |||
Type int | |||
} | |||
type TaskPod struct { | |||
TaskRoleStatus struct { | |||
@@ -162,11 +162,11 @@ type TaskPod struct { | |||
} | |||
type TaskInfo struct { | |||
Username string `json:"username"` | |||
TaskName string `json:"task_name"` | |||
CodeName string `json:"code_name"` | |||
Username string `json:"username"` | |||
TaskName string `json:"task_name"` | |||
CodeName string `json:"code_name"` | |||
BenchmarkCategory []string `json:"selected_category"` | |||
CodeLink string `json:"code_link"` | |||
CodeLink string `json:"code_link"` | |||
} | |||
func ConvertToTaskPod(input map[string]interface{}) (TaskPod, error) { | |||
@@ -268,11 +268,11 @@ type ImageInfo struct { | |||
} | |||
type Categories struct { | |||
Category []*Category `json:"category"` | |||
Category []*Category `json:"category"` | |||
} | |||
type Category struct { | |||
Id int `json:"id"` | |||
Id int `json:"id"` | |||
Value string `json:"value"` | |||
} | |||
@@ -295,42 +295,42 @@ type StopJobResult struct { | |||
} | |||
type CreateNotebookParams struct { | |||
JobName string `json:"name"` | |||
Description string `json:"description"` | |||
ProfileID string `json:"profile_id"` | |||
Flavor string `json:"flavor"` | |||
Spec Spec `json:"spec"` | |||
Workspace Workspace `json:"workspace"` | |||
Pool Pool `json:"pool"` | |||
JobName string `json:"name"` | |||
Description string `json:"description"` | |||
ProfileID string `json:"profile_id"` | |||
Flavor string `json:"flavor"` | |||
Spec Spec `json:"spec"` | |||
Workspace Workspace `json:"workspace"` | |||
Pool Pool `json:"pool"` | |||
} | |||
type Pool struct { | |||
ID string `json:"id"` | |||
Name string `json:"name"` | |||
Type string `json:"type"` | |||
ID string `json:"id"` | |||
Name string `json:"name"` | |||
Type string `json:"type"` | |||
} | |||
type Workspace struct { | |||
ID string `json:"id"` | |||
ID string `json:"id"` | |||
} | |||
type Spec struct { | |||
Storage Storage `json:"storage"` | |||
AutoStop AutoStop `json:"auto_stop"` | |||
Storage Storage `json:"storage"` | |||
AutoStop AutoStop `json:"auto_stop"` | |||
} | |||
type AutoStop struct { | |||
Enable bool `json:"enable"` | |||
Duration int `json:"duration"` | |||
Enable bool `json:"enable"` | |||
Duration int `json:"duration"` | |||
} | |||
type Storage struct { | |||
Type string `json:"type"` | |||
Location Location `json:"location"` | |||
Type string `json:"type"` | |||
Location Location `json:"location"` | |||
} | |||
type Location struct { | |||
Path string `json:"path"` | |||
Path string `json:"path"` | |||
} | |||
type NotebookResult struct { | |||
@@ -339,119 +339,119 @@ type NotebookResult struct { | |||
} | |||
type CreateNotebookResult struct { | |||
ErrorCode string `json:"error_code"` | |||
ErrorMsg string `json:"error_msg"` | |||
ID string `json:"id"` | |||
Name string `json:"name"` | |||
Description string `json:"description"` | |||
Status string `json:"status"` | |||
CreationTimestamp string `json:"creation_timestamp"` | |||
LatestUpdateTimestamp string `json:"latest_update_timestamp"` | |||
Profile struct { | |||
ID string `json:"id"` | |||
Name string `json:"name"` | |||
Description string `json:"description"` | |||
DeType string `json:"de_type"` | |||
FlavorType string `json:"flavor_type"` | |||
ErrorCode string `json:"error_code"` | |||
ErrorMsg string `json:"error_msg"` | |||
ID string `json:"id"` | |||
Name string `json:"name"` | |||
Description string `json:"description"` | |||
Status string `json:"status"` | |||
CreationTimestamp string `json:"creation_timestamp"` | |||
LatestUpdateTimestamp string `json:"latest_update_timestamp"` | |||
Profile struct { | |||
ID string `json:"id"` | |||
Name string `json:"name"` | |||
Description string `json:"description"` | |||
DeType string `json:"de_type"` | |||
FlavorType string `json:"flavor_type"` | |||
} `json:"profile"` | |||
Flavor string `json:"flavor"` | |||
FlavorDetails struct{ | |||
Name string `json:"name"` | |||
Status string `json:"status"` | |||
QueuingNum int `json:"queuing_num"` | |||
QueueLeftTime int `json:"queue_left_time"` //s | |||
Duration int `json:"duration"` //auto_stop_time s | |||
Flavor string `json:"flavor"` | |||
FlavorDetails struct { | |||
Name string `json:"name"` | |||
Status string `json:"status"` | |||
QueuingNum int `json:"queuing_num"` | |||
QueueLeftTime int `json:"queue_left_time"` //s | |||
Duration int `json:"duration"` //auto_stop_time s | |||
} `json:"flavor_details"` | |||
} | |||
type GetNotebookResult struct { | |||
ErrorCode string `json:"error_code"` | |||
ErrorMsg string `json:"error_msg"` | |||
ID string `json:"id"` | |||
Name string `json:"name"` | |||
Description string `json:"description"` | |||
Status string `json:"status"` | |||
CreationTimestamp string `json:"creation_timestamp"` | |||
CreateTime string | |||
LatestUpdateTimestamp string `json:"latest_update_timestamp"` | |||
LatestUpdateTime string | |||
Profile struct { | |||
ID string `json:"id"` | |||
Name string `json:"name"` | |||
Description string `json:"description"` | |||
DeType string `json:"de_type"` | |||
FlavorType string `json:"flavor_type"` | |||
ErrorCode string `json:"error_code"` | |||
ErrorMsg string `json:"error_msg"` | |||
ID string `json:"id"` | |||
Name string `json:"name"` | |||
Description string `json:"description"` | |||
Status string `json:"status"` | |||
CreationTimestamp string `json:"creation_timestamp"` | |||
CreateTime string | |||
LatestUpdateTimestamp string `json:"latest_update_timestamp"` | |||
LatestUpdateTime string | |||
Profile struct { | |||
ID string `json:"id"` | |||
Name string `json:"name"` | |||
Description string `json:"description"` | |||
DeType string `json:"de_type"` | |||
FlavorType string `json:"flavor_type"` | |||
} `json:"profile"` | |||
Flavor string `json:"flavor"` | |||
FlavorDetails struct{ | |||
Name string `json:"name"` | |||
Status string `json:"status"` | |||
QueuingNum int `json:"queuing_num"` | |||
QueueLeftTime int `json:"queue_left_time"` //s | |||
Duration int `json:"duration"` //auto_stop_time s | |||
Flavor string `json:"flavor"` | |||
FlavorDetails struct { | |||
Name string `json:"name"` | |||
Status string `json:"status"` | |||
QueuingNum int `json:"queuing_num"` | |||
QueueLeftTime int `json:"queue_left_time"` //s | |||
Duration int `json:"duration"` //auto_stop_time s | |||
} `json:"flavor_details"` | |||
QueuingInfo struct{ | |||
ID string `json:"id"` | |||
Name string `json:"name"` | |||
Flavor string `json:"flavor"` | |||
DeType string `json:"de_type"` | |||
Status string `json:"status"` | |||
BeginTimestamp int `json:"begin_timestamp"`//time of instance begin in queue | |||
BeginTime string | |||
RemainTime int `json:"remain_time"` //remain time of instance | |||
EndTimestamp int `json:"end_timestamp"` // | |||
EndTime string | |||
Rank int `json:"rank"` //rank of instance in queue | |||
QueuingInfo struct { | |||
ID string `json:"id"` | |||
Name string `json:"name"` | |||
Flavor string `json:"flavor"` | |||
DeType string `json:"de_type"` | |||
Status string `json:"status"` | |||
BeginTimestamp int `json:"begin_timestamp"` //time of instance begin in queue | |||
BeginTime string | |||
RemainTime int `json:"remain_time"` //remain time of instance | |||
EndTimestamp int `json:"end_timestamp"` // | |||
EndTime string | |||
Rank int `json:"rank"` //rank of instance in queue | |||
} `json:"queuing_info"` | |||
Spec struct{ | |||
Annotations struct{ | |||
TargetDomain string `json:"target_domain"` | |||
Url string `json:"url"` | |||
Spec struct { | |||
Annotations struct { | |||
TargetDomain string `json:"target_domain"` | |||
Url string `json:"url"` | |||
} `json:"annotations"` | |||
} `json:"spec"` | |||
} | |||
type GetTokenParams struct { | |||
Auth Auth `json:"auth"` | |||
Auth Auth `json:"auth"` | |||
} | |||
type Auth struct { | |||
Identity Identity `json:"identity"` | |||
Scope Scope `json:"scope"` | |||
Identity Identity `json:"identity"` | |||
Scope Scope `json:"scope"` | |||
} | |||
type Scope struct { | |||
Project Project `json:"project"` | |||
Project Project `json:"project"` | |||
} | |||
type Project struct { | |||
Name string `json:"name"` | |||
Name string `json:"name"` | |||
} | |||
type Identity struct { | |||
Methods []string `json:"methods"` | |||
Password Password `json:"password"` | |||
Methods []string `json:"methods"` | |||
Password Password `json:"password"` | |||
} | |||
type Password struct { | |||
User NotebookUser `json:"user"` | |||
User NotebookUser `json:"user"` | |||
} | |||
type NotebookUser struct { | |||
Name string `json:"name"` | |||
Password string `json:"password"` | |||
Domain Domain `json:"domain"` | |||
Name string `json:"name"` | |||
Password string `json:"password"` | |||
Domain Domain `json:"domain"` | |||
} | |||
type Domain struct { | |||
Name string `json:"name"` | |||
Name string `json:"name"` | |||
} | |||
const ( | |||
ActionStart = "start" | |||
ActionStop = "stop" | |||
ActionStart = "start" | |||
ActionStop = "stop" | |||
ActionRestart = "restart" | |||
ActionQueue = "queue" | |||
ActionQueue = "queue" | |||
ActionDequeue = "dequeue" | |||
) | |||
@@ -460,20 +460,20 @@ type NotebookAction struct { | |||
} | |||
type NotebookActionResult struct { | |||
ErrorCode string `json:"error_code"` | |||
ErrorMsg string `json:"error_msg"` | |||
CurrentStatus string `json:"current_status"` | |||
PreviousState string `json:"previous_state"` | |||
ErrorCode string `json:"error_code"` | |||
ErrorMsg string `json:"error_msg"` | |||
CurrentStatus string `json:"current_status"` | |||
PreviousState string `json:"previous_state"` | |||
} | |||
type NotebookGetJobTokenResult struct { | |||
ErrorCode string `json:"error_code"` | |||
ErrorMsg string `json:"error_msg"` | |||
Token string `json:"token"` | |||
ErrorCode string `json:"error_code"` | |||
ErrorMsg string `json:"error_msg"` | |||
Token string `json:"token"` | |||
} | |||
type NotebookDelResult struct { | |||
InstanceID string `json:"instance_id"` | |||
InstanceID string `json:"instance_id"` | |||
} | |||
func Cloudbrains(opts *CloudbrainsOptions) ([]*Cloudbrain, int64, error) { | |||
@@ -196,7 +196,7 @@ func (s datasetMetaSearch) Less(i, j int) bool { | |||
return s.ID[i] < s.ID[j] | |||
} | |||
func GetDatasetAttachments(typeCloudBrain int ,rels ...*Dataset) (err error) { | |||
func GetDatasetAttachments(typeCloudBrain int, rels ...*Dataset) (err error) { | |||
return getDatasetAttachments(x, typeCloudBrain, rels...) | |||
} | |||
@@ -24,7 +24,7 @@ type FileChunk struct { | |||
TotalChunks int | |||
Size int64 | |||
UserID int64 `xorm:"INDEX"` | |||
Type int `xorm:"INDEX DEFAULT 0"` | |||
Type int `xorm:"INDEX DEFAULT 0"` | |||
CompletedParts []string `xorm:"DEFAULT ''"` // chunkNumber+etag eg: ,1-asqwewqe21312312.2-123hjkas | |||
CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"` | |||
UpdatedUnix timeutil.TimeStamp `xorm:"INDEX updated"` | |||
@@ -68,8 +68,8 @@ type Issue struct { | |||
IsLocked bool `xorm:"NOT NULL DEFAULT false"` | |||
//block_chain | |||
Amount int64 | |||
IsTransformed bool `xorm:"INDEX NOT NULL DEFAULT false"` | |||
Amount int64 | |||
IsTransformed bool `xorm:"INDEX NOT NULL DEFAULT false"` | |||
} | |||
var ( | |||
@@ -38,9 +38,9 @@ const ( | |||
const ( | |||
PullRequestAmountZero int = 0 | |||
PullRequestAmountOne int = 100 | |||
PullRequestAmountTwo int = 200 | |||
PullRequestAmountMax int = 300 | |||
PullRequestAmountOne int = 100 | |||
PullRequestAmountTwo int = 200 | |||
PullRequestAmountMax int = 300 | |||
) | |||
// PullRequest represents relation between pull request and repositories. | |||
@@ -74,8 +74,8 @@ type PullRequest struct { | |||
isHeadRepoLoaded bool `xorm:"-"` | |||
//block_chain | |||
IsTransformed bool `xorm:"INDEX NOT NULL DEFAULT false"` | |||
Amount int `xorm:"INDEX NOT NULL DEFAULT 0"` | |||
IsTransformed bool `xorm:"INDEX NOT NULL DEFAULT false"` | |||
Amount int `xorm:"INDEX NOT NULL DEFAULT 0"` | |||
} | |||
// MustHeadUserName returns the HeadRepo's username if failed return blank | |||
@@ -175,7 +175,7 @@ func (prs PullRequestList) InvalidateCodeComments(doer *User, repo *git.Reposito | |||
func GetUnTransformedMergedPullRequests() ([]*PullRequest, error) { | |||
prs := make([]*PullRequest, 0, 10) | |||
return prs, x. | |||
Where("has_merged = ? AND pull_request.is_transformed = ? AND to_timestamp(merged_unix) >= ?",true, false, setting.CommitValidDate). | |||
Where("has_merged = ? AND pull_request.is_transformed = ? AND to_timestamp(merged_unix) >= ?", true, false, setting.CommitValidDate). | |||
Join("INNER", "issue", "issue.id = pull_request.issue_id"). | |||
Find(&prs) | |||
} |
@@ -206,9 +206,9 @@ type Repository struct { | |||
Avatar string `xorm:"VARCHAR(64)"` | |||
//blockchain | |||
ContractAddress string `xorm:"INDEX"` | |||
Balance string `xorm:"NOT NULL DEFAULT '0'"` | |||
BlockChainStatus RepoBlockChainStatus `xorm:"NOT NULL DEFAULT 0"` | |||
ContractAddress string `xorm:"INDEX"` | |||
Balance string `xorm:"NOT NULL DEFAULT '0'"` | |||
BlockChainStatus RepoBlockChainStatus `xorm:"NOT NULL DEFAULT 0"` | |||
// git clone total count | |||
CloneCnt int64 `xorm:"NOT NULL DEFAULT 0"` | |||
@@ -292,7 +292,7 @@ var ( | |||
UnitTypeExternalWiki: UnitExternalWiki, | |||
UnitTypeDatasets: UnitDataset, | |||
UnitTypeCloudBrain: UnitCloudBrain, | |||
UnitTypeBlockChain: UnitBlockChain, | |||
UnitTypeBlockChain: UnitBlockChain, | |||
} | |||
) | |||
@@ -174,8 +174,8 @@ type User struct { | |||
Token string `xorm:"VARCHAR(1024)"` | |||
//BlockChain | |||
PublicKey string `xorm:"INDEX"` | |||
PrivateKey string `xorm:"INDEX"` | |||
PublicKey string `xorm:"INDEX"` | |||
PrivateKey string `xorm:"INDEX"` | |||
} | |||
// SearchOrganizationsOptions options to filter organizations | |||
@@ -6,12 +6,12 @@ import ( | |||
) | |||
type CreateCloudBrainForm struct { | |||
JobName string `form:"job_name" binding:"Required"` | |||
Image string `form:"image" binding:"Required"` | |||
Command string `form:"command" binding:"Required"` | |||
Attachment string `form:"attachment" binding:"Required"` | |||
JobType string `form:"job_type" binding:"Required"` | |||
BenchmarkCategory string `form:"get_benchmark_category"` | |||
JobName string `form:"job_name" binding:"Required"` | |||
Image string `form:"image" binding:"Required"` | |||
Command string `form:"command" binding:"Required"` | |||
Attachment string `form:"attachment" binding:"Required"` | |||
JobType string `form:"job_type" binding:"Required"` | |||
BenchmarkCategory string `form:"get_benchmark_category"` | |||
} | |||
type CommitImageCloudBrainForm struct { | |||
@@ -6,8 +6,8 @@ import ( | |||
) | |||
type CreateModelArtsForm struct { | |||
JobName string `form:"job_name" binding:"Required"` | |||
Attachment string `form:"attachment" binding:"Required"` | |||
JobName string `form:"job_name" binding:"Required"` | |||
Attachment string `form:"attachment" binding:"Required"` | |||
Description string `form:"description"` | |||
} | |||
@@ -369,7 +369,7 @@ type CreateIssueForm struct { | |||
AssigneeID int64 | |||
Content string | |||
Files []string | |||
Rewards int64 | |||
Rewards int64 | |||
} | |||
// Validate validates the fields | |||
@@ -14,10 +14,10 @@ var ( | |||
const ( | |||
UrlCreateAccount = "createAccount" | |||
UrlGetBalance = "getBalance" | |||
UrlNewRepo = "newRepo" | |||
UrlContribute = "contribute" | |||
UrlSetIssue = "setIssue" | |||
UrlGetBalance = "getBalance" | |||
UrlNewRepo = "newRepo" | |||
UrlContribute = "contribute" | |||
UrlSetIssue = "setIssue" | |||
Success = 0 | |||
) | |||
@@ -29,9 +29,9 @@ type CreateAccountResult struct { | |||
} | |||
type GetBalanceResult struct { | |||
Code int `json:"code"` | |||
Msg string `json:"message"` | |||
Data string `json:"data"` | |||
Code int `json:"code"` | |||
Msg string `json:"message"` | |||
Data string `json:"data"` | |||
} | |||
type NewRepoResult struct { | |||
@@ -41,14 +41,14 @@ type NewRepoResult struct { | |||
} | |||
type ContributeResult struct { | |||
Code int `json:"code"` | |||
Msg string `json:"message"` | |||
Code int `json:"code"` | |||
Msg string `json:"message"` | |||
//Payload map[string]interface{} `json:"data"` | |||
} | |||
type SetIssueResult struct { | |||
Code int `json:"code"` | |||
Msg string `json:"message"` | |||
Code int `json:"code"` | |||
Msg string `json:"message"` | |||
//Data string `json:"data"` | |||
} | |||
@@ -136,10 +136,10 @@ func Contribute(contractAddress, contributor, commitId string, amount int64) (*C | |||
res, err := client.R(). | |||
SetHeader("Accept", "application/json"). | |||
SetQueryParams(map[string]string{ | |||
"contractAddress" : contractAddress, | |||
"contributor" : contributor, | |||
"commitId": commitId, | |||
"amount": strAmount, | |||
"contractAddress": contractAddress, | |||
"contributor": contributor, | |||
"commitId": commitId, | |||
"amount": strAmount, | |||
}). | |||
SetResult(&result). | |||
Get(setting.BlockChainHost + UrlContribute) | |||
@@ -164,10 +164,10 @@ func SetIssue(contractAddress, contributor string, issueId int64, amount int64) | |||
res, err := client.R(). | |||
SetHeader("Accept", "application/json"). | |||
SetQueryParams(map[string]string{ | |||
"contractAddress" : contractAddress, | |||
"contributor" : contributor, | |||
"issueId": strIssue, | |||
"amount": strAmount, | |||
"contractAddress": contractAddress, | |||
"contributor": contributor, | |||
"issueId": strIssue, | |||
"amount": strAmount, | |||
}). | |||
SetResult(&result). | |||
Get(setting.BlockChainHost + UrlSetIssue) | |||
@@ -10,13 +10,13 @@ import ( | |||
) | |||
const ( | |||
Command = `pip3 install jupyterlab==2.2.5 -i https://pypi.tuna.tsinghua.edu.cn/simple;service ssh stop;jupyter lab --no-browser --ip=0.0.0.0 --allow-root --notebook-dir="/code" --port=80 --LabApp.token="" --LabApp.allow_origin="self https://cloudbrain.pcl.ac.cn"` | |||
CodeMountPath = "/code" | |||
DataSetMountPath = "/dataset" | |||
ModelMountPath = "/model" | |||
BenchMarkMountPath = "/benchmark" | |||
Command = `pip3 install jupyterlab==2.2.5 -i https://pypi.tuna.tsinghua.edu.cn/simple;service ssh stop;jupyter lab --no-browser --ip=0.0.0.0 --allow-root --notebook-dir="/code" --port=80 --LabApp.token="" --LabApp.allow_origin="self https://cloudbrain.pcl.ac.cn"` | |||
CodeMountPath = "/code" | |||
DataSetMountPath = "/dataset" | |||
ModelMountPath = "/model" | |||
BenchMarkMountPath = "/benchmark" | |||
Snn4imagenetMountPath = "/snn4imagenet" | |||
TaskInfoName = "/taskInfo" | |||
TaskInfoName = "/taskInfo" | |||
SubTaskName = "task1" | |||
@@ -106,7 +106,7 @@ func GenerateTask(ctx *context.Context, jobName, image, command, uuid, codePath, | |||
JobName: jobName, | |||
SubTaskName: SubTaskName, | |||
JobType: jobType, | |||
Type: models.TypeCloudBrainOne, | |||
Type: models.TypeCloudBrainOne, | |||
}) | |||
if err != nil { | |||
@@ -10,46 +10,45 @@ import ( | |||
) | |||
const ( | |||
storageTypeOBS = "obs" | |||
storageTypeOBS = "obs" | |||
autoStopDuration = 4 * 60 * 60 | |||
flavor = "modelarts.kat1.xlarge" | |||
flavor = "modelarts.kat1.xlarge" | |||
//profileID = "Python3-ascend910-arm" | |||
profileID = "efa847c0-7359-11eb-b34f-0255ac100057" | |||
poolID = "pool1328035d" | |||
poolName = "train-private-1" | |||
poolType = "USER_DEFINED" | |||
poolID = "pool1328035d" | |||
poolName = "train-private-1" | |||
poolType = "USER_DEFINED" | |||
DataSetMountPath = "/home/ma-user/work" | |||
NotebookEnv = "Python3" | |||
NotebookType = "Ascend" | |||
FlavorInfo = "Ascend: 1*Ascend 910 CPU: 24 核 96GiB (modelarts.kat1.xlarge)" | |||
NotebookEnv = "Python3" | |||
NotebookType = "Ascend" | |||
FlavorInfo = "Ascend: 1*Ascend 910 CPU: 24 核 96GiB (modelarts.kat1.xlarge)" | |||
) | |||
func GenerateTask(ctx *context.Context, jobName, uuid, description string) error { | |||
dataActualPath := setting.Bucket + "/" + setting.BasePath + path.Join(uuid[0:1], uuid[1:2]) + "/" + uuid + "/" | |||
jobResult, err := CreateJob(models.CreateNotebookParams{ | |||
JobName: jobName, | |||
Description:description, | |||
ProfileID: profileID, | |||
Flavor: flavor, | |||
JobName: jobName, | |||
Description: description, | |||
ProfileID: profileID, | |||
Flavor: flavor, | |||
Pool: models.Pool{ | |||
ID: poolID, | |||
ID: poolID, | |||
Name: poolName, | |||
Type: poolType, | |||
}, | |||
Spec: models.Spec{ | |||
Storage: models.Storage{ | |||
Type: storageTypeOBS, | |||
Location:models.Location{ | |||
Location: models.Location{ | |||
Path: dataActualPath, | |||
}, | |||
}, | |||
AutoStop: models.AutoStop{ | |||
Enable: true, | |||
Enable: true, | |||
Duration: autoStopDuration, | |||
}, | |||
}, | |||
}) | |||
if err != nil { | |||
log.Error("CreateJob failed: %v", err.Error()) | |||
@@ -57,13 +56,13 @@ func GenerateTask(ctx *context.Context, jobName, uuid, description string) error | |||
} | |||
err = models.CreateCloudbrain(&models.Cloudbrain{ | |||
Status: string(models.JobWaiting), | |||
UserID: ctx.User.ID, | |||
RepoID: ctx.Repo.Repository.ID, | |||
JobID: jobResult.ID, | |||
JobName: jobName, | |||
JobType: string(models.JobTypeDebug), | |||
Type: models.TypeCloudBrainTwo, | |||
Status: string(models.JobWaiting), | |||
UserID: ctx.User.ID, | |||
RepoID: ctx.Repo.Repository.ID, | |||
JobID: jobResult.ID, | |||
JobName: jobName, | |||
JobType: string(models.JobTypeDebug), | |||
Type: models.TypeCloudBrainTwo, | |||
}) | |||
if err != nil { | |||
@@ -21,10 +21,11 @@ var ( | |||
const ( | |||
methodPassword = "password" | |||
urlGetToken = "/v3/auth/tokens" | |||
urlNotebook = "/demanager/instances" | |||
urlGetToken = "/v3/auth/tokens" | |||
urlNotebook = "/demanager/instances" | |||
errorCodeExceedLimit = "ModelArts.0118" | |||
) | |||
func getRestyClient() *resty.Client { | |||
if restyClient == nil { | |||
restyClient = resty.New() | |||
@@ -54,7 +55,7 @@ func getToken() error { | |||
Methods: []string{methodPassword}, | |||
Password: models.Password{ | |||
User: models.NotebookUser{ | |||
Name: setting.ModelArtsUsername, | |||
Name: setting.ModelArtsUsername, | |||
Password: setting.ModelArtsPassword, | |||
Domain: models.Domain{ | |||
Name: setting.ModelArtsDomain, | |||
@@ -790,7 +790,6 @@ func (obsClient ObsClient) GetBucketRequestPaymentWithSignedUrl(signedUrl string | |||
return | |||
} | |||
func (obsClient ObsClient) CreateUploadPartSignedUrl(bucketName, objectKey, uploadId string, partNumber int, partSize int64) (*http.Request, error) { | |||
var req *http.Request | |||
@@ -831,7 +830,7 @@ func (obsClient ObsClient) CreateUploadPartSignedUrl(bucketName, objectKey, uplo | |||
} | |||
} | |||
headers["Content-Length"] = []string{com.ToStr(partNumber,10)} | |||
headers["Content-Length"] = []string{com.ToStr(partNumber, 10)} | |||
requestURL, err := obsClient.doAuth(HTTP_PUT, bucketName, objectKey, params, headers, "") | |||
if err != nil { | |||
@@ -443,7 +443,7 @@ var ( | |||
IsBenchmarkEnabled bool | |||
BenchmarkCode string | |||
BenchmarkServerHost string | |||
BenchmarkCategory string | |||
BenchmarkCategory string | |||
//snn4imagenet config | |||
IsSnn4imagenetEnabled bool | |||
@@ -464,13 +464,13 @@ var ( | |||
//RealPath string | |||
//modelarts config | |||
ModelArtsHost string | |||
IamHost string | |||
ProjectID string | |||
ProjectName string | |||
ModelArtsUsername string | |||
ModelArtsPassword string | |||
ModelArtsDomain string | |||
ModelArtsHost string | |||
IamHost string | |||
ProjectID string | |||
ProjectName string | |||
ModelArtsUsername string | |||
ModelArtsPassword string | |||
ModelArtsDomain string | |||
) | |||
// DateLang transforms standard language locale name to corresponding value in datetime plugin. | |||
@@ -19,7 +19,7 @@ import ( | |||
//todo:修改查询方式 | |||
func ObsHasObject(path string) (bool, error) { | |||
hasObject := false | |||
output, err := ObsCli.ListObjects(&obs.ListObjectsInput{Bucket:setting.Bucket}) | |||
output, err := ObsCli.ListObjects(&obs.ListObjectsInput{Bucket: setting.Bucket}) | |||
if err != nil { | |||
log.Error("ListObjects failed:%v", err) | |||
return hasObject, err | |||
@@ -40,9 +40,9 @@ func GetObsPartInfos(uuid string, uploadID string) (string, error) { | |||
key := strings.TrimPrefix(path.Join(setting.BasePath, path.Join(uuid[0:1], uuid[1:2], uuid, uuid)), "/") | |||
output, err := ObsCli.ListParts(&obs.ListPartsInput{ | |||
Bucket: setting.Bucket, | |||
Key: key, | |||
UploadId: uploadID, | |||
Bucket: setting.Bucket, | |||
Key: key, | |||
UploadId: uploadID, | |||
}) | |||
if err != nil { | |||
log.Error("ListParts failed:", err.Error()) | |||
@@ -77,9 +77,9 @@ func CompleteObsMultiPartUpload(uuid, uploadID, fileName string) error { | |||
input.Key = strings.TrimPrefix(path.Join(setting.BasePath, path.Join(uuid[0:1], uuid[1:2], uuid, fileName)), "/") | |||
input.UploadId = uploadID | |||
output, err := ObsCli.ListParts(&obs.ListPartsInput{ | |||
Bucket: setting.Bucket, | |||
Key: input.Key, | |||
UploadId: uploadID, | |||
Bucket: setting.Bucket, | |||
Key: input.Key, | |||
UploadId: uploadID, | |||
}) | |||
if err != nil { | |||
log.Error("ListParts failed:", err.Error()) | |||
@@ -111,8 +111,8 @@ func ObsGenMultiPartSignedUrl(uuid string, uploadId string, partNumber int, file | |||
input.Method = obs.HttpMethodPut | |||
input.QueryParams = map[string]string{ | |||
"partNumber": com.ToStr(partNumber,10), | |||
"uploadId": uploadId, | |||
"partNumber": com.ToStr(partNumber, 10), | |||
"uploadId": uploadId, | |||
//"partSize": com.ToStr(partSize,10), | |||
} | |||
@@ -131,7 +131,7 @@ func ObsGetPreSignedUrl(uuid, fileName string) (string, error) { | |||
input.Key = strings.TrimPrefix(path.Join(setting.BasePath, path.Join(uuid[0:1], uuid[1:2], uuid, fileName)), "/") | |||
input.Bucket = setting.Bucket | |||
input.Expires = 60 * 60 | |||
reqParams := make(map[string]string) | |||
reqParams["response-content-disposition"] = "attachment; filename=\"" + fileName + "\"" | |||
input.QueryParams = reqParams | |||
@@ -42,7 +42,7 @@ func Copy(dstStorage ObjectStorage, dstPath string, srcStorage ObjectStorage, sr | |||
var ( | |||
// Attachments represents attachments storage | |||
Attachments ObjectStorage | |||
ObsCli *obs.ObsClient | |||
ObsCli *obs.ObsClient | |||
) | |||
// Init init the stoarge | |||
@@ -38,8 +38,8 @@ func GetModelArtsTask(ctx *context.APIContext) { | |||
} | |||
ctx.JSON(http.StatusOK, map[string]interface{}{ | |||
"JobID": jobID, | |||
"JobStatus": result.Status, | |||
"JobID": jobID, | |||
"JobStatus": result.Status, | |||
}) | |||
} |
@@ -42,12 +42,12 @@ type CloudBrainDataset struct { | |||
} | |||
type UploadForm struct { | |||
UploadID string `form:"uploadId"` | |||
UuID string `form:"uuid"` | |||
PartSize int64 `form:"size"` | |||
Offset int64 `form:"offset"` | |||
PartNumber int `form:"chunkNumber"` | |||
PartFile multipart.File `form:"file"` | |||
UploadID string `form:"uploadId"` | |||
UuID string `form:"uuid"` | |||
PartSize int64 `form:"size"` | |||
Offset int64 `form:"offset"` | |||
PartNumber int `form:"chunkNumber"` | |||
PartFile multipart.File `form:"file"` | |||
} | |||
func RenderAttachmentSettings(ctx *context.Context) { | |||
@@ -326,7 +326,7 @@ func AddAttachment(ctx *context.Context) { | |||
Name: ctx.Query("file_name"), | |||
Size: ctx.QueryInt64("size"), | |||
DatasetID: ctx.QueryInt64("dataset_id"), | |||
Type: typeCloudBrain, | |||
Type: typeCloudBrain, | |||
}) | |||
if err != nil { | |||
@@ -562,7 +562,7 @@ func NewMultipart(ctx *context.Context) { | |||
Md5: ctx.Query("md5"), | |||
Size: fileSize, | |||
TotalChunks: totalChunkCounts, | |||
Type: typeCloudBrain, | |||
Type: typeCloudBrain, | |||
}) | |||
if err != nil { | |||
@@ -624,12 +624,12 @@ func GetObsKey(ctx *context.Context) { | |||
key := strings.TrimPrefix(path.Join(setting.BasePath, path.Join(uuid[0:1], uuid[1:2], uuid, uuid)), "/") | |||
ctx.JSON(200, map[string]string{ | |||
"uuid": uuid, | |||
"key": key, | |||
"access_key_id": setting.AccessKeyID, | |||
"uuid": uuid, | |||
"key": key, | |||
"access_key_id": setting.AccessKeyID, | |||
"secret_access_key": setting.SecretAccessKey, | |||
"server": setting.Endpoint, | |||
"bucket": setting.Bucket, | |||
"server": setting.Endpoint, | |||
"bucket": setting.Bucket, | |||
}) | |||
} | |||
@@ -684,7 +684,7 @@ func CompleteMultipart(ctx *context.Context) { | |||
Name: fileName, | |||
Size: ctx.QueryInt64("size"), | |||
DatasetID: ctx.QueryInt64("dataset_id"), | |||
Type: typeCloudBrain, | |||
Type: typeCloudBrain, | |||
}) | |||
if err != nil { | |||
@@ -20,13 +20,14 @@ type BlockChainCommitNotify struct { | |||
CommitID string `json:"commitId"` | |||
TransactionHash string `json:"txHash"` | |||
} | |||
const ( | |||
tplBlockChainIndex base.TplName = "repo/blockchain/index" | |||
) | |||
func BlockChainIndex(ctx *context.Context) { | |||
repo := ctx.Repo.Repository | |||
if repo.ContractAddress == "" || ctx.User.PublicKey == ""{ | |||
if repo.ContractAddress == "" || ctx.User.PublicKey == "" { | |||
log.Error("the repo(%d) or the user(%d) has not been initialized in block_chain", repo.RepoID, ctx.User.ID) | |||
ctx.HTML(http.StatusInternalServerError, tplBlockChainIndex) | |||
return | |||
@@ -245,14 +246,14 @@ func HandleBlockChainMergedPulls() { | |||
} | |||
blockChain := models.BlockChain{ | |||
Contributor : poster.PublicKey, | |||
PrID : pr.ID, | |||
CommitID : pr.MergedCommitID, | |||
ContractAddress : repo.ContractAddress, | |||
Status : models.BlockChainCommitInit, | |||
Amount : int64(pr.Amount), | |||
UserID : poster.ID, | |||
RepoID : pr.HeadRepoID, | |||
Contributor: poster.PublicKey, | |||
PrID: pr.ID, | |||
CommitID: pr.MergedCommitID, | |||
ContractAddress: repo.ContractAddress, | |||
Status: models.BlockChainCommitInit, | |||
Amount: int64(pr.Amount), | |||
UserID: poster.ID, | |||
RepoID: pr.HeadRepoID, | |||
} | |||
_, err = models.InsertBlockChain(&blockChain) | |||
if err != nil { | |||
@@ -46,7 +46,7 @@ func CloudBrainIndex(ctx *context.Context) { | |||
PageSize: setting.UI.IssuePagingNum, | |||
}, | |||
RepoID: repo.ID, | |||
Type: models.TypeCloudBrainOne, | |||
Type: models.TypeCloudBrainOne, | |||
}) | |||
if err != nil { | |||
ctx.ServerError("Cloudbrain", err) | |||
@@ -148,7 +148,7 @@ func CloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { | |||
jobType := form.JobType | |||
codePath := setting.JobPath + jobName + cloudbrain.CodeMountPath | |||
if jobType != string(models.JobTypeBenchmark) && jobType != string(models.JobTypeDebug) && jobType != string(models.JobTypeSnn4imagenet){ | |||
if jobType != string(models.JobTypeBenchmark) && jobType != string(models.JobTypeDebug) && jobType != string(models.JobTypeSnn4imagenet) { | |||
log.Error("jobtype error:", jobType) | |||
ctx.RenderWithErr("jobtype error", tplCloudBrainNew, &form) | |||
return | |||
@@ -365,11 +365,11 @@ func downloadRateCode(repo *models.Repository, taskName, gitPath, codePath, benc | |||
defer f.Close() | |||
data, err := json.Marshal(models.TaskInfo{ | |||
Username: repo.Owner.Name, | |||
TaskName: taskName, | |||
CodeName: repo.Name, | |||
Username: repo.Owner.Name, | |||
TaskName: taskName, | |||
CodeName: repo.Name, | |||
BenchmarkCategory: strings.Split(benchmarkCategory, ","), | |||
CodeLink: strings.TrimSuffix(repo.CloneLink().HTTPS, ".git"), | |||
CodeLink: strings.TrimSuffix(repo.CloneLink().HTTPS, ".git"), | |||
}) | |||
if err != nil { | |||
log.Error("json.Marshal failed", err.Error()) | |||
@@ -43,7 +43,7 @@ func ModelArtsIndex(ctx *context.Context) { | |||
PageSize: setting.UI.IssuePagingNum, | |||
}, | |||
RepoID: repo.ID, | |||
Type: models.TypeCloudBrainTwo, | |||
Type: models.TypeCloudBrainTwo, | |||
}) | |||
if err != nil { | |||
ctx.ServerError("Cloudbrain", err) | |||
@@ -165,7 +165,6 @@ func ModelArtsDebug(ctx *context.Context) { | |||
return | |||
} | |||
urls := strings.Split(result.Spec.Annotations.Url, "/") | |||
urlPrefix := result.Spec.Annotations.TargetDomain | |||
for i, url := range urls { | |||
@@ -244,4 +243,3 @@ func ModelArtsDel(ctx *context.Context) { | |||
ctx.Redirect(setting.AppSubURL + ctx.Repo.RepoLink + "/modelarts") | |||
} | |||