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

2 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. package schsdk
  2. import (
  3. "gitlink.org.cn/cloudream/common/pkgs/mq"
  4. "gitlink.org.cn/cloudream/common/pkgs/types"
  5. cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
  6. "gitlink.org.cn/cloudream/common/utils/serder"
  7. )
  8. const (
  9. JobTypeNormal = "Normal"
  10. JobTypeResource = "Resource"
  11. FileInfoTypePackage = "Package"
  12. FileInfoTypeLocalFile = "LocalFile"
  13. FileInfoTypeResource = "Resource"
  14. FileInfoTypeImage = "Image"
  15. )
  16. type JobID string
  17. type JobSetID string
  18. type ImageID string
  19. // 计算中心ID
  20. type CCID string
  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. (*ResourceJobInfo)(nil),
  30. )
  31. var _ = serder.RegisterNewTaggedTypeUnion(JobInfoTypeUnion, "Type", "type")
  32. var _ = mq.RegisterUnionType(JobInfoTypeUnion)
  33. type JobInfoBase struct {
  34. LocalJobID string `json:"localJobID"`
  35. }
  36. func (i *JobInfoBase) GetLocalJobID() string {
  37. return i.LocalJobID
  38. }
  39. type NormalJobInfo struct {
  40. JobInfoBase
  41. Type string `json:"type" union:"Normal"`
  42. Files JobFilesInfo `json:"files"`
  43. Runtime JobRuntimeInfo `json:"runtime"`
  44. Resources JobResourcesInfo `json:"resources"`
  45. }
  46. type ResourceJobInfo struct {
  47. JobInfoBase
  48. Type string `json:"type" union:"Resource"`
  49. BucketID int64 `json:"bucketID"`
  50. Redundancy cdssdk.TypedRedundancyInfo `json:"redundancy"`
  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.RegisterNewTaggedTypeUnion(FileInfoTypeUnion, "Type", "type")
  68. var _ = mq.RegisterUnionType(FileInfoTypeUnion)
  69. type JobFileInfoBase struct{}
  70. func (i *JobFileInfoBase) Noop() {}
  71. type PackageJobFileInfo struct {
  72. JobFileInfoBase
  73. Type string `json:"type" union:"Package"`
  74. PackageID int64 `json:"packageID"`
  75. }
  76. type LocalJobFileInfo struct {
  77. JobFileInfoBase
  78. Type string `json:"type" union:"LocalFile"`
  79. LocalPath string `json:"localPath"`
  80. }
  81. type ResourceJobFileInfo struct {
  82. JobFileInfoBase
  83. Type string `json:"type" union:"Resource"`
  84. ResourceLocalJobID string `json:"resourceLocalJobID"`
  85. }
  86. type ImageJobFileInfo struct {
  87. JobFileInfoBase
  88. Type string `json:"type" union:"Image"`
  89. ImageID ImageID `json:"imageID"`
  90. }
  91. type JobRuntimeInfo struct {
  92. Command string `json:"command"`
  93. Envs []KVPair `json:"envs"`
  94. }
  95. type KVPair struct {
  96. Key string `json:"key"`
  97. Value string `json:"value"`
  98. }
  99. // CPU、GPU、NPU、MLU单位为:核
  100. // Storage、Memory单位为:字节
  101. type JobResourcesInfo struct {
  102. CPU float64 `json:"cpu"`
  103. GPU float64 `json:"gpu"`
  104. NPU float64 `json:"npu"`
  105. MLU float64 `json:"mlu"`
  106. Storage int64 `json:"storage"`
  107. Memory int64 `json:"memory"`
  108. }
  109. func JobSetInfoFromJSON(data []byte) (*JobSetInfo, error) {
  110. mp := make(map[string]any)
  111. if err := serder.JSONToObject(data, &mp); err != nil {
  112. return nil, err
  113. }
  114. var ret JobSetInfo
  115. err := serder.MapToObject(mp, &ret)
  116. if err != nil {
  117. return nil, err
  118. }
  119. return &ret, nil
  120. }
  121. type JobSetFilesUploadScheme struct {
  122. LocalFileSchemes []LocalFileUploadScheme `json:"localFileUploadSchemes"`
  123. }
  124. type LocalFileUploadScheme struct {
  125. LocalPath string `json:"localPath"`
  126. UploadToCDSNodeID *int64 `json:"uploadToCDSNodeID"`
  127. }