diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt index bbd91f72cca..d0700b6e4e7 100644 --- a/solr/CHANGES.txt +++ b/solr/CHANGES.txt @@ -103,6 +103,8 @@ New Features * SOLR-11592: Add OpenNLP language detection to the langid contrib. (Koji, Steve Rowe) +* SOLR-11648: A new admin UI to display and execute suggestions (Apoorv Bhawsar , noble) + Bug Fixes ---------------------- diff --git a/solr/webapp/web/css/angular/menu.css b/solr/webapp/web/css/angular/menu.css index 0e73a59a8cf..998c5e3fd66 100644 --- a/solr/webapp/web/css/angular/menu.css +++ b/solr/webapp/web/css/angular/menu.css @@ -257,6 +257,7 @@ limitations under the License. #menu #collections.global p a { background-image: url( ../../img/ico/documents-stack.png ); } #menu #cores.global p a { background-image: url( ../../img/ico/databases.png ); } +#menu #cluster-suggestions.global p a { background-image: url( ../../img/ico/idea.png ); } #menu #cloud.global p a { background-image: url( ../../img/ico/network-cloud.png ); } #menu #cloud.global .tree a { background-image: url( ../../img/ico/folder-tree.png ); } diff --git a/solr/webapp/web/css/angular/suggestions.css b/solr/webapp/web/css/angular/suggestions.css new file mode 100644 index 00000000000..6d9fa659970 --- /dev/null +++ b/solr/webapp/web/css/angular/suggestions.css @@ -0,0 +1,64 @@ +/* + +Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +*/ +#cluster-suggestions +.s-container{ + text-align:center; +} +#cluster-suggestions +.s-box1{ + background-image: url( ../../img/ico/run.png ); + background-color: transparent; + background-repeat: no-repeat; + border: none; + cursor: pointer; + vertical-align: middle; + display:inline-block; + width:20px; +} +#cluster-suggestions +.s-box2{ + display:inline-block; +} +#cluster-suggestions +.s-box3{ + display:inline-block; +} +#cluster-suggestions +.s-box4{ + display:inline-block; +} +#s-table { + border-collapse: collapse; + width: 60%; +} + +#s-table td, #customers th { + border: 1px solid #ddd; + padding: 8px; +} + +#cluster-suggestions #s-table tr:nth-child(even){background-color: #f2f2f2;} + +#cluster-suggestions #s-table th { + padding-top: 12px; + padding-bottom: 12px; + text-align: left; + background-color: #4CAF50; + color: white; +} diff --git a/solr/webapp/web/img/ico/idea.png b/solr/webapp/web/img/ico/idea.png new file mode 100644 index 00000000000..8b3abbd5e9b Binary files /dev/null and b/solr/webapp/web/img/ico/idea.png differ diff --git a/solr/webapp/web/img/ico/run.png b/solr/webapp/web/img/ico/run.png new file mode 100644 index 00000000000..dc35fe3cb29 Binary files /dev/null and b/solr/webapp/web/img/ico/run.png differ diff --git a/solr/webapp/web/index.html b/solr/webapp/web/index.html index 35cd19600cf..54203bc00e4 100644 --- a/solr/webapp/web/index.html +++ b/solr/webapp/web/index.html @@ -41,6 +41,7 @@ limitations under the License. + @@ -78,6 +79,8 @@ limitations under the License. + + @@ -157,6 +160,7 @@ limitations under the License.
  • Java Properties

  • Thread Dump

  • +
  • Suggestions

  • diff --git a/solr/webapp/web/js/angular/app.js b/solr/webapp/web/js/angular/app.js index 1b7aa00afee..ad96ce0d3c0 100644 --- a/solr/webapp/web/js/angular/app.js +++ b/solr/webapp/web/js/angular/app.js @@ -67,6 +67,10 @@ solrAdminApp.config([ templateUrl: 'partials/java-properties.html', controller: 'JavaPropertiesController' }). + when('/~cluster-suggestions', { + templateUrl: 'partials/cluster_suggestions.html', + controller: 'ClusterSuggestionsController' + }). when('/:core', { templateUrl: 'partials/core_overview.html', controller: 'CoreOverviewController' diff --git a/solr/webapp/web/js/angular/controllers/cluster-suggestions.js b/solr/webapp/web/js/angular/controllers/cluster-suggestions.js new file mode 100644 index 00000000000..47e428fe38d --- /dev/null +++ b/solr/webapp/web/js/angular/controllers/cluster-suggestions.js @@ -0,0 +1,61 @@ +/* + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +solrAdminApp.controller('ClusterSuggestionsController', +function($scope,$http) { + $scope.data={} + var dataArr =[]; + var dataJson = {}; + //function to display suggestion + $http({ + method: 'GET', + url: '/api/cluster/autoscaling/suggestions' + }).then(function successCallback(response) { + $scope.data = response.data; + $scope.parsedData = $scope.data.suggestions; + }, function errorCallback(response) { + }); + //function to perform operation + $scope.postdata = function (x) { + x.loading = true; + var path=x.operation.path; + var command=x.operation.command; + var fullPath='/api/'+path; + console.log(fullPath); + console.log(command); + $http.post(fullPath, JSON.stringify(command)).then(function (response) { + if (response.data) + console.log(response.data); + x.loading = false; + x.done = true; + x.run=true; + $scope.msg = "Post Data Submitted Successfully!"; + }, function (response) { + x.failed=true; + $scope.msg = "Service not Exists"; + $scope.statusval = response.status; + $scope.statustext = response.statusText; + $scope.headers = response.headers(); + }); + }; + $scope.showPopover = function() { + $scope.popup = true; + }; + + $scope.hidePopover = function () { + $scope.popup = false; + }; +}); diff --git a/solr/webapp/web/partials/cluster_suggestions.html b/solr/webapp/web/partials/cluster_suggestions.html new file mode 100644 index 00000000000..cbb05b2d903 --- /dev/null +++ b/solr/webapp/web/partials/cluster_suggestions.html @@ -0,0 +1,49 @@ + + +
    +

    Cluster Suggestions

    +
    + + + + + + + + + + + + + + + + +
    TypeReasonAction
    NANANA
    {{ x.type }}{{ x.violation.clause }} +
    + +
    +
    +
    +
    +
    + +
    +