From c4c996a29c77c0b5b8b00a266b0739757a199748 Mon Sep 17 00:00:00 2001 From: songjc <969378911@qq.com> Date: Thu, 24 Aug 2023 11:00:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0storage=20api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/storage/package.go | 74 +++++++++++++++++++++++++++++++++++++ api/storage/storage_test.go | 19 ++++++++++ api/unifyops/unifyops.go | 1 - 3 files changed, 93 insertions(+), 1 deletion(-) diff --git a/api/storage/package.go b/api/storage/package.go index b7f8746..e9b128b 100644 --- a/api/storage/package.go +++ b/api/storage/package.go @@ -108,3 +108,77 @@ func (c *Client) PackageDelete(req PackageDeleteReq) error { return fmt.Errorf("unknow response content type: %s", contType) } + +type PackageReq struct { + PackageID int64 `json:"packageID"` + UserID int64 `json:"userID"` +} + +type CacheLocations struct { + NodeIDs []int64 `json:"nodeIDs"` + RedunancyType string `json:"redunancyType"` +} + +func (c *Client) GetCacheNodesByPackage(req PackageReq) (*CacheLocations, error) { + url, err := url.JoinPath(c.baseURL, "/package/getCacheNodeIDs") + if err != nil { + return nil, err + } + resp, err := myhttp.GetJSON(url, myhttp.RequestParam{ + Body: req, + }) + if err != nil { + return nil, err + } + + contType := resp.Header.Get("Content-Type") + if strings.Contains(contType, myhttp.ContentTypeJSON) { + + var codeResp response[CacheLocations] + if err := serder.JSONToObjectStream(resp.Body, &codeResp); err != nil { + return nil, fmt.Errorf("parsing response: %w", err) + } + + if codeResp.Code == errorcode.OK { + return &codeResp.Data, nil + } + + return nil, codeResp.ToError() + } + + return nil, fmt.Errorf("unknow response content type: %s", contType) +} + +type StorageLocations struct { + NodeIDs []int64 `json:"nodeIDs"` +} + +func (c *Client) GetStorageNodesByPackage(req PackageReq) (*StorageLocations, error) { + url, err := url.JoinPath(c.baseURL, "/package/getStorageNodeIDs") + if err != nil { + return nil, err + } + resp, err := myhttp.GetJSON(url, myhttp.RequestParam{ + Body: req, + }) + if err != nil { + return nil, err + } + + contType := resp.Header.Get("Content-Type") + if strings.Contains(contType, myhttp.ContentTypeJSON) { + + var codeResp response[StorageLocations] + if err := serder.JSONToObjectStream(resp.Body, &codeResp); err != nil { + return nil, fmt.Errorf("parsing response: %w", err) + } + + if codeResp.Code == errorcode.OK { + return &codeResp.Data, nil + } + + return nil, codeResp.ToError() + } + + return nil, fmt.Errorf("unknow response content type: %s", contType) +} diff --git a/api/storage/storage_test.go b/api/storage/storage_test.go index b4e00d3..cc38636 100644 --- a/api/storage/storage_test.go +++ b/api/storage/storage_test.go @@ -153,3 +153,22 @@ func Test_Cache(t *testing.T) { So(err, ShouldBeNil) }) } + +func Test_GetNodeIDs(t *testing.T) { + Convey("测试获取node信息", t, func() { + cli := NewClient(&Config{ + URL: "http://localhost:7890", + }) + _, err := cli.GetCacheNodesByPackage(PackageReq{ + PackageID: 4, + UserID: 0, + }) + So(err, ShouldBeNil) + + _, err = cli.GetStorageNodesByPackage(PackageReq{ + PackageID: 4, + UserID: 0, + }) + So(err, ShouldBeNil) + }) +} diff --git a/api/unifyops/unifyops.go b/api/unifyops/unifyops.go index 51e6dd3..769e062 100644 --- a/api/unifyops/unifyops.go +++ b/api/unifyops/unifyops.go @@ -60,7 +60,6 @@ type DetailType[T any] struct { } func (c *Client) GetCPUData(node Node) (*ResourceData[int64], error) { - //TODO 整合成一个接口,参数增加一个resourceType,根据type调用不同的接口 url, err := url.JoinPath(c.baseURL, "/cmdb/resApi/getCPUData") if err != nil { return nil, err