package coordinator import ( "gitlink.org.cn/cloudream/common/pkgs/mq" cdssdk "gitlink.org.cn/cloudream/common/sdks/storage" stgmod "gitlink.org.cn/cloudream/storage/common/models" ) type HubService interface { GetHubConfig(msg *GetHubConfig) (*GetHubConfigResp, *mq.CodeMessage) GetUserHubs(msg *GetUserHubs) (*GetUserHubsResp, *mq.CodeMessage) GetHubs(msg *GetHubs) (*GetHubsResp, *mq.CodeMessage) GetHubConnectivities(msg *GetHubConnectivities) (*GetHubConnectivitiesResp, *mq.CodeMessage) UpdateHubConnectivities(msg *UpdateHubConnectivities) (*UpdateHubConnectivitiesResp, *mq.CodeMessage) } var _ = Register(Service.GetHubConfig) type GetHubConfig struct { mq.MessageBodyBase HubID cdssdk.HubID `json:"hubID"` } type GetHubConfigResp struct { mq.MessageBodyBase Hub cdssdk.Hub `json:"hub"` Storages []stgmod.StorageDetail `json:"storages"` } func ReqGetHubConfig(hubID cdssdk.HubID) *GetHubConfig { return &GetHubConfig{ HubID: hubID, } } func RespGetHubConfig(hub cdssdk.Hub, storages []stgmod.StorageDetail) *GetHubConfigResp { return &GetHubConfigResp{ Hub: hub, Storages: storages, } } func (client *Client) GetHubConfig(msg *GetHubConfig) (*GetHubConfigResp, error) { return mq.Request(Service.GetHubConfig, client.rabbitCli, msg) } // 查询用户可用的节点 var _ = Register(Service.GetUserHubs) type GetUserHubs struct { mq.MessageBodyBase UserID cdssdk.UserID `json:"userID"` } type GetUserHubsResp struct { mq.MessageBodyBase Hubs []cdssdk.Hub `json:"hubs"` } func NewGetUserHubs(userID cdssdk.UserID) *GetUserHubs { return &GetUserHubs{ UserID: userID, } } func NewGetUserHubsResp(hubs []cdssdk.Hub) *GetUserHubsResp { return &GetUserHubsResp{ Hubs: hubs, } } func (client *Client) GetUserHubs(msg *GetUserHubs) (*GetUserHubsResp, error) { return mq.Request(Service.GetUserHubs, client.rabbitCli, msg) } // 获取指定节点的信息。如果HubIDs为nil,则返回所有Hub var _ = Register(Service.GetHubs) type GetHubs struct { mq.MessageBodyBase HubIDs []cdssdk.HubID `json:"hubIDs"` } type GetHubsResp struct { mq.MessageBodyBase Hubs []cdssdk.Hub `json:"hubs"` } func NewGetHubs(hubIDs []cdssdk.HubID) *GetHubs { return &GetHubs{ HubIDs: hubIDs, } } func NewGetHubsResp(hubs []cdssdk.Hub) *GetHubsResp { return &GetHubsResp{ Hubs: hubs, } } func (r *GetHubsResp) GetHub(id cdssdk.HubID) *cdssdk.Hub { for _, n := range r.Hubs { if n.HubID == id { return &n } } return nil } func (client *Client) GetHubs(msg *GetHubs) (*GetHubsResp, error) { return mq.Request(Service.GetHubs, client.rabbitCli, msg) } // 获取节点连通性信息 var _ = Register(Service.GetHubConnectivities) type GetHubConnectivities struct { mq.MessageBodyBase HubIDs []cdssdk.HubID `json:"hubIDs"` } type GetHubConnectivitiesResp struct { mq.MessageBodyBase Connectivities []cdssdk.HubConnectivity `json:"hubs"` } func ReqGetHubConnectivities(hubIDs []cdssdk.HubID) *GetHubConnectivities { return &GetHubConnectivities{ HubIDs: hubIDs, } } func RespGetHubConnectivities(cons []cdssdk.HubConnectivity) *GetHubConnectivitiesResp { return &GetHubConnectivitiesResp{ Connectivities: cons, } } func (client *Client) GetHubConnectivities(msg *GetHubConnectivities) (*GetHubConnectivitiesResp, error) { return mq.Request(Service.GetHubConnectivities, client.rabbitCli, msg) } // 批量更新节点连通性信息 var _ = Register(Service.UpdateHubConnectivities) type UpdateHubConnectivities struct { mq.MessageBodyBase Connectivities []cdssdk.HubConnectivity `json:"connectivities"` } type UpdateHubConnectivitiesResp struct { mq.MessageBodyBase } func ReqUpdateHubConnectivities(cons []cdssdk.HubConnectivity) *UpdateHubConnectivities { return &UpdateHubConnectivities{ Connectivities: cons, } } func RespUpdateHubConnectivities() *UpdateHubConnectivitiesResp { return &UpdateHubConnectivitiesResp{} } func (client *Client) UpdateHubConnectivities(msg *UpdateHubConnectivities) (*UpdateHubConnectivitiesResp, error) { return mq.Request(Service.UpdateHubConnectivities, client.rabbitCli, msg) }