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.

unifyops.go 6.8 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
  1. package uopsdk
  2. import (
  3. "fmt"
  4. "net/url"
  5. "strings"
  6. myhttp "gitlink.org.cn/cloudream/common/utils/http"
  7. "gitlink.org.cn/cloudream/common/utils/serder"
  8. )
  9. const CORRECT_CODE int = 200
  10. type GetAllSlwNodeInfoResp struct {
  11. Nodes []SlwNode `json:"nodes"`
  12. }
  13. func (c *Client) GetAllSlwNodeInfo() (*GetAllSlwNodeInfoResp, error) {
  14. url, err := url.JoinPath(c.baseURL, "/cmdb/resApi/getSlwNodeInfo")
  15. if err != nil {
  16. return nil, err
  17. }
  18. resp, err := myhttp.GetJSON(url, myhttp.RequestParam{})
  19. if err != nil {
  20. return nil, err
  21. }
  22. contType := resp.Header.Get("Content-Type")
  23. if strings.Contains(contType, myhttp.ContentTypeJSON) {
  24. var codeResp response[GetAllSlwNodeInfoResp]
  25. if err := serder.JSONToObjectStream(resp.Body, &codeResp); err != nil {
  26. return nil, fmt.Errorf("parsing response: %w", err)
  27. }
  28. if codeResp.Code == CORRECT_CODE {
  29. return &codeResp.Data, nil
  30. }
  31. return nil, codeResp.ToError()
  32. }
  33. return nil, fmt.Errorf("unknow response content type: %s", contType)
  34. }
  35. type GetOneResourceDataReq struct {
  36. SlwNodeID SlwNodeID `json:"nodeId"`
  37. }
  38. func (c *Client) GetCPUData(node GetOneResourceDataReq) (*CPUResourceData, error) {
  39. url, err := url.JoinPath(c.baseURL, "/cmdb/resApi/getCPUData")
  40. if err != nil {
  41. return nil, err
  42. }
  43. resp, err := myhttp.PostJSON(url, myhttp.RequestParam{
  44. Body: node,
  45. })
  46. if err != nil {
  47. return nil, err
  48. }
  49. contType := resp.Header.Get("Content-Type")
  50. if strings.Contains(contType, myhttp.ContentTypeJSON) {
  51. var codeResp response[CPUResourceData]
  52. if err := serder.JSONToObjectStream(resp.Body, &codeResp); err != nil {
  53. return nil, fmt.Errorf("parsing response: %w", err)
  54. }
  55. if codeResp.Code == CORRECT_CODE {
  56. return &codeResp.Data, nil
  57. }
  58. return nil, codeResp.ToError()
  59. }
  60. return nil, fmt.Errorf("unknow response content type: %s", contType)
  61. }
  62. func (c *Client) GetNPUData(node GetOneResourceDataReq) (*NPUResourceData, error) {
  63. url, err := url.JoinPath(c.baseURL, "/cmdb/resApi/getNPUData")
  64. if err != nil {
  65. return nil, err
  66. }
  67. resp, err := myhttp.PostJSON(url, myhttp.RequestParam{
  68. Body: node,
  69. })
  70. if err != nil {
  71. return nil, err
  72. }
  73. contType := resp.Header.Get("Content-Type")
  74. if strings.Contains(contType, myhttp.ContentTypeJSON) {
  75. var codeResp response[NPUResourceData]
  76. if err := serder.JSONToObjectStream(resp.Body, &codeResp); err != nil {
  77. return nil, fmt.Errorf("parsing response: %w", err)
  78. }
  79. if codeResp.Code == CORRECT_CODE {
  80. return &codeResp.Data, nil
  81. }
  82. return nil, codeResp.ToError()
  83. }
  84. return nil, fmt.Errorf("unknow response content type: %s", contType)
  85. }
  86. func (c *Client) GetGPUData(node GetOneResourceDataReq) (*GPUResourceData, error) {
  87. url, err := url.JoinPath(c.baseURL, "/cmdb/resApi/getGPUData")
  88. if err != nil {
  89. return nil, err
  90. }
  91. resp, err := myhttp.PostJSON(url, myhttp.RequestParam{
  92. Body: node,
  93. })
  94. if err != nil {
  95. return nil, err
  96. }
  97. contType := resp.Header.Get("Content-Type")
  98. if strings.Contains(contType, myhttp.ContentTypeJSON) {
  99. var codeResp response[GPUResourceData]
  100. if err := serder.JSONToObjectStream(resp.Body, &codeResp); err != nil {
  101. return nil, fmt.Errorf("parsing response: %w", err)
  102. }
  103. if codeResp.Code == CORRECT_CODE {
  104. return &codeResp.Data, nil
  105. }
  106. return nil, codeResp.ToError()
  107. }
  108. return nil, fmt.Errorf("unknow response content type: %s", contType)
  109. }
  110. func (c *Client) GetMLUData(node GetOneResourceDataReq) (*MLUResourceData, error) {
  111. url, err := url.JoinPath(c.baseURL, "/cmdb/resApi/getMLUData")
  112. if err != nil {
  113. return nil, err
  114. }
  115. resp, err := myhttp.PostJSON(url, myhttp.RequestParam{
  116. Body: node,
  117. })
  118. if err != nil {
  119. return nil, err
  120. }
  121. contType := resp.Header.Get("Content-Type")
  122. if strings.Contains(contType, myhttp.ContentTypeJSON) {
  123. var codeResp response[MLUResourceData]
  124. if err := serder.JSONToObjectStream(resp.Body, &codeResp); err != nil {
  125. return nil, fmt.Errorf("parsing response: %w", err)
  126. }
  127. if codeResp.Code == CORRECT_CODE {
  128. return &codeResp.Data, nil
  129. }
  130. return nil, codeResp.ToError()
  131. }
  132. return nil, fmt.Errorf("unknow response content type: %s", contType)
  133. }
  134. func (c *Client) GetStorageData(node GetOneResourceDataReq) (*StorageResourceData, error) {
  135. url, err := url.JoinPath(c.baseURL, "/cmdb/resApi/getStorageData")
  136. if err != nil {
  137. return nil, err
  138. }
  139. resp, err := myhttp.PostJSON(url, myhttp.RequestParam{
  140. Body: node,
  141. })
  142. if err != nil {
  143. return nil, err
  144. }
  145. contType := resp.Header.Get("Content-Type")
  146. if strings.Contains(contType, myhttp.ContentTypeJSON) {
  147. var codeResp response[StorageResourceData]
  148. if err := serder.JSONToObjectStream(resp.Body, &codeResp); err != nil {
  149. return nil, fmt.Errorf("parsing response: %w", err)
  150. }
  151. if codeResp.Code == CORRECT_CODE {
  152. return &codeResp.Data, nil
  153. }
  154. return nil, codeResp.ToError()
  155. }
  156. return nil, fmt.Errorf("unknow response content type: %s", contType)
  157. }
  158. func (c *Client) GetMemoryData(node GetOneResourceDataReq) (*MemoryResourceData, error) {
  159. url, err := url.JoinPath(c.baseURL, "/cmdb/resApi/getMemoryData")
  160. if err != nil {
  161. return nil, err
  162. }
  163. resp, err := myhttp.PostJSON(url, myhttp.RequestParam{
  164. Body: node,
  165. })
  166. if err != nil {
  167. return nil, err
  168. }
  169. contType := resp.Header.Get("Content-Type")
  170. if strings.Contains(contType, myhttp.ContentTypeJSON) {
  171. var codeResp response[MemoryResourceData]
  172. if err := serder.JSONToObjectStream(resp.Body, &codeResp); err != nil {
  173. return nil, fmt.Errorf("parsing response: %w", err)
  174. }
  175. if codeResp.Code == CORRECT_CODE {
  176. return &codeResp.Data, nil
  177. }
  178. return nil, codeResp.ToError()
  179. }
  180. return nil, fmt.Errorf("unknow response content type: %s", contType)
  181. }
  182. func (c *Client) GetIndicatorData(node GetOneResourceDataReq) (*[]ResourceData, error) {
  183. url, err := url.JoinPath(c.baseURL, "/cmdb/resApi/getIndicatorData")
  184. if err != nil {
  185. return nil, err
  186. }
  187. resp, err := myhttp.PostJSON(url, myhttp.RequestParam{
  188. Body: node,
  189. })
  190. if err != nil {
  191. return nil, err
  192. }
  193. contType := resp.Header.Get("Content-Type")
  194. if strings.Contains(contType, myhttp.ContentTypeJSON) {
  195. var codeResp response[[]map[string]any]
  196. if err := serder.JSONToObjectStream(resp.Body, &codeResp); err != nil {
  197. return nil, fmt.Errorf("parsing response: %w", err)
  198. }
  199. if codeResp.Code != CORRECT_CODE {
  200. return nil, codeResp.ToError()
  201. }
  202. mapToObjOpt := serder.MapToObjectOption{
  203. UnionTypes: []serder.TaggedUnionType{
  204. ResourceDataTaggedTypeUnion,
  205. },
  206. }
  207. var ret []ResourceData
  208. for _, mp := range codeResp.Data {
  209. var data ResourceData
  210. err := serder.MapToObject(mp, &data, mapToObjOpt)
  211. if err != nil {
  212. return nil, err
  213. }
  214. ret = append(ret, data)
  215. }
  216. return &ret, nil
  217. }
  218. return nil, fmt.Errorf("unknow response content type: %s", contType)
  219. }