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 3.8 kB

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