Adds Remote Cluster related API endpoints (#27432)
* Adds Remote Cluster related API endpoints
New endpoints for the following routes are added:
- Get Remote Clusters at `GET /api/v4/remotecluster`
- Create Remote Cluster at `POST /api/v4/remotecluster`
- Accept Remote Cluster invite at `POST
/api/v4/remotecluster/accept_invite`
- Generate Remote Cluster invite at `POST
/api/v4/remotecluster/{remote_id}/generate_invite`
- Get Remote Cluster at `GET /api/v4/remotecluster/{remote_id}`
- Patch Remote Cluster at `PATCH /api/v4/remotecluster/{remote_id}`
- Delete Remote Cluster at `DELETE /api/v4/remotecluster/{remote_id}`
These endpoints are planned to be used from the system console, and
gated through the `manage_secure_connections` permission.
* Update server/channels/api4/remote_cluster_test.go
Co-authored-by: Doug Lauder <wiggin77@warpmail.net>
* Fix AppError names
---------
Co-authored-by: Doug Lauder <wiggin77@warpmail.net>
Co-authored-by: Mattermost Build <build@mattermost.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
cc5e87ae24
Коммит
809ad4f76d
@@ -126,6 +126,37 @@ func (rc *RemoteCluster) IsValid() *AppError {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (rc *RemoteCluster) Sanitize() {
|
||||
rc.Token = ""
|
||||
rc.RemoteToken = ""
|
||||
}
|
||||
|
||||
type RemoteClusterPatch struct {
|
||||
DisplayName *string `json:"display_name"`
|
||||
}
|
||||
|
||||
func (rcp *RemoteClusterPatch) Auditable() map[string]interface{} {
|
||||
return map[string]interface{}{
|
||||
"display_name": rcp.DisplayName,
|
||||
}
|
||||
}
|
||||
|
||||
func (rc *RemoteCluster) Patch(patch *RemoteClusterPatch) {
|
||||
if patch.DisplayName != nil {
|
||||
rc.DisplayName = *patch.DisplayName
|
||||
}
|
||||
}
|
||||
|
||||
type RemoteClusterWithPassword struct {
|
||||
*RemoteCluster
|
||||
Password string `json:"password"`
|
||||
}
|
||||
|
||||
type RemoteClusterWithInvite struct {
|
||||
RemoteCluster *RemoteCluster `json:"remote_cluster"`
|
||||
Invite string `json:"invite"`
|
||||
}
|
||||
|
||||
func newIDFromBytes(b []byte) string {
|
||||
hash := md5.New()
|
||||
_, _ = hash.Write(b)
|
||||
@@ -393,6 +424,13 @@ func (rci *RemoteClusterInvite) Decrypt(encrypted []byte, password string) error
|
||||
return json.Unmarshal(plain, &rci)
|
||||
}
|
||||
|
||||
type RemoteClusterAcceptInvite struct {
|
||||
Name string `json:"name"`
|
||||
DisplayName string `json:"display_name"`
|
||||
Invite string `json:"invite"`
|
||||
Password string `json:"password"`
|
||||
}
|
||||
|
||||
// RemoteClusterQueryFilter provides filter criteria for RemoteClusterStore.GetAll
|
||||
type RemoteClusterQueryFilter struct {
|
||||
ExcludeOffline bool
|
||||
@@ -403,5 +441,6 @@ type RemoteClusterQueryFilter struct {
|
||||
OnlyConfirmed bool
|
||||
PluginID string
|
||||
OnlyPlugins bool
|
||||
ExcludePlugins bool
|
||||
RequireOptions Bitmask
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user