RANGER-2911: ES plugin missing implemention for some ES request

Signed-off-by: pradeep <pradeep@apache.org>
diff --git a/ranger-elasticsearch-plugin-shim/src/main/java/org/apache/ranger/authorization/elasticsearch/plugin/utils/RequestUtils.java b/ranger-elasticsearch-plugin-shim/src/main/java/org/apache/ranger/authorization/elasticsearch/plugin/utils/RequestUtils.java
index d07d08e..4f407cd 100644
--- a/ranger-elasticsearch-plugin-shim/src/main/java/org/apache/ranger/authorization/elasticsearch/plugin/utils/RequestUtils.java
+++ b/ranger-elasticsearch-plugin-shim/src/main/java/org/apache/ranger/authorization/elasticsearch/plugin/utils/RequestUtils.java
@@ -26,18 +26,53 @@
 import org.apache.commons.collections.CollectionUtils;
 import org.elasticsearch.action.ActionRequest;
 import org.elasticsearch.action.DocWriteRequest;
+import org.elasticsearch.action.admin.cluster.shards.ClusterSearchShardsRequest;
+import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest;
+import org.elasticsearch.action.admin.indices.alias.get.GetAliasesRequest;
+import org.elasticsearch.action.admin.indices.cache.clear.ClearIndicesCacheRequest;
+import org.elasticsearch.action.admin.indices.close.CloseIndexRequest;
 import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
 import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
+import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsRequest;
+import org.elasticsearch.action.admin.indices.exists.types.TypesExistsRequest;
+import org.elasticsearch.action.admin.indices.flush.FlushRequest;
+import org.elasticsearch.action.admin.indices.flush.SyncedFlushRequest;
+import org.elasticsearch.action.admin.indices.forcemerge.ForceMergeRequest;
+import org.elasticsearch.action.admin.indices.get.GetIndexRequest;
+import org.elasticsearch.action.admin.indices.mapping.get.GetFieldMappingsRequest;
+import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsRequest;
 import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequest;
 import org.elasticsearch.action.admin.indices.open.OpenIndexRequest;
+import org.elasticsearch.action.admin.indices.recovery.RecoveryRequest;
+import org.elasticsearch.action.admin.indices.refresh.RefreshRequest;
+import org.elasticsearch.action.admin.indices.rollover.RolloverRequest;
+import org.elasticsearch.action.admin.indices.segments.IndicesSegmentsRequest;
+import org.elasticsearch.action.admin.indices.settings.get.GetSettingsRequest;
+import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsRequest;
+import org.elasticsearch.action.admin.indices.shards.IndicesShardStoresRequest;
+import org.elasticsearch.action.admin.indices.shrink.ResizeRequest;
 import org.elasticsearch.action.admin.indices.stats.IndicesStatsRequest;
+import org.elasticsearch.action.admin.indices.template.delete.DeleteIndexTemplateRequest;
+import org.elasticsearch.action.admin.indices.template.get.GetIndexTemplatesRequest;
+import org.elasticsearch.action.admin.indices.template.put.PutIndexTemplateRequest;
+import org.elasticsearch.action.admin.indices.upgrade.get.UpgradeStatusRequest;
+import org.elasticsearch.action.admin.indices.upgrade.post.UpgradeRequest;
+import org.elasticsearch.action.admin.indices.validate.query.ValidateQueryRequest;
 import org.elasticsearch.action.bulk.BulkRequest;
+import org.elasticsearch.action.fieldcaps.FieldCapabilitiesRequest;
 import org.elasticsearch.action.get.MultiGetRequest;
 import org.elasticsearch.action.get.MultiGetRequest.Item;
+import org.elasticsearch.action.search.ClearScrollRequest;
+import org.elasticsearch.action.search.MultiSearchRequest;
 import org.elasticsearch.action.search.SearchRequest;
 import org.elasticsearch.action.support.replication.ReplicationRequest;
 import org.elasticsearch.action.support.single.instance.InstanceShardOperationRequest;
 import org.elasticsearch.action.support.single.shard.SingleShardRequest;
+import org.elasticsearch.action.termvectors.MultiTermVectorsRequest;
+import org.elasticsearch.action.termvectors.TermVectorsRequest;
+import org.elasticsearch.index.reindex.DeleteByQueryRequest;
+import org.elasticsearch.index.reindex.ReindexRequest;
+import org.elasticsearch.index.reindex.UpdateByQueryRequest;
 import org.elasticsearch.rest.RestRequest;
 
 public class RequestUtils {
@@ -122,6 +157,165 @@
 			}
 		}
 
+		if (request instanceof GetMappingsRequest) {
+			return Arrays.asList(((GetMappingsRequest) request).indices());
+		}
+
+		if (request instanceof GetSettingsRequest) {
+			return Arrays.asList(((GetSettingsRequest) request).indices());
+		}
+
+		if (request instanceof IndicesExistsRequest) {
+			return Arrays.asList(((IndicesExistsRequest) request).indices());
+		}
+
+		if (request instanceof GetAliasesRequest) {
+			return Arrays.asList(((GetAliasesRequest) request).indices());
+		}
+
+		if (request instanceof GetIndexRequest) {
+			return Arrays.asList(((GetIndexRequest) request).indices());
+		}
+
+		if (request instanceof GetFieldMappingsRequest) {
+			return Arrays.asList(((GetFieldMappingsRequest) request).indices());
+		}
+
+		if (request instanceof TypesExistsRequest) {
+			return Arrays.asList(((TypesExistsRequest) request).indices());
+		}
+
+		if (request instanceof ValidateQueryRequest) {
+			return Arrays.asList(((ValidateQueryRequest) request).indices());
+		}
+
+		if (request instanceof RecoveryRequest) {
+			return Arrays.asList(((RecoveryRequest) request).indices());
+		}
+
+		if (request instanceof IndicesSegmentsRequest) {
+			return Arrays.asList(((IndicesSegmentsRequest) request).indices());
+		}
+
+		if (request instanceof IndicesShardStoresRequest) {
+			return Arrays.asList(((IndicesShardStoresRequest) request).indices());
+		}
+
+		if (request instanceof UpgradeStatusRequest) {
+			return Arrays.asList(((UpgradeStatusRequest) request).indices());
+		}
+
+		if (request instanceof ClusterSearchShardsRequest) {
+			return Arrays.asList(((ClusterSearchShardsRequest) request).indices());
+		}
+
+		if (request instanceof IndicesAliasesRequest) {
+			List<IndicesAliasesRequest.AliasActions> aliasActions = ((IndicesAliasesRequest) request).getAliasActions();
+			if (CollectionUtils.isNotEmpty(aliasActions)) {
+				for (IndicesAliasesRequest.AliasActions action : aliasActions) {
+					indexs.addAll(Arrays.asList(action.indices()));
+				}
+				return indexs;
+			}
+		}
+
+		if (request instanceof ClearIndicesCacheRequest) {
+			return Arrays.asList(((ClearIndicesCacheRequest) request).indices());
+		}
+
+		if (request instanceof CloseIndexRequest) {
+			return Arrays.asList(((CloseIndexRequest) request).indices());
+		}
+
+		if (request instanceof FlushRequest) {
+			return Arrays.asList(((FlushRequest) request).indices());
+		}
+
+		if (request instanceof SyncedFlushRequest) {
+			return Arrays.asList(((SyncedFlushRequest) request).indices());
+		}
+
+		if (request instanceof ForceMergeRequest) {
+			return Arrays.asList(((ForceMergeRequest) request).indices());
+		}
+
+		if (request instanceof RefreshRequest) {
+			return Arrays.asList(((RefreshRequest) request).indices());
+		}
+
+		if (request instanceof RolloverRequest) {
+			return Arrays.asList(((RolloverRequest) request).indices());
+		}
+
+		if (request instanceof UpdateSettingsRequest) {
+			return Arrays.asList(((UpdateSettingsRequest) request).indices());
+		}
+
+		if (request instanceof ResizeRequest) {
+			return Arrays.asList(((ResizeRequest) request).indices());
+		}
+
+		if (request instanceof DeleteIndexTemplateRequest) {
+			indexs.add(((DeleteIndexTemplateRequest) request).name());
+			return indexs;
+		}
+
+		if (request instanceof GetIndexTemplatesRequest) {
+			return Arrays.asList(((GetIndexTemplatesRequest) request).names());
+		}
+
+		if (request instanceof PutIndexTemplateRequest) {
+			indexs.add(((PutIndexTemplateRequest) request).name());
+			return indexs;
+		}
+
+		if (request instanceof UpgradeRequest) {
+			return Arrays.asList(((UpgradeRequest) request).indices());
+		}
+
+		if (request instanceof FieldCapabilitiesRequest) {
+			return Arrays.asList(((FieldCapabilitiesRequest) request).indices());
+		}
+
+		if (request instanceof MultiSearchRequest) {
+			List<SearchRequest> searchRequests = ((MultiSearchRequest) request).requests();
+			if (CollectionUtils.isNotEmpty(searchRequests)) {
+				for (SearchRequest singleRequest : searchRequests) {
+					indexs.addAll(Arrays.asList(singleRequest.indices()));
+				}
+				return indexs;
+			}
+		}
+
+		if (request instanceof MultiTermVectorsRequest) {
+			List<TermVectorsRequest> termVectorsRequests = ((MultiTermVectorsRequest) request).getRequests();
+			if (CollectionUtils.isNotEmpty(termVectorsRequests)) {
+				for (TermVectorsRequest singleRequest : termVectorsRequests) {
+					indexs.addAll(Arrays.asList(singleRequest.indices()));
+				}
+				return indexs;
+			}
+		}
+
+		if (request instanceof UpdateByQueryRequest) {
+			return Arrays.asList(((UpdateByQueryRequest) request).indices());
+		}
+
+		if (request instanceof DeleteByQueryRequest) {
+			return Arrays.asList(((DeleteByQueryRequest) request).indices());
+		}
+
+		if (request instanceof ReindexRequest) {
+			indexs.addAll(Arrays.asList(((ReindexRequest) request).getSearchRequest().indices()));
+			indexs.addAll(Arrays.asList(((ReindexRequest) request).getDestination().indices()));
+			return indexs;
+		}
+
+		//ClearScrollRequest does not carry any index, so return empty List
+		if (request instanceof ClearScrollRequest) {
+			return indexs;
+		}
+
 		// No matched request type to find specific index , set default value *
 		indexs.add("*");
 		return indexs;