Add request parameter 'cluster_manager_timeout' and deprecate 'master_timeout' - in Snapshot APIs (#2680)

* Deprecate the request parameter `master_timeout` that used in Snapshot APIs which have got the parameter. 
* Add alternative new request parameter `cluster_manager_timeout`.
* Add unit tests.

Signed-off-by: Tianli Feng <ftianli@amazon.com>
This commit is contained in:
Tianli Feng 2022-04-11 20:42:21 -07:00 committed by GitHub
parent ba3ed8a9cb
commit a89b7e6216
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
24 changed files with 268 additions and 22 deletions

View File

@ -29,6 +29,9 @@ setup:
--- ---
"Snapshot/Restore with repository-azure": "Snapshot/Restore with repository-azure":
- skip:
features: allowed_warnings
# Get repository # Get repository
- do: - do:
snapshot.get_repository: snapshot.get_repository:
@ -169,12 +172,16 @@ setup:
# Remove the snapshots # Remove the snapshots
- do: - do:
allowed_warnings:
- "Parameter [master_timeout] is deprecated and will be removed in 3.0. To support inclusive language, please use [cluster_manager_timeout] instead."
snapshot.delete: snapshot.delete:
repository: repository repository: repository
snapshot: snapshot-two snapshot: snapshot-two
master_timeout: 5m master_timeout: 5m
- do: - do:
allowed_warnings:
- "Parameter [master_timeout] is deprecated and will be removed in 3.0. To support inclusive language, please use [cluster_manager_timeout] instead."
snapshot.delete: snapshot.delete:
repository: repository repository: repository
snapshot: snapshot-one snapshot: snapshot-one

View File

@ -24,7 +24,15 @@
"params": { "params": {
"master_timeout": { "master_timeout": {
"type" : "time", "type" : "time",
"description" : "Explicit operation timeout for connection to master node" "description" : "Explicit operation timeout for connection to master node",
"deprecated":{
"version":"2.0.0",
"description":"To support inclusive language, use 'cluster_manager_timeout' instead."
}
},
"cluster_manager_timeout":{
"type":"time",
"description":"Explicit operation timeout for connection to cluster-manager node"
}, },
"timeout": { "timeout": {
"type" : "time", "type" : "time",

View File

@ -32,7 +32,15 @@
"params":{ "params":{
"master_timeout":{ "master_timeout":{
"type":"time", "type":"time",
"description":"Explicit operation timeout for connection to master node" "description":"Explicit operation timeout for connection to master node",
"deprecated":{
"version":"2.0.0",
"description":"To support inclusive language, use 'cluster_manager_timeout' instead."
}
},
"cluster_manager_timeout":{
"type":"time",
"description":"Explicit operation timeout for connection to cluster-manager node"
} }
}, },
"body":{ "body":{

View File

@ -29,7 +29,15 @@
"params":{ "params":{
"master_timeout":{ "master_timeout":{
"type":"time", "type":"time",
"description":"Explicit operation timeout for connection to master node" "description":"Explicit operation timeout for connection to master node",
"deprecated":{
"version":"2.0.0",
"description":"To support inclusive language, use 'cluster_manager_timeout' instead."
}
},
"cluster_manager_timeout":{
"type":"time",
"description":"Explicit operation timeout for connection to cluster-manager node"
}, },
"wait_for_completion":{ "wait_for_completion":{
"type":"boolean", "type":"boolean",

View File

@ -25,7 +25,15 @@
"params":{ "params":{
"master_timeout":{ "master_timeout":{
"type":"time", "type":"time",
"description":"Explicit operation timeout for connection to master node" "description":"Explicit operation timeout for connection to master node",
"deprecated":{
"version":"2.0.0",
"description":"To support inclusive language, use 'cluster_manager_timeout' instead."
}
},
"cluster_manager_timeout":{
"type":"time",
"description":"Explicit operation timeout for connection to cluster-manager node"
}, },
"timeout":{ "timeout":{
"type":"time", "type":"time",

View File

@ -28,7 +28,15 @@
"params":{ "params":{
"master_timeout":{ "master_timeout":{
"type":"time", "type":"time",
"description":"Explicit operation timeout for connection to master node" "description":"Explicit operation timeout for connection to master node",
"deprecated":{
"version":"2.0.0",
"description":"To support inclusive language, use 'cluster_manager_timeout' instead."
}
},
"cluster_manager_timeout":{
"type":"time",
"description":"Explicit operation timeout for connection to cluster-manager node"
} }
} }
} }

View File

@ -24,7 +24,15 @@
"params":{ "params":{
"master_timeout":{ "master_timeout":{
"type":"time", "type":"time",
"description":"Explicit operation timeout for connection to master node" "description":"Explicit operation timeout for connection to master node",
"deprecated":{
"version":"2.0.0",
"description":"To support inclusive language, use 'cluster_manager_timeout' instead."
}
},
"cluster_manager_timeout":{
"type":"time",
"description":"Explicit operation timeout for connection to cluster-manager node"
}, },
"timeout":{ "timeout":{
"type":"time", "type":"time",

View File

@ -28,7 +28,15 @@
"params":{ "params":{
"master_timeout":{ "master_timeout":{
"type":"time", "type":"time",
"description":"Explicit operation timeout for connection to master node" "description":"Explicit operation timeout for connection to master node",
"deprecated":{
"version":"2.0.0",
"description":"To support inclusive language, use 'cluster_manager_timeout' instead."
}
},
"cluster_manager_timeout":{
"type":"time",
"description":"Explicit operation timeout for connection to cluster-manager node"
}, },
"ignore_unavailable":{ "ignore_unavailable":{
"type":"boolean", "type":"boolean",

View File

@ -30,7 +30,15 @@
"params":{ "params":{
"master_timeout":{ "master_timeout":{
"type":"time", "type":"time",
"description":"Explicit operation timeout for connection to master node" "description":"Explicit operation timeout for connection to master node",
"deprecated":{
"version":"2.0.0",
"description":"To support inclusive language, use 'cluster_manager_timeout' instead."
}
},
"cluster_manager_timeout":{
"type":"time",
"description":"Explicit operation timeout for connection to cluster-manager node"
}, },
"local":{ "local":{
"type":"boolean", "type":"boolean",

View File

@ -28,7 +28,15 @@
"params":{ "params":{
"master_timeout":{ "master_timeout":{
"type":"time", "type":"time",
"description":"Explicit operation timeout for connection to master node" "description":"Explicit operation timeout for connection to master node",
"deprecated":{
"version":"2.0.0",
"description":"To support inclusive language, use 'cluster_manager_timeout' instead."
}
},
"cluster_manager_timeout":{
"type":"time",
"description":"Explicit operation timeout for connection to cluster-manager node"
}, },
"wait_for_completion":{ "wait_for_completion":{
"type":"boolean", "type":"boolean",

View File

@ -46,7 +46,15 @@
"params":{ "params":{
"master_timeout":{ "master_timeout":{
"type":"time", "type":"time",
"description":"Explicit operation timeout for connection to master node" "description":"Explicit operation timeout for connection to master node",
"deprecated":{
"version":"2.0.0",
"description":"To support inclusive language, use 'cluster_manager_timeout' instead."
}
},
"cluster_manager_timeout":{
"type":"time",
"description":"Explicit operation timeout for connection to cluster-manager node"
}, },
"ignore_unavailable":{ "ignore_unavailable":{
"type":"boolean", "type":"boolean",

View File

@ -24,7 +24,15 @@
"params":{ "params":{
"master_timeout":{ "master_timeout":{
"type":"time", "type":"time",
"description":"Explicit operation timeout for connection to master node" "description":"Explicit operation timeout for connection to master node",
"deprecated":{
"version":"2.0.0",
"description":"To support inclusive language, use 'cluster_manager_timeout' instead."
}
},
"cluster_manager_timeout":{
"type":"time",
"description":"Explicit operation timeout for connection to cluster-manager node"
}, },
"timeout":{ "timeout":{
"type":"time", "type":"time",

View File

@ -34,6 +34,7 @@ package org.opensearch.rest.action.admin.cluster;
import org.opensearch.action.admin.cluster.repositories.cleanup.CleanupRepositoryRequest; import org.opensearch.action.admin.cluster.repositories.cleanup.CleanupRepositoryRequest;
import org.opensearch.client.node.NodeClient; import org.opensearch.client.node.NodeClient;
import org.opensearch.common.logging.DeprecationLogger;
import org.opensearch.rest.BaseRestHandler; import org.opensearch.rest.BaseRestHandler;
import org.opensearch.rest.RestRequest; import org.opensearch.rest.RestRequest;
import org.opensearch.rest.action.RestToXContentListener; import org.opensearch.rest.action.RestToXContentListener;
@ -50,6 +51,8 @@ import static org.opensearch.rest.RestRequest.Method.POST;
*/ */
public class RestCleanupRepositoryAction extends BaseRestHandler { public class RestCleanupRepositoryAction extends BaseRestHandler {
private static final DeprecationLogger deprecationLogger = DeprecationLogger.getLogger(RestCleanupRepositoryAction.class);
@Override @Override
public List<Route> routes() { public List<Route> routes() {
return singletonList(new Route(POST, "/_snapshot/{repository}/_cleanup")); return singletonList(new Route(POST, "/_snapshot/{repository}/_cleanup"));
@ -64,7 +67,10 @@ public class RestCleanupRepositoryAction extends BaseRestHandler {
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException { public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
CleanupRepositoryRequest cleanupRepositoryRequest = cleanupRepositoryRequest(request.param("repository")); CleanupRepositoryRequest cleanupRepositoryRequest = cleanupRepositoryRequest(request.param("repository"));
cleanupRepositoryRequest.timeout(request.paramAsTime("timeout", cleanupRepositoryRequest.timeout())); cleanupRepositoryRequest.timeout(request.paramAsTime("timeout", cleanupRepositoryRequest.timeout()));
cleanupRepositoryRequest.masterNodeTimeout(request.paramAsTime("master_timeout", cleanupRepositoryRequest.masterNodeTimeout())); cleanupRepositoryRequest.masterNodeTimeout(
request.paramAsTime("cluster_manager_timeout", cleanupRepositoryRequest.masterNodeTimeout())
);
parseDeprecatedMasterTimeoutParameter(cleanupRepositoryRequest, request, deprecationLogger, getName());
return channel -> client.admin().cluster().cleanupRepository(cleanupRepositoryRequest, new RestToXContentListener<>(channel)); return channel -> client.admin().cluster().cleanupRepository(cleanupRepositoryRequest, new RestToXContentListener<>(channel));
} }
} }

View File

@ -35,6 +35,7 @@ package org.opensearch.rest.action.admin.cluster;
import org.opensearch.action.admin.cluster.snapshots.clone.CloneSnapshotRequest; import org.opensearch.action.admin.cluster.snapshots.clone.CloneSnapshotRequest;
import org.opensearch.action.support.IndicesOptions; import org.opensearch.action.support.IndicesOptions;
import org.opensearch.client.node.NodeClient; import org.opensearch.client.node.NodeClient;
import org.opensearch.common.logging.DeprecationLogger;
import org.opensearch.common.xcontent.support.XContentMapValues; import org.opensearch.common.xcontent.support.XContentMapValues;
import org.opensearch.rest.BaseRestHandler; import org.opensearch.rest.BaseRestHandler;
import org.opensearch.rest.RestRequest; import org.opensearch.rest.RestRequest;
@ -52,6 +53,8 @@ import static org.opensearch.rest.RestRequest.Method.PUT;
*/ */
public class RestCloneSnapshotAction extends BaseRestHandler { public class RestCloneSnapshotAction extends BaseRestHandler {
private static final DeprecationLogger deprecationLogger = DeprecationLogger.getLogger(RestCloneSnapshotAction.class);
@Override @Override
public List<Route> routes() { public List<Route> routes() {
return Collections.singletonList(new Route(PUT, "/_snapshot/{repository}/{snapshot}/_clone/{target_snapshot}")); return Collections.singletonList(new Route(PUT, "/_snapshot/{repository}/{snapshot}/_clone/{target_snapshot}"));
@ -71,7 +74,8 @@ public class RestCloneSnapshotAction extends BaseRestHandler {
request.param("target_snapshot"), request.param("target_snapshot"),
XContentMapValues.nodeStringArrayValue(source.getOrDefault("indices", Collections.emptyList())) XContentMapValues.nodeStringArrayValue(source.getOrDefault("indices", Collections.emptyList()))
); );
cloneSnapshotRequest.masterNodeTimeout(request.paramAsTime("master_timeout", cloneSnapshotRequest.masterNodeTimeout())); cloneSnapshotRequest.masterNodeTimeout(request.paramAsTime("cluster_manager_timeout", cloneSnapshotRequest.masterNodeTimeout()));
parseDeprecatedMasterTimeoutParameter(cloneSnapshotRequest, request, deprecationLogger, getName());
cloneSnapshotRequest.indicesOptions(IndicesOptions.fromMap(source, cloneSnapshotRequest.indicesOptions())); cloneSnapshotRequest.indicesOptions(IndicesOptions.fromMap(source, cloneSnapshotRequest.indicesOptions()));
return channel -> client.admin().cluster().cloneSnapshot(cloneSnapshotRequest, new RestToXContentListener<>(channel)); return channel -> client.admin().cluster().cloneSnapshot(cloneSnapshotRequest, new RestToXContentListener<>(channel));
} }

View File

@ -34,6 +34,7 @@ package org.opensearch.rest.action.admin.cluster;
import org.opensearch.action.admin.cluster.snapshots.create.CreateSnapshotRequest; import org.opensearch.action.admin.cluster.snapshots.create.CreateSnapshotRequest;
import org.opensearch.client.node.NodeClient; import org.opensearch.client.node.NodeClient;
import org.opensearch.common.logging.DeprecationLogger;
import org.opensearch.rest.BaseRestHandler; import org.opensearch.rest.BaseRestHandler;
import org.opensearch.rest.RestRequest; import org.opensearch.rest.RestRequest;
import org.opensearch.rest.action.RestToXContentListener; import org.opensearch.rest.action.RestToXContentListener;
@ -52,6 +53,8 @@ import static org.opensearch.rest.RestRequest.Method.PUT;
*/ */
public class RestCreateSnapshotAction extends BaseRestHandler { public class RestCreateSnapshotAction extends BaseRestHandler {
private static final DeprecationLogger deprecationLogger = DeprecationLogger.getLogger(RestCreateSnapshotAction.class);
@Override @Override
public List<Route> routes() { public List<Route> routes() {
return unmodifiableList( return unmodifiableList(
@ -68,7 +71,8 @@ public class RestCreateSnapshotAction extends BaseRestHandler {
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException { public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
CreateSnapshotRequest createSnapshotRequest = createSnapshotRequest(request.param("repository"), request.param("snapshot")); CreateSnapshotRequest createSnapshotRequest = createSnapshotRequest(request.param("repository"), request.param("snapshot"));
request.applyContentParser(p -> createSnapshotRequest.source(p.mapOrdered())); request.applyContentParser(p -> createSnapshotRequest.source(p.mapOrdered()));
createSnapshotRequest.masterNodeTimeout(request.paramAsTime("master_timeout", createSnapshotRequest.masterNodeTimeout())); createSnapshotRequest.masterNodeTimeout(request.paramAsTime("cluster_manager_timeout", createSnapshotRequest.masterNodeTimeout()));
parseDeprecatedMasterTimeoutParameter(createSnapshotRequest, request, deprecationLogger, getName());
createSnapshotRequest.waitForCompletion(request.paramAsBoolean("wait_for_completion", false)); createSnapshotRequest.waitForCompletion(request.paramAsBoolean("wait_for_completion", false));
return channel -> client.admin().cluster().createSnapshot(createSnapshotRequest, new RestToXContentListener<>(channel)); return channel -> client.admin().cluster().createSnapshot(createSnapshotRequest, new RestToXContentListener<>(channel));
} }

View File

@ -34,6 +34,7 @@ package org.opensearch.rest.action.admin.cluster;
import org.opensearch.action.admin.cluster.repositories.delete.DeleteRepositoryRequest; import org.opensearch.action.admin.cluster.repositories.delete.DeleteRepositoryRequest;
import org.opensearch.client.node.NodeClient; import org.opensearch.client.node.NodeClient;
import org.opensearch.common.logging.DeprecationLogger;
import org.opensearch.rest.BaseRestHandler; import org.opensearch.rest.BaseRestHandler;
import org.opensearch.rest.RestRequest; import org.opensearch.rest.RestRequest;
import org.opensearch.rest.action.RestToXContentListener; import org.opensearch.rest.action.RestToXContentListener;
@ -50,6 +51,8 @@ import static org.opensearch.rest.RestRequest.Method.DELETE;
*/ */
public class RestDeleteRepositoryAction extends BaseRestHandler { public class RestDeleteRepositoryAction extends BaseRestHandler {
private static final DeprecationLogger deprecationLogger = DeprecationLogger.getLogger(RestDeleteRepositoryAction.class);
@Override @Override
public List<Route> routes() { public List<Route> routes() {
return singletonList(new Route(DELETE, "/_snapshot/{repository}")); return singletonList(new Route(DELETE, "/_snapshot/{repository}"));
@ -64,7 +67,10 @@ public class RestDeleteRepositoryAction extends BaseRestHandler {
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException { public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
DeleteRepositoryRequest deleteRepositoryRequest = deleteRepositoryRequest(request.param("repository")); DeleteRepositoryRequest deleteRepositoryRequest = deleteRepositoryRequest(request.param("repository"));
deleteRepositoryRequest.timeout(request.paramAsTime("timeout", deleteRepositoryRequest.timeout())); deleteRepositoryRequest.timeout(request.paramAsTime("timeout", deleteRepositoryRequest.timeout()));
deleteRepositoryRequest.masterNodeTimeout(request.paramAsTime("master_timeout", deleteRepositoryRequest.masterNodeTimeout())); deleteRepositoryRequest.masterNodeTimeout(
request.paramAsTime("cluster_manager_timeout", deleteRepositoryRequest.masterNodeTimeout())
);
parseDeprecatedMasterTimeoutParameter(deleteRepositoryRequest, request, deprecationLogger, getName());
return channel -> client.admin().cluster().deleteRepository(deleteRepositoryRequest, new RestToXContentListener<>(channel)); return channel -> client.admin().cluster().deleteRepository(deleteRepositoryRequest, new RestToXContentListener<>(channel));
} }
} }

View File

@ -35,6 +35,7 @@ package org.opensearch.rest.action.admin.cluster;
import org.opensearch.action.admin.cluster.snapshots.delete.DeleteSnapshotRequest; import org.opensearch.action.admin.cluster.snapshots.delete.DeleteSnapshotRequest;
import org.opensearch.client.node.NodeClient; import org.opensearch.client.node.NodeClient;
import org.opensearch.common.Strings; import org.opensearch.common.Strings;
import org.opensearch.common.logging.DeprecationLogger;
import org.opensearch.rest.BaseRestHandler; import org.opensearch.rest.BaseRestHandler;
import org.opensearch.rest.RestRequest; import org.opensearch.rest.RestRequest;
import org.opensearch.rest.action.RestToXContentListener; import org.opensearch.rest.action.RestToXContentListener;
@ -51,6 +52,8 @@ import static org.opensearch.rest.RestRequest.Method.DELETE;
*/ */
public class RestDeleteSnapshotAction extends BaseRestHandler { public class RestDeleteSnapshotAction extends BaseRestHandler {
private static final DeprecationLogger deprecationLogger = DeprecationLogger.getLogger(RestDeleteSnapshotAction.class);
@Override @Override
public List<Route> routes() { public List<Route> routes() {
return singletonList(new Route(DELETE, "/_snapshot/{repository}/{snapshot}")); return singletonList(new Route(DELETE, "/_snapshot/{repository}/{snapshot}"));
@ -67,7 +70,8 @@ public class RestDeleteSnapshotAction extends BaseRestHandler {
request.param("repository"), request.param("repository"),
Strings.splitStringByCommaToArray(request.param("snapshot")) Strings.splitStringByCommaToArray(request.param("snapshot"))
); );
deleteSnapshotRequest.masterNodeTimeout(request.paramAsTime("master_timeout", deleteSnapshotRequest.masterNodeTimeout())); deleteSnapshotRequest.masterNodeTimeout(request.paramAsTime("cluster_manager_timeout", deleteSnapshotRequest.masterNodeTimeout()));
parseDeprecatedMasterTimeoutParameter(deleteSnapshotRequest, request, deprecationLogger, getName());
return channel -> client.admin().cluster().deleteSnapshot(deleteSnapshotRequest, new RestToXContentListener<>(channel)); return channel -> client.admin().cluster().deleteSnapshot(deleteSnapshotRequest, new RestToXContentListener<>(channel));
} }
} }

View File

@ -35,6 +35,7 @@ package org.opensearch.rest.action.admin.cluster;
import org.opensearch.action.admin.cluster.repositories.get.GetRepositoriesRequest; import org.opensearch.action.admin.cluster.repositories.get.GetRepositoriesRequest;
import org.opensearch.client.node.NodeClient; import org.opensearch.client.node.NodeClient;
import org.opensearch.common.Strings; import org.opensearch.common.Strings;
import org.opensearch.common.logging.DeprecationLogger;
import org.opensearch.common.settings.Settings; import org.opensearch.common.settings.Settings;
import org.opensearch.common.settings.SettingsFilter; import org.opensearch.common.settings.SettingsFilter;
import org.opensearch.rest.BaseRestHandler; import org.opensearch.rest.BaseRestHandler;
@ -55,6 +56,8 @@ import static org.opensearch.rest.RestRequest.Method.GET;
*/ */
public class RestGetRepositoriesAction extends BaseRestHandler { public class RestGetRepositoriesAction extends BaseRestHandler {
private static final DeprecationLogger deprecationLogger = DeprecationLogger.getLogger(RestGetRepositoriesAction.class);
private final SettingsFilter settingsFilter; private final SettingsFilter settingsFilter;
public RestGetRepositoriesAction(SettingsFilter settingsFilter) { public RestGetRepositoriesAction(SettingsFilter settingsFilter) {
@ -75,7 +78,10 @@ public class RestGetRepositoriesAction extends BaseRestHandler {
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException { public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
final String[] repositories = request.paramAsStringArray("repository", Strings.EMPTY_ARRAY); final String[] repositories = request.paramAsStringArray("repository", Strings.EMPTY_ARRAY);
GetRepositoriesRequest getRepositoriesRequest = getRepositoryRequest(repositories); GetRepositoriesRequest getRepositoriesRequest = getRepositoryRequest(repositories);
getRepositoriesRequest.masterNodeTimeout(request.paramAsTime("master_timeout", getRepositoriesRequest.masterNodeTimeout())); getRepositoriesRequest.masterNodeTimeout(
request.paramAsTime("cluster_manager_timeout", getRepositoriesRequest.masterNodeTimeout())
);
parseDeprecatedMasterTimeoutParameter(getRepositoriesRequest, request, deprecationLogger, getName());
getRepositoriesRequest.local(request.paramAsBoolean("local", getRepositoriesRequest.local())); getRepositoriesRequest.local(request.paramAsBoolean("local", getRepositoriesRequest.local()));
settingsFilter.addFilterSettingParams(request); settingsFilter.addFilterSettingParams(request);
return channel -> client.admin().cluster().getRepositories(getRepositoriesRequest, new RestToXContentListener<>(channel)); return channel -> client.admin().cluster().getRepositories(getRepositoriesRequest, new RestToXContentListener<>(channel));

View File

@ -35,6 +35,7 @@ package org.opensearch.rest.action.admin.cluster;
import org.opensearch.action.admin.cluster.snapshots.get.GetSnapshotsRequest; import org.opensearch.action.admin.cluster.snapshots.get.GetSnapshotsRequest;
import org.opensearch.client.node.NodeClient; import org.opensearch.client.node.NodeClient;
import org.opensearch.common.Strings; import org.opensearch.common.Strings;
import org.opensearch.common.logging.DeprecationLogger;
import org.opensearch.rest.BaseRestHandler; import org.opensearch.rest.BaseRestHandler;
import org.opensearch.rest.RestRequest; import org.opensearch.rest.RestRequest;
import org.opensearch.rest.action.RestToXContentListener; import org.opensearch.rest.action.RestToXContentListener;
@ -51,6 +52,8 @@ import static org.opensearch.rest.RestRequest.Method.GET;
*/ */
public class RestGetSnapshotsAction extends BaseRestHandler { public class RestGetSnapshotsAction extends BaseRestHandler {
private static final DeprecationLogger deprecationLogger = DeprecationLogger.getLogger(RestGetSnapshotsAction.class);
@Override @Override
public List<Route> routes() { public List<Route> routes() {
return singletonList(new Route(GET, "/_snapshot/{repository}/{snapshot}")); return singletonList(new Route(GET, "/_snapshot/{repository}/{snapshot}"));
@ -69,7 +72,8 @@ public class RestGetSnapshotsAction extends BaseRestHandler {
GetSnapshotsRequest getSnapshotsRequest = getSnapshotsRequest(repository).snapshots(snapshots); GetSnapshotsRequest getSnapshotsRequest = getSnapshotsRequest(repository).snapshots(snapshots);
getSnapshotsRequest.ignoreUnavailable(request.paramAsBoolean("ignore_unavailable", getSnapshotsRequest.ignoreUnavailable())); getSnapshotsRequest.ignoreUnavailable(request.paramAsBoolean("ignore_unavailable", getSnapshotsRequest.ignoreUnavailable()));
getSnapshotsRequest.verbose(request.paramAsBoolean("verbose", getSnapshotsRequest.verbose())); getSnapshotsRequest.verbose(request.paramAsBoolean("verbose", getSnapshotsRequest.verbose()));
getSnapshotsRequest.masterNodeTimeout(request.paramAsTime("master_timeout", getSnapshotsRequest.masterNodeTimeout())); getSnapshotsRequest.masterNodeTimeout(request.paramAsTime("cluster_manager_timeout", getSnapshotsRequest.masterNodeTimeout()));
parseDeprecatedMasterTimeoutParameter(getSnapshotsRequest, request, deprecationLogger, getName());
return channel -> client.admin().cluster().getSnapshots(getSnapshotsRequest, new RestToXContentListener<>(channel)); return channel -> client.admin().cluster().getSnapshots(getSnapshotsRequest, new RestToXContentListener<>(channel));
} }
} }

View File

@ -34,6 +34,7 @@ package org.opensearch.rest.action.admin.cluster;
import org.opensearch.action.admin.cluster.repositories.put.PutRepositoryRequest; import org.opensearch.action.admin.cluster.repositories.put.PutRepositoryRequest;
import org.opensearch.client.node.NodeClient; import org.opensearch.client.node.NodeClient;
import org.opensearch.common.logging.DeprecationLogger;
import org.opensearch.common.xcontent.XContentParser; import org.opensearch.common.xcontent.XContentParser;
import org.opensearch.rest.BaseRestHandler; import org.opensearch.rest.BaseRestHandler;
import org.opensearch.rest.RestRequest; import org.opensearch.rest.RestRequest;
@ -53,6 +54,8 @@ import static org.opensearch.rest.RestRequest.Method.PUT;
*/ */
public class RestPutRepositoryAction extends BaseRestHandler { public class RestPutRepositoryAction extends BaseRestHandler {
private static final DeprecationLogger deprecationLogger = DeprecationLogger.getLogger(RestPutRepositoryAction.class);
@Override @Override
public List<Route> routes() { public List<Route> routes() {
return unmodifiableList(asList(new Route(POST, "/_snapshot/{repository}"), new Route(PUT, "/_snapshot/{repository}"))); return unmodifiableList(asList(new Route(POST, "/_snapshot/{repository}"), new Route(PUT, "/_snapshot/{repository}")));
@ -70,7 +73,8 @@ public class RestPutRepositoryAction extends BaseRestHandler {
putRepositoryRequest.source(parser.mapOrdered()); putRepositoryRequest.source(parser.mapOrdered());
} }
putRepositoryRequest.verify(request.paramAsBoolean("verify", true)); putRepositoryRequest.verify(request.paramAsBoolean("verify", true));
putRepositoryRequest.masterNodeTimeout(request.paramAsTime("master_timeout", putRepositoryRequest.masterNodeTimeout())); putRepositoryRequest.masterNodeTimeout(request.paramAsTime("cluster_manager_timeout", putRepositoryRequest.masterNodeTimeout()));
parseDeprecatedMasterTimeoutParameter(putRepositoryRequest, request, deprecationLogger, getName());
putRepositoryRequest.timeout(request.paramAsTime("timeout", putRepositoryRequest.timeout())); putRepositoryRequest.timeout(request.paramAsTime("timeout", putRepositoryRequest.timeout()));
return channel -> client.admin().cluster().putRepository(putRepositoryRequest, new RestToXContentListener<>(channel)); return channel -> client.admin().cluster().putRepository(putRepositoryRequest, new RestToXContentListener<>(channel));
} }

View File

@ -34,6 +34,7 @@ package org.opensearch.rest.action.admin.cluster;
import org.opensearch.action.admin.cluster.snapshots.restore.RestoreSnapshotRequest; import org.opensearch.action.admin.cluster.snapshots.restore.RestoreSnapshotRequest;
import org.opensearch.client.node.NodeClient; import org.opensearch.client.node.NodeClient;
import org.opensearch.common.logging.DeprecationLogger;
import org.opensearch.rest.BaseRestHandler; import org.opensearch.rest.BaseRestHandler;
import org.opensearch.rest.RestRequest; import org.opensearch.rest.RestRequest;
import org.opensearch.rest.action.RestToXContentListener; import org.opensearch.rest.action.RestToXContentListener;
@ -50,6 +51,8 @@ import static org.opensearch.rest.RestRequest.Method.POST;
*/ */
public class RestRestoreSnapshotAction extends BaseRestHandler { public class RestRestoreSnapshotAction extends BaseRestHandler {
private static final DeprecationLogger deprecationLogger = DeprecationLogger.getLogger(RestRestoreSnapshotAction.class);
@Override @Override
public List<Route> routes() { public List<Route> routes() {
return singletonList(new Route(POST, "/_snapshot/{repository}/{snapshot}/_restore")); return singletonList(new Route(POST, "/_snapshot/{repository}/{snapshot}/_restore"));
@ -63,7 +66,10 @@ public class RestRestoreSnapshotAction extends BaseRestHandler {
@Override @Override
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException { public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
RestoreSnapshotRequest restoreSnapshotRequest = restoreSnapshotRequest(request.param("repository"), request.param("snapshot")); RestoreSnapshotRequest restoreSnapshotRequest = restoreSnapshotRequest(request.param("repository"), request.param("snapshot"));
restoreSnapshotRequest.masterNodeTimeout(request.paramAsTime("master_timeout", restoreSnapshotRequest.masterNodeTimeout())); restoreSnapshotRequest.masterNodeTimeout(
request.paramAsTime("cluster_manager_timeout", restoreSnapshotRequest.masterNodeTimeout())
);
parseDeprecatedMasterTimeoutParameter(restoreSnapshotRequest, request, deprecationLogger, getName());
restoreSnapshotRequest.waitForCompletion(request.paramAsBoolean("wait_for_completion", false)); restoreSnapshotRequest.waitForCompletion(request.paramAsBoolean("wait_for_completion", false));
request.applyContentParser(p -> restoreSnapshotRequest.source(p.mapOrdered())); request.applyContentParser(p -> restoreSnapshotRequest.source(p.mapOrdered()));
return channel -> client.admin().cluster().restoreSnapshot(restoreSnapshotRequest, new RestToXContentListener<>(channel)); return channel -> client.admin().cluster().restoreSnapshot(restoreSnapshotRequest, new RestToXContentListener<>(channel));

View File

@ -35,6 +35,7 @@ package org.opensearch.rest.action.admin.cluster;
import org.opensearch.action.admin.cluster.snapshots.status.SnapshotsStatusRequest; import org.opensearch.action.admin.cluster.snapshots.status.SnapshotsStatusRequest;
import org.opensearch.client.node.NodeClient; import org.opensearch.client.node.NodeClient;
import org.opensearch.common.Strings; import org.opensearch.common.Strings;
import org.opensearch.common.logging.DeprecationLogger;
import org.opensearch.rest.BaseRestHandler; import org.opensearch.rest.BaseRestHandler;
import org.opensearch.rest.RestRequest; import org.opensearch.rest.RestRequest;
import org.opensearch.rest.action.RestToXContentListener; import org.opensearch.rest.action.RestToXContentListener;
@ -52,6 +53,8 @@ import static org.opensearch.rest.RestRequest.Method.GET;
*/ */
public class RestSnapshotsStatusAction extends BaseRestHandler { public class RestSnapshotsStatusAction extends BaseRestHandler {
private static final DeprecationLogger deprecationLogger = DeprecationLogger.getLogger(RestSnapshotsStatusAction.class);
@Override @Override
public List<Route> routes() { public List<Route> routes() {
return unmodifiableList( return unmodifiableList(
@ -78,7 +81,10 @@ public class RestSnapshotsStatusAction extends BaseRestHandler {
SnapshotsStatusRequest snapshotsStatusRequest = snapshotsStatusRequest(repository).snapshots(snapshots); SnapshotsStatusRequest snapshotsStatusRequest = snapshotsStatusRequest(repository).snapshots(snapshots);
snapshotsStatusRequest.ignoreUnavailable(request.paramAsBoolean("ignore_unavailable", snapshotsStatusRequest.ignoreUnavailable())); snapshotsStatusRequest.ignoreUnavailable(request.paramAsBoolean("ignore_unavailable", snapshotsStatusRequest.ignoreUnavailable()));
snapshotsStatusRequest.masterNodeTimeout(request.paramAsTime("master_timeout", snapshotsStatusRequest.masterNodeTimeout())); snapshotsStatusRequest.masterNodeTimeout(
request.paramAsTime("cluster_manager_timeout", snapshotsStatusRequest.masterNodeTimeout())
);
parseDeprecatedMasterTimeoutParameter(snapshotsStatusRequest, request, deprecationLogger, getName());
return channel -> client.admin().cluster().snapshotsStatus(snapshotsStatusRequest, new RestToXContentListener<>(channel)); return channel -> client.admin().cluster().snapshotsStatus(snapshotsStatusRequest, new RestToXContentListener<>(channel));
} }
} }

View File

@ -34,6 +34,7 @@ package org.opensearch.rest.action.admin.cluster;
import org.opensearch.action.admin.cluster.repositories.verify.VerifyRepositoryRequest; import org.opensearch.action.admin.cluster.repositories.verify.VerifyRepositoryRequest;
import org.opensearch.client.node.NodeClient; import org.opensearch.client.node.NodeClient;
import org.opensearch.common.logging.DeprecationLogger;
import org.opensearch.rest.BaseRestHandler; import org.opensearch.rest.BaseRestHandler;
import org.opensearch.rest.RestRequest; import org.opensearch.rest.RestRequest;
import org.opensearch.rest.action.RestToXContentListener; import org.opensearch.rest.action.RestToXContentListener;
@ -47,6 +48,8 @@ import static org.opensearch.rest.RestRequest.Method.POST;
public class RestVerifyRepositoryAction extends BaseRestHandler { public class RestVerifyRepositoryAction extends BaseRestHandler {
private static final DeprecationLogger deprecationLogger = DeprecationLogger.getLogger(RestVerifyRepositoryAction.class);
@Override @Override
public List<Route> routes() { public List<Route> routes() {
return singletonList(new Route(POST, "/_snapshot/{repository}/_verify")); return singletonList(new Route(POST, "/_snapshot/{repository}/_verify"));
@ -60,7 +63,10 @@ public class RestVerifyRepositoryAction extends BaseRestHandler {
@Override @Override
public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException { public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException {
VerifyRepositoryRequest verifyRepositoryRequest = verifyRepositoryRequest(request.param("repository")); VerifyRepositoryRequest verifyRepositoryRequest = verifyRepositoryRequest(request.param("repository"));
verifyRepositoryRequest.masterNodeTimeout(request.paramAsTime("master_timeout", verifyRepositoryRequest.masterNodeTimeout())); verifyRepositoryRequest.masterNodeTimeout(
request.paramAsTime("cluster_manager_timeout", verifyRepositoryRequest.masterNodeTimeout())
);
parseDeprecatedMasterTimeoutParameter(verifyRepositoryRequest, request, deprecationLogger, getName());
verifyRepositoryRequest.timeout(request.paramAsTime("timeout", verifyRepositoryRequest.timeout())); verifyRepositoryRequest.timeout(request.paramAsTime("timeout", verifyRepositoryRequest.timeout()));
return channel -> client.admin().cluster().verifyRepository(verifyRepositoryRequest, new RestToXContentListener<>(channel)); return channel -> client.admin().cluster().verifyRepository(verifyRepositoryRequest, new RestToXContentListener<>(channel));
} }

View File

@ -52,6 +52,17 @@ import org.opensearch.rest.action.admin.indices.RestPutComposableIndexTemplateAc
import org.opensearch.rest.action.admin.indices.RestPutIndexTemplateAction; import org.opensearch.rest.action.admin.indices.RestPutIndexTemplateAction;
import org.opensearch.rest.action.admin.indices.RestSimulateIndexTemplateAction; import org.opensearch.rest.action.admin.indices.RestSimulateIndexTemplateAction;
import org.opensearch.rest.action.admin.indices.RestSimulateTemplateAction; import org.opensearch.rest.action.admin.indices.RestSimulateTemplateAction;
import org.opensearch.rest.action.admin.cluster.RestCleanupRepositoryAction;
import org.opensearch.rest.action.admin.cluster.RestCloneSnapshotAction;
import org.opensearch.rest.action.admin.cluster.RestCreateSnapshotAction;
import org.opensearch.rest.action.admin.cluster.RestDeleteRepositoryAction;
import org.opensearch.rest.action.admin.cluster.RestDeleteSnapshotAction;
import org.opensearch.rest.action.admin.cluster.RestGetRepositoriesAction;
import org.opensearch.rest.action.admin.cluster.RestGetSnapshotsAction;
import org.opensearch.rest.action.admin.cluster.RestPutRepositoryAction;
import org.opensearch.rest.action.admin.cluster.RestRestoreSnapshotAction;
import org.opensearch.rest.action.admin.cluster.RestSnapshotsStatusAction;
import org.opensearch.rest.action.admin.cluster.RestVerifyRepositoryAction;
import org.opensearch.rest.action.cat.RestAllocationAction; import org.opensearch.rest.action.cat.RestAllocationAction;
import org.opensearch.rest.action.cat.RestRepositoriesAction; import org.opensearch.rest.action.cat.RestRepositoriesAction;
import org.opensearch.rest.action.cat.RestThreadPoolAction; import org.opensearch.rest.action.cat.RestThreadPoolAction;
@ -517,6 +528,90 @@ public class RenamedTimeoutRequestParameterTests extends OpenSearchTestCase {
assertWarnings(MASTER_TIMEOUT_DEPRECATED_MESSAGE); assertWarnings(MASTER_TIMEOUT_DEPRECATED_MESSAGE);
} }
public void testCleanupRepository() {
RestCleanupRepositoryAction action = new RestCleanupRepositoryAction();
Exception e = assertThrows(OpenSearchParseException.class, () -> action.prepareRequest(getRestRequestWithBothParams(), client));
assertThat(e.getMessage(), containsString(DUPLICATE_PARAMETER_ERROR_MESSAGE));
assertWarnings(MASTER_TIMEOUT_DEPRECATED_MESSAGE);
}
public void testCloneSnapshot() {
RestCloneSnapshotAction action = new RestCloneSnapshotAction();
Exception e = assertThrows(
OpenSearchParseException.class,
() -> action.prepareRequest(getRestRequestWithBodyWithBothParams(), client)
);
assertThat(e.getMessage(), containsString(DUPLICATE_PARAMETER_ERROR_MESSAGE));
assertWarnings(MASTER_TIMEOUT_DEPRECATED_MESSAGE);
}
public void testCreateSnapshot() {
RestCreateSnapshotAction action = new RestCreateSnapshotAction();
Exception e = assertThrows(OpenSearchParseException.class, () -> action.prepareRequest(getRestRequestWithBothParams(), client));
assertThat(e.getMessage(), containsString(DUPLICATE_PARAMETER_ERROR_MESSAGE));
assertWarnings(MASTER_TIMEOUT_DEPRECATED_MESSAGE);
}
public void testDeleteRepository() {
RestDeleteRepositoryAction action = new RestDeleteRepositoryAction();
Exception e = assertThrows(OpenSearchParseException.class, () -> action.prepareRequest(getRestRequestWithBothParams(), client));
assertThat(e.getMessage(), containsString(DUPLICATE_PARAMETER_ERROR_MESSAGE));
assertWarnings(MASTER_TIMEOUT_DEPRECATED_MESSAGE);
}
public void testDeleteSnapshot() {
RestDeleteSnapshotAction action = new RestDeleteSnapshotAction();
Exception e = assertThrows(OpenSearchParseException.class, () -> action.prepareRequest(getRestRequestWithBothParams(), client));
assertThat(e.getMessage(), containsString(DUPLICATE_PARAMETER_ERROR_MESSAGE));
assertWarnings(MASTER_TIMEOUT_DEPRECATED_MESSAGE);
}
public void testGetRepositories() {
final SettingsFilter filter = new SettingsFilter(Collections.singleton("foo.filtered"));
RestGetRepositoriesAction action = new RestGetRepositoriesAction(filter);
Exception e = assertThrows(OpenSearchParseException.class, () -> action.prepareRequest(getRestRequestWithBothParams(), client));
assertThat(e.getMessage(), containsString(DUPLICATE_PARAMETER_ERROR_MESSAGE));
assertWarnings(MASTER_TIMEOUT_DEPRECATED_MESSAGE);
}
public void testGetSnapshots() {
RestGetSnapshotsAction action = new RestGetSnapshotsAction();
Exception e = assertThrows(OpenSearchParseException.class, () -> action.prepareRequest(getRestRequestWithBothParams(), client));
assertThat(e.getMessage(), containsString(DUPLICATE_PARAMETER_ERROR_MESSAGE));
assertWarnings(MASTER_TIMEOUT_DEPRECATED_MESSAGE);
}
public void testPutRepository() {
RestPutRepositoryAction action = new RestPutRepositoryAction();
Exception e = assertThrows(
OpenSearchParseException.class,
() -> action.prepareRequest(getRestRequestWithBodyWithBothParams(), client)
);
assertThat(e.getMessage(), containsString(DUPLICATE_PARAMETER_ERROR_MESSAGE));
assertWarnings(MASTER_TIMEOUT_DEPRECATED_MESSAGE);
}
public void testRestoreSnapshot() {
RestRestoreSnapshotAction action = new RestRestoreSnapshotAction();
Exception e = assertThrows(OpenSearchParseException.class, () -> action.prepareRequest(getRestRequestWithBothParams(), client));
assertThat(e.getMessage(), containsString(DUPLICATE_PARAMETER_ERROR_MESSAGE));
assertWarnings(MASTER_TIMEOUT_DEPRECATED_MESSAGE);
}
public void testSnapshotsStatus() {
RestSnapshotsStatusAction action = new RestSnapshotsStatusAction();
Exception e = assertThrows(OpenSearchParseException.class, () -> action.prepareRequest(getRestRequestWithBothParams(), client));
assertThat(e.getMessage(), containsString(DUPLICATE_PARAMETER_ERROR_MESSAGE));
assertWarnings(MASTER_TIMEOUT_DEPRECATED_MESSAGE);
}
public void testVerifyRepository() {
RestVerifyRepositoryAction action = new RestVerifyRepositoryAction();
Exception e = assertThrows(OpenSearchParseException.class, () -> action.prepareRequest(getRestRequestWithBothParams(), client));
assertThat(e.getMessage(), containsString(DUPLICATE_PARAMETER_ERROR_MESSAGE));
assertWarnings(MASTER_TIMEOUT_DEPRECATED_MESSAGE);
}
private MasterNodeRequest getMasterNodeRequest() { private MasterNodeRequest getMasterNodeRequest() {
return new MasterNodeRequest() { return new MasterNodeRequest() {
@Override @Override