jenkins-bot has submitted this change and it was merged.
Change subject: Add redis::php class & 'needs_update' param for extensions
......................................................................
Add redis::php class & 'needs_update' param for extensions
* If an extension sets needs_update => true, maintenance/update.php will
now be invoked.
* A broader range of possible Puppet values are serialized correctly
into PHP values.
* Fixed a typo in parameter names that was causing the admin username /
pass to be set incorrectly.
* Fixed a bug that was preventing the MySQL client from knowing about
database name changes.
Change-Id: If7a2e74f67b283b2a445637ecae4aab07f151cce
---
M puppet/modules/mediawiki/manifests/extension.pp
M puppet/modules/mediawiki/manifests/init.pp
M puppet/modules/mediawiki/templates/extension-loader.php.erb
M puppet/modules/misc/manifests/init.pp
M puppet/modules/mysql/manifests/init.pp
M puppet/modules/mysql/templates/my.cnf.erb
M puppet/modules/redis/manifests/init.pp
A puppet/modules/redis/manifests/php.pp
8 files changed, 54 insertions(+), 14 deletions(-)
Approvals:
Ori.livneh: Looks good to me, approved
jenkins-bot: Verified
diff --git a/puppet/modules/mediawiki/manifests/extension.pp
b/puppet/modules/mediawiki/manifests/extension.pp
index 6b1a616..54aff67 100644
--- a/puppet/modules/mediawiki/manifests/extension.pp
+++ b/puppet/modules/mediawiki/manifests/extension.pp
@@ -29,6 +29,11 @@
# default is 10. You only need to override the default if you want
# this extension to load before or after some other extension.
#
+# [*needs_update*]
+# If true, run MediaWiki's database update maintenance script
+# (maintenance/update.php) after configuring the extension. False by
+# default.
+#
# [*settings*]
# This parameter contains configuration settings for the extension.
# Settings may be specified as a hash, array, or string. See examples
@@ -68,11 +73,12 @@
# }
#
define mediawiki::extension(
- $ensure = present,
- $extension = $title,
- $entrypoint = "${title}.php",
- $priority = 10,
- $settings = {},
+ $ensure = present,
+ $extension = $title,
+ $entrypoint = "${title}.php",
+ $priority = 10,
+ $needs_update = false,
+ $settings = {},
) {
include mediawiki
@@ -95,5 +101,12 @@
owner => 'vagrant',
group => 'www-data',
mode => '0770',
+ require => Git::Clone["mediawiki/extensions/${extension}"],
+ }
+
+ if $needs_update {
+ # If the extension requires a schema migration, set up the
+ # setting file resource to notify update.php.
+ File["/vagrant/settings/${settings_file}"] ~> Exec['update
database']
}
}
diff --git a/puppet/modules/mediawiki/manifests/init.pp
b/puppet/modules/mediawiki/manifests/init.pp
index 0948e01..3569f9c 100644
--- a/puppet/modules/mediawiki/manifests/init.pp
+++ b/puppet/modules/mediawiki/manifests/init.pp
@@ -59,7 +59,7 @@
exec { 'mediawiki setup':
require => [ Exec['set mysql password'],
Git::Clone['mediawiki/core'] ],
creates => "${dir}/LocalSettings.php",
- command => "php ${dir}/maintenance/install.php ${wiki_name}
${admin} --pass ${pass} --dbname ${db_name} --dbuser ${db_user} --dbpass
${db_pass} --server ${server_url} --scriptpath '/w'",
+ command => "php ${dir}/maintenance/install.php ${wiki_name}
${admin_user} --pass ${admin_pass} --dbname ${db_name} --dbuser ${db_user}
--dbpass ${db_pass} --server ${server_url} --scriptpath '/w'",
}
exec { 'require extra settings':
@@ -84,4 +84,11 @@
command => "${dir}/tests/phpunit/install-phpunit.sh",
require => Exec['mediawiki setup'],
}
+
+ exec { 'update database':
+ command => "php ${dir}/maintenance/update.php --quick",
+ refreshonly => true,
+ }
+
+ Exec['mediawiki setup'] -> Mediawiki::Extension <| |>
}
diff --git a/puppet/modules/mediawiki/templates/extension-loader.php.erb
b/puppet/modules/mediawiki/templates/extension-loader.php.erb
index 0fdd548..e193497 100644
--- a/puppet/modules/mediawiki/templates/extension-loader.php.erb
+++ b/puppet/modules/mediawiki/templates/extension-loader.php.erb
@@ -1,13 +1,20 @@
<?php
// Loader for "<%= @extension %>" MediaWiki extension.
// This file is managed by Puppet.
-require_once "<%= @extension_dir.sub( /^#{scope.lookupvar('mediawiki::dir')}/,
'$IP' ) %>/<%= @entrypoint %>";
+<% if @entrypoint -%>
+include_once "<%= @extension_dir.sub( /^#{scope.lookupvar('mediawiki::dir')}/,
'$IP' ) %>/<%= @entrypoint %>";
+<% end -%>
<%=
case @settings
when Hash
- @settings.map { |k,v|
- "$#{k} = #{v.respond_to?(:to_i) && v.to_i == v ? v : v.inspect};"
+ @settings.sort.map { |k,v|
+ v = case
+ when v.respond_to?(:to_i) && v.to_i.to_s == v then v
+ when v.is_a?(Array) then v.inspect.gsub(/^\[(.*)\]$/, 'array(
\\1 )')
+ else v.inspect
+ end
+ "$#{k} = #{v};"
}.join("\n")
when Array
@settings.map { |v|
diff --git a/puppet/modules/misc/manifests/init.pp
b/puppet/modules/misc/manifests/init.pp
index e328d3e..9a8e4e0 100644
--- a/puppet/modules/misc/manifests/init.pp
+++ b/puppet/modules/misc/manifests/init.pp
@@ -40,7 +40,7 @@
}
# Small, nifty, useful things
- package { [ 'ack-grep', 'htop', 'curl', 'tree' ]:
+ package { [ 'ack-grep', 'htop', 'curl' ]:
ensure => present,
}
diff --git a/puppet/modules/mysql/manifests/init.pp
b/puppet/modules/mysql/manifests/init.pp
index b0784a8..75a0c3f 100644
--- a/puppet/modules/mysql/manifests/init.pp
+++ b/puppet/modules/mysql/manifests/init.pp
@@ -45,7 +45,6 @@
owner => 'vagrant',
group => 'vagrant',
mode => '0600',
- replace => no,
content => template('mysql/my.cnf.erb'),
}
}
diff --git a/puppet/modules/mysql/templates/my.cnf.erb
b/puppet/modules/mysql/templates/my.cnf.erb
index 6caa01f..b27300f 100644
--- a/puppet/modules/mysql/templates/my.cnf.erb
+++ b/puppet/modules/mysql/templates/my.cnf.erb
@@ -8,10 +8,9 @@
[mysql]
pager = "less -inSFX"
prompt = "(\R:\m)\_\u@\h:[\d]>\_"
-
-<% if @default_db_name %>
+<% if @default_db_name -%>
database = "<%= @default_db_name %>"
-<% end %>
+<% end -%>
comments = true
show-warnings = true
default-character-set = utf8
diff --git a/puppet/modules/redis/manifests/init.pp
b/puppet/modules/redis/manifests/init.pp
index 4c67652..4511c94 100644
--- a/puppet/modules/redis/manifests/init.pp
+++ b/puppet/modules/redis/manifests/init.pp
@@ -43,6 +43,8 @@
$persist = false,
$settings = {},
) {
+ include redis::php
+
$save = $persist ? {
true => [ '60', '1' ],
default => undef,
diff --git a/puppet/modules/redis/manifests/php.pp
b/puppet/modules/redis/manifests/php.pp
new file mode 100644
index 0000000..898fece
--- /dev/null
+++ b/puppet/modules/redis/manifests/php.pp
@@ -0,0 +1,13 @@
+# == Class: redis::php
+#
+# This class configures phpredis, a PHP extension that provides an API
+# for communicating with the Redis key-value store.
+#
+class redis::php {
+ include redis
+
+ package { 'php5-redis':
+ ensure => present,
+ require => Service['redis-server'],
+ }
+}
--
To view, visit https://gerrit.wikimedia.org/r/63442
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: If7a2e74f67b283b2a445637ecae4aab07f151cce
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/vagrant
Gerrit-Branch: master
Gerrit-Owner: Ori.livneh <[email protected]>
Gerrit-Reviewer: Ori.livneh <[email protected]>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits