Bugzilla – Attachment 68862 Details for
Bug 19542
Koha should display Elasticsearch information in the about page
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 19542: Add Elasticsearch information in the 'About' page
Bug-19542-Add-Elasticsearch-information-in-the-Abo.patch (text/plain), 6.62 KB, created by
Tomás Cohen Arazi (tcohen)
on 2017-10-31 14:48:28 UTC
(
hide
)
Description:
Bug 19542: Add Elasticsearch information in the 'About' page
Filename:
MIME Type:
Creator:
Tomás Cohen Arazi (tcohen)
Created:
2017-10-31 14:48:28 UTC
Size:
6.62 KB
patch
obsolete
>From 0cd6825f07629482991e5922d47075992532401e Mon Sep 17 00:00:00 2001 >From: Tomas Cohen Arazi <tomascohen@theke.io> >Date: Tue, 31 Oct 2017 11:29:28 -0300 >Subject: [PATCH] Bug 19542: Add Elasticsearch information in the 'About' page > >This patch adds Elasticsearch related information to the 'About' page. > >The information is gathered and displayed only when the 'SearchEngine' syspref >is set to 'Elasticsearch'. It displays configured nodes, and the status: >- Running >- Not running > >In case it is running, it displays the defined indices and the document count on each. >If there are configuration problems, exceptions are catch and a convenient warning >message is displayed. > >To test: >- Apply this patches >- Run: > $ kshell > k$ prove t/Koha/SearchEngine/Elasticsearch.t >=> SUCCESS: Tests pass! >- Have ES configured in your koha-conf.xml file (by default in kohadevbox) >- Set the 'SearchEngine' syspref to 'Elasticsearch' >- Comment out pieces of the elasticsearch-specific entries (server, index_name, > the whole elasticsearch block). Reload on each change. >=> SUCCESS: Warning messages are displayed and make sense in the context of your changes. >----> the rest of the tests require having ES running on the dev env. This can be easily > achieved by creating the kohadevbox using: > $ KOHA_ELASTICSEARCH=1 vagrant up >- Stop the 'elasticsearch' service: > $ sudo service elasticsearch stop >- Reload about.pl >=> SUCCESS: The configured nodes are displayed, and the status is 'not running' >- Start the 'elasticsearch' service: > $ sudo service elasticsearch start >- Reload about.pl >=> SUCCESS: The configured nodes are displayed, the status is 'running' and > created indices info is displayed, along with the document count > on each index. >- Sign off :-D >--- > about.pl | 66 ++++++++++++++++++++++++ > koha-tmpl/intranet-tmpl/prog/en/modules/about.tt | 26 ++++++++++ > 2 files changed, 92 insertions(+) > >diff --git a/about.pl b/about.pl >index 1fd28e4..32cb0bd 100755 >--- a/about.pl >+++ b/about.pl >@@ -27,6 +27,8 @@ use List::MoreUtils qw/ any /; > use LWP::Simple; > use XML::Simple; > use Config; >+use Search::Elasticsearch; >+use Try::Tiny; > > use C4::Output; > use C4::Auth; >@@ -38,8 +40,11 @@ use Koha::Acquisition::Currencies; > use Koha::Patrons; > use Koha::Caches; > use Koha::Config::SysPrefs; >+use Koha::SearchEngine::Elasticsearch; >+ > use C4::Members::Statistics; > >+ > #use Smart::Comments '####'; > > my $query = new CGI; >@@ -260,6 +265,67 @@ if ( !defined C4::Context->config('use_zebra_facets') ) { > } > } > >+if ( C4::Context->preference('SearchEngine') eq 'Elasticsearch' ) { >+ # Check ES configuration health and runtime status >+ >+ my $es_status; >+ my $es_config_error; >+ my $es_running = 1; >+ >+ my $es_conf; >+ try { >+ $es_conf = Koha::SearchEngine::Elasticsearch::_read_configuration(); >+ } >+ catch { >+ if ( ref($_) eq 'Koha::Exceptions::Config::MissingEntry' ) { >+ $template->param( elasticsearch_fatal_config_error => $_->message ); >+ $es_config_error = 1; >+ } >+ warn p($_); >+ }; >+ if ( !$es_config_error ) { >+ >+ my $biblios_index_name = $es_conf->{index_name} . "_" . $Koha::SearchEngine::BIBLIOS_INDEX; >+ my $authorities_index_name = $es_conf->{index_name} . "_" . $Koha::SearchEngine::AUTHORITIES_INDEX; >+ >+ my @indexes = ($biblios_index_name, $authorities_index_name); >+ # TODO: When new indexes get added, we could have other ways to >+ # fetch the list of available indexes (e.g. plugins, etc) >+ $es_status->{nodes} = $es_conf->{nodes}; >+ my $es = Search::Elasticsearch->new({ nodes => $es_conf->{nodes} }); >+ >+ foreach my $index ( @indexes ) { >+ my $count; >+ try { >+ $count = $es->indices->stats( index => $index ) >+ ->{_all}{primaries}{docs}{count}; >+ } >+ catch { >+ if ( ref($_) eq 'Search::Elasticsearch::Error::Missing' ) { >+ push @{ $es_status->{errors} }, "Index not found ($index)"; >+ $count = -1; >+ } >+ elsif ( ref($_) eq 'Search::Elasticsearch::Error::NoNodes' ) { >+ $es_running = 0; >+ } >+ else { >+ # TODO: when time comes, we will cover more use cases >+ die $_; >+ } >+ }; >+ >+ push @{ $es_status->{indexes} }, >+ { >+ index_name => $index, >+ count => $count >+ }; >+ } >+ $es_status->{running} = $es_running; >+ >+ $template->param( elasticsearch_status => $es_status ); >+ } >+} >+ > # Sco Patron should not contain any other perms than circulate => self_checkout > if ( C4::Context->preference('WebBasedSelfCheck') > and C4::Context->preference('AutoSelfCheckAllowed') >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/about.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/about.tt >index 13357e1..f3bbec0 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/about.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/about.tt >@@ -1,4 +1,5 @@ > [% USE HtmlTags %] >+[% USE Koha %] > [% SET footerjs = 1 %] > [% INCLUDE 'doc-head-open.inc' %] > <title>Koha › About Koha</title> >@@ -45,6 +46,31 @@ > [% IF (is_psgi) %] > <tr><th scope="row">PSGI: </th><td>[% psgi_server |html %]</td></tr> > [% END %] >+ [% IF Koha.Preference('SearchEngine') == 'Elasticsearch' %] >+ <tr> >+ <th scope="row">Elasticsearch: </th> >+ [% IF elasticsearch_fatal_config_error %] >+ <td><span class="status_warn">[% elasticsearch_fatal_config_error %]</span></td> >+ [% ELSE %] >+ <td> >+ Nodes: >+ <span>[% elasticsearch_status.nodes.join(' / ') %]</span> >+ | >+ Status: >+ [% IF elasticsearch_status.running %] >+ <span class="status_ok">running</span> >+ | >+ Indices: >+ [% FOREACH index IN elasticsearch_status.indexes %] >+ [% index.index_name %] (count: <emph>[% index.count %]</emph>) >+ [% END %] >+ [% ELSE %] >+ <span class="status_warn">not running</span> >+ [% END %] >+ </td> >+ [% END %] >+ </tr> >+ [% END %] > <tr><th scope="row">Memcached: </th> > <td> > Servers: [% IF memcached_servers %]<span>[% memcached_servers | html %]</span> >-- >2.7.4
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 19542
:
68861
|
68862
|
68863
|
68864
|
68935
|
68936
|
69615
|
69616
|
69617
|
69699
|
69730
|
69731