You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

models.go 4.6 kB

2 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. package schsdk
  2. import (
  3. "gitlink.org.cn/cloudream/common/pkgs/types"
  4. cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
  5. "gitlink.org.cn/cloudream/common/utils/serder"
  6. )
  7. const (
  8. JobTypeNormal = "Normal"
  9. JobTypeResource = "Resource"
  10. JobTypeInstance = "Instance"
  11. FileInfoTypePackage = "Package"
  12. FileInfoTypeLocalFile = "LocalFile"
  13. FileInfoTypeResource = "Resource"
  14. FileInfoTypeImage = "Image"
  15. )
  16. type JobID string
  17. type JobSetID string
  18. type ImageID int64
  19. // 计算中心ID
  20. type CCID int64
  21. type JobSetInfo struct {
  22. Jobs []JobInfo `json:"jobs"`
  23. }
  24. type JobInfo interface {
  25. GetLocalJobID() string
  26. }
  27. var JobInfoTypeUnion = types.NewTypeUnion[JobInfo](
  28. (*NormalJobInfo)(nil),
  29. (*DataReturnJobInfo)(nil),
  30. (*MultiInstanceJobInfo)(nil),
  31. (*InstanceJobInfo)(nil),
  32. )
  33. var _ = serder.UseTypeUnionInternallyTagged(&JobInfoTypeUnion, "type")
  34. type JobInfoBase struct {
  35. LocalJobID string `json:"localJobID"`
  36. }
  37. func (i *JobInfoBase) GetLocalJobID() string {
  38. return i.LocalJobID
  39. }
  40. type NormalJobInfo struct {
  41. serder.Metadata `union:"Normal"`
  42. JobInfoBase
  43. Type string `json:"type"`
  44. Files JobFilesInfo `json:"files"`
  45. Runtime JobRuntimeInfo `json:"runtime"`
  46. Resources JobResourcesInfo `json:"resources"`
  47. Services JobServicesInfo `json:"services"`
  48. }
  49. type DataReturnJobInfo struct {
  50. serder.Metadata `union:"DataReturn"`
  51. JobInfoBase
  52. Type string `json:"type"`
  53. BucketID cdssdk.BucketID `json:"bucketID"`
  54. TargetLocalJobID string `json:"targetLocalJobID"`
  55. }
  56. type MultiInstanceJobInfo struct {
  57. serder.Metadata `union:"MultiInstance"`
  58. JobInfoBase
  59. Type string `json:"type"`
  60. Files JobFilesInfo `json:"files"`
  61. Runtime JobRuntimeInfo `json:"runtime"`
  62. Resources JobResourcesInfo `json:"resources"`
  63. }
  64. type InstanceJobInfo struct {
  65. serder.Metadata `union:"Instance"`
  66. JobInfoBase
  67. Type string `json:"type"`
  68. LocalJobID string `json:"multiInstJobID"`
  69. Files JobFilesInfo `json:"files"`
  70. Runtime JobRuntimeInfo `json:"runtime"`
  71. Resources JobResourcesInfo `json:"resources"`
  72. }
  73. type JobFilesInfo struct {
  74. Dataset JobFileInfo `json:"dataset"`
  75. Code JobFileInfo `json:"code"`
  76. Image JobFileInfo `json:"image"`
  77. }
  78. type JobFileInfo interface {
  79. Noop()
  80. }
  81. var FileInfoTypeUnion = types.NewTypeUnion[JobFileInfo](
  82. (*PackageJobFileInfo)(nil),
  83. (*LocalJobFileInfo)(nil),
  84. (*DataReturnJobFileInfo)(nil),
  85. (*ImageJobFileInfo)(nil),
  86. )
  87. var _ = serder.UseTypeUnionInternallyTagged(&FileInfoTypeUnion, "type")
  88. type JobFileInfoBase struct{}
  89. func (i *JobFileInfoBase) Noop() {}
  90. type PackageJobFileInfo struct {
  91. serder.Metadata `union:"Package"`
  92. JobFileInfoBase
  93. Type string `json:"type"`
  94. PackageID cdssdk.PackageID `json:"packageID"`
  95. }
  96. type LocalJobFileInfo struct {
  97. serder.Metadata `union:"LocalFile"`
  98. JobFileInfoBase
  99. Type string `json:"type"`
  100. LocalPath string `json:"localPath"`
  101. }
  102. type DataReturnJobFileInfo struct {
  103. serder.Metadata `union:"DataReturn"`
  104. JobFileInfoBase
  105. Type string `json:"type"`
  106. DataReturnLocalJobID string `json:"dataReturnLocalJobID"`
  107. }
  108. type ImageJobFileInfo struct {
  109. serder.Metadata `union:"Image"`
  110. JobFileInfoBase
  111. Type string `json:"type"`
  112. ImageID ImageID `json:"imageID"`
  113. }
  114. type JobRuntimeInfo struct {
  115. Command string `json:"command"`
  116. Envs []KVPair `json:"envs"`
  117. }
  118. type KVPair struct {
  119. Key string `json:"key"`
  120. Value string `json:"value"`
  121. }
  122. // CPU、GPU、NPU、MLU单位为:核
  123. // Storage、Memory单位为:字节
  124. type JobResourcesInfo struct {
  125. CPU float64 `json:"cpu"`
  126. GPU float64 `json:"gpu"`
  127. NPU float64 `json:"npu"`
  128. MLU float64 `json:"mlu"`
  129. Storage int64 `json:"storage"`
  130. Memory int64 `json:"memory"`
  131. }
  132. type JobSetFilesUploadScheme struct {
  133. LocalFileSchemes []LocalFileUploadScheme `json:"localFileUploadSchemes"`
  134. }
  135. type JobFilesUploadScheme struct {
  136. LocalFileSchemes []LocalFileUploadScheme `json:"localFileUploadSchemes"`
  137. }
  138. type LocalFileUploadScheme struct {
  139. LocalPath string `json:"localPath"`
  140. UploadToCDSNodeID *cdssdk.NodeID `json:"uploadToCDSNodeID"`
  141. }
  142. type JobServicesInfo struct {
  143. ServicePortInfos []ServicePortInfo `json:"servicePortInfos"`
  144. }
  145. type ServicePortInfo struct {
  146. Name string `json:"name"`
  147. Port int64 `json:"port"`
  148. }
  149. type JobSetServiceInfo struct {
  150. Name string `json:"name"`
  151. Port int64 `json:"port"`
  152. CDSNodeID *cdssdk.NodeID `json:"cdsNodeID"`
  153. LocalJobID string `json:"localJobID"`
  154. }