jenkins-bot has submitted this change and it was merged. (
https://gerrit.wikimedia.org/r/344814 )
Change subject: Use local ORES service when both ores and ores_services roles
are enabled
..
Use local ORES service when both ores and ores_services roles are enabled
Enables 'damaging' score for which the local service will give random
results.
Depends on https://github.com/wiki-ai/ores/pull/199
Also fixes some unrelated copypaste errors in the ores role and adds some
missing dependencies.
Bug: T159105
Change-Id: I2ea694c745f2c3e2f636ee76f839393f89107633
---
M puppet/modules/ores/manifests/init.pp
M puppet/modules/role/manifests/ores.pp
M puppet/modules/role/manifests/ores_service.pp
M puppet/modules/wikilabels/manifests/init.pp
4 files changed, 53 insertions(+), 3 deletions(-)
Approvals:
jenkins-bot: Verified
Awight: Checked; Looks good to me, approved
diff --git a/puppet/modules/ores/manifests/init.pp
b/puppet/modules/ores/manifests/init.pp
index cf84dde..fa37eb3 100644
--- a/puppet/modules/ores/manifests/init.pp
+++ b/puppet/modules/ores/manifests/init.pp
@@ -69,9 +69,10 @@
ensure => present,
service_params => {
require => [
-VirtualEnv::Package['wikilabels'],
+VirtualEnv::Package['ores'],
+Class['mediawiki::ready_service'],
Exec['pip_install_revscoring_dependencies_hack'],
-Apache::Site['wikilabels'],
+Apache::Site['ores'],
],
subscribe => [
File[$cfg_file],
@@ -83,6 +84,7 @@
service_params => {
require => [
VirtualEnv::Package['ores'],
+Class['mediawiki::ready_service'],
Exec['pip_install_revscoring_dependencies_hack'],
Apache::Site['ores'],
],
diff --git a/puppet/modules/role/manifests/ores.pp
b/puppet/modules/role/manifests/ores.pp
index 1bd7069..b51b052 100644
--- a/puppet/modules/role/manifests/ores.pp
+++ b/puppet/modules/role/manifests/ores.pp
@@ -27,6 +27,13 @@
mediawiki::maintenance { 'check ORES model versions':
command => '/usr/local/bin/mwscript
extensions/ORES/maintenance/CheckModelVersions.php --wiki=wiki',
unless => '/usr/bin/mysql -e "select * from ores_model" wiki |
/bin/grep -q "damaging"',
-require => Mediawiki::Extension['ORES']
+require => Mediawiki::Extension['ORES'],
}
+
+# Ensure that the maintenance script does not run before the API is alive,
+# when ORES is installed locally via role::ores_service.
+# This is pretty horrible but seems to be the only way of avoiding cycles.
+Systemd::Service<| title == 'ores-wsgi' or title == 'ores-celery' |>
+->
+Mediawiki::Maintenance['check ORES model versions']
}
diff --git a/puppet/modules/role/manifests/ores_service.pp
b/puppet/modules/role/manifests/ores_service.pp
index d223abf..f5d646b 100644
--- a/puppet/modules/role/manifests/ores_service.pp
+++ b/puppet/modules/role/manifests/ores_service.pp
@@ -5,6 +5,46 @@
include ::ores
$ores_hostname = $::ores::vhost_name
+
+# when role::ores is also enabled, make it use the local service
+mediawiki::settings { 'ORES service':
+values => {
+wgOresBaseUrl => "http://localhost:${::ores::port}/;,
+wgOresWikiId=> 'wiki',
+wgOresModels=> {
+damaging => true,
+goodfaith => false,
+reverted => false,
+wp10 => false,
+},
+# the mock scorer used by the local service cannot
+# provide recall stats so dynamic threshold configuration
+# would cause score fetches to silently fail. Use a
+# constant dummy configuration instead.
+wgOresFiltersThresholds => {
+damaging => {
+likelygood=> {
+min => 0,
+max => 0.3,
+},
+maybebad => {
+min => 0.2,
+max => 1,
+},
+likelybad => {
+min => 0.5,
+max => 1,
+},
+verylikelybad => {
+min => 0.8,
+max => 1,
+},
+},
+},
+},
+priority => 20,
+}
+
mediawiki::import::text { 'VagrantRoleOresService':
content =>
template('role/ores_service/VagrantRoleOresService.wiki.erb'),
}
diff --git a/puppet/modules/wikilabels/manifests/init.pp
b/puppet/modules/wikilabels/manifests/init.pp
index 8e73747..e5642f3 100644
--- a/puppet/modules/wikilabels/manifests/init.pp
+++