diff --git a/sdks/imfs/models.go b/sdks/imfs/models.go index 8565719..4f6a03f 100644 --- a/sdks/imfs/models.go +++ b/sdks/imfs/models.go @@ -3,4 +3,9 @@ package imsdk const ( EnvPackageList = "IMFS_PACKAGE_LIST" EnvServiceAddress = "IMFS_SERVICE_ADDRESS" + + EnvLocalJobID = "LOCAL_JOB_ID" + EnvJobsetID = "JOBSET_ID" + EnvClientServiceList = "CLENT_SERVICE_LIST" + EnvServerServiceList = "SERVER_SERVICE_LIST" ) diff --git a/sdks/imfs/proxy.go b/sdks/imfs/proxy.go new file mode 100644 index 0000000..ec55f64 --- /dev/null +++ b/sdks/imfs/proxy.go @@ -0,0 +1,45 @@ +package imsdk + +import ( + "net/url" + + "gitlink.org.cn/cloudream/common/consts/errorcode" + schsdk "gitlink.org.cn/cloudream/common/sdks/scheduler" + myhttp "gitlink.org.cn/cloudream/common/utils/http" +) + +const ProxyGetServiceInfoPath = "/proxy/getServiceInfo" + +type ProxyGetServiceInfo struct { + ServiceName string `json:"serviceName"` + JobSetID schsdk.JobSetID `json:"jobSetID"` +} + +type ProxyGetServiceInfoResp struct { + LocalJobID string `json:"localJobID"` +} + +func (c *Client) ProxyGetJobID(req ProxyGetServiceInfo) (*ProxyGetServiceInfoResp, error) { + url, err := url.JoinPath(c.baseURL, ProxyGetServiceInfoPath) + if err != nil { + return nil, err + } + + resp, err := myhttp.GetForm(url, myhttp.RequestParam{ + Query: req, + }) + if err != nil { + return nil, err + } + + jsonResp, err := myhttp.ParseJSONResponse[response[ProxyGetServiceInfoResp]](resp) + if err != nil { + return nil, err + } + + if jsonResp.Code == errorcode.OK { + return &jsonResp.Data, nil + } + + return nil, jsonResp.ToError() +} diff --git a/sdks/storage/models.go b/sdks/storage/models.go index b6ed0fb..9c60ce1 100644 --- a/sdks/storage/models.go +++ b/sdks/storage/models.go @@ -114,6 +114,18 @@ type Object struct { Redundancy Redundancy `db:"Redundancy" json:"redundancy"` } +type Node struct { + NodeID NodeID `db:"NodeID" json:"nodeID"` + Name string `db:"Name" json:"name"` + LocalIP string `db:"LocalIP" json:"localIP"` + ExternalIP string `db:"ExternalIP" json:"externalIP"` + LocalGRPCPort int `db:"LocalGRPCPort" json:"localGRPCPort"` + ExternalGRPCPort int `db:"ExternalGRPCPort" json:"externalGRPCPort"` + LocationID LocationID `db:"LocationID" json:"locationID"` + State string `db:"State" json:"state"` + LastReportTime *time.Time `db:"LastReportTime" json:"lastReportTime"` +} + type PinnedObject struct { ObjectID ObjectID `db:"ObjectID" json:"objectID"` NodeID NodeID `db:"NodeID" json:"nodeID"` diff --git a/sdks/storage/node.go b/sdks/storage/node.go new file mode 100644 index 0000000..050e859 --- /dev/null +++ b/sdks/storage/node.go @@ -0,0 +1,43 @@ +package cdssdk + +import ( + "net/url" + + "gitlink.org.cn/cloudream/common/consts/errorcode" + myhttp "gitlink.org.cn/cloudream/common/utils/http" +) + +var NodeGetNodesPath = "/node/getNodes" + +type NodeGetNodesReq struct { + NodeIDs []NodeID `json:"nodeIDs"` +} + +type NodeGetNodesResp struct { + Nodes []Node `json:"nodes"` +} + +func (c *Client) NodeGetNodes(req NodeGetNodesReq) (*NodeGetNodesResp, error) { + url, err := url.JoinPath(c.baseURL, NodeGetNodesPath) + if err != nil { + return nil, err + } + + resp, err := myhttp.GetForm(url, myhttp.RequestParam{ + Query: req, + }) + if err != nil { + return nil, err + } + + jsonResp, err := myhttp.ParseJSONResponse[response[NodeGetNodesResp]](resp) + if err != nil { + return nil, err + } + + if jsonResp.Code == errorcode.OK { + return &jsonResp.Data, nil + } + + return nil, jsonResp.ToError() +}