jenkins-bot has submitted this change and it was merged.
Change subject: New resource to import wiki pages from strings/text files
......................................................................
New resource to import wiki pages from strings/text files
Bug: T88872
Change-Id: Ice89478f2440eb31b1599ab3e86235ffeec66db6
---
M puppet/hieradata/common.yaml
M puppet/modules/mediawiki/manifests/import_dump.pp
A puppet/modules/mediawiki/manifests/import_text.pp
M puppet/modules/mediawiki/manifests/init.pp
M puppet/modules/mediawiki/manifests/wiki.pp
5 files changed, 84 insertions(+), 1 deletion(-)
Approvals:
BryanDavis: Looks good to me, approved
jenkins-bot: Verified
diff --git a/puppet/hieradata/common.yaml b/puppet/hieradata/common.yaml
index e45b0d8..2580e0f 100644
--- a/puppet/hieradata/common.yaml
+++ b/puppet/hieradata/common.yaml
@@ -131,6 +131,7 @@
mediawiki::cache_dir: /var/cache/mediawiki
mediawiki::settings_dir: /vagrant/settings.d
mediawiki::upload_dir: /srv/images
+mediawiki::page_dir: /srv/pages
mediawiki::db_name: "%{hiera('mysql::default_db_name')}"
mediawiki::db_user: root
mediawiki::db_pass: "%{hiera('mysql::root_password')}"
diff --git a/puppet/modules/mediawiki/manifests/import_dump.pp
b/puppet/modules/mediawiki/manifests/import_dump.pp
index f2a196b..252bfee 100644
--- a/puppet/modules/mediawiki/manifests/import_dump.pp
+++ b/puppet/modules/mediawiki/manifests/import_dump.pp
@@ -1,6 +1,8 @@
# == Define: mediawiki::import_dump
#
-# Imports an xml dump into the wiki.
+# Imports an xml dump into the wiki. This is the recommended method for
+# importing "live" content from a wiki; for importing content that should live
+# in the puppet repository, see mediawiki::import_text.
#
# === Parameters
# [*xml_dump*]
diff --git a/puppet/modules/mediawiki/manifests/import_text.pp
b/puppet/modules/mediawiki/manifests/import_text.pp
new file mode 100644
index 0000000..a383591
--- /dev/null
+++ b/puppet/modules/mediawiki/manifests/import_text.pp
@@ -0,0 +1,65 @@
+# == Define: mediawiki::import_text
+#
+# Imports a string or text file into the wiki. This is the recommended method
+# for importing version-controlled content such as documentation for vagrant
+# roles; for importing current content from a wiki, see import_dump.
+#
+# Apart from cleaner diffs when put into version control, the main difference
+# from import_dump is that import_text will update existing pages when
+# necessary.
+#
+# Required parameters are page_title and exactly one of path or content.
+#
+# === Parameters
+# [*page_title*]
+# Full title of the page where the text should be imported. Defaults to the
+# resource title.
+#
+# [*source*]
+# Fully qualified path to the file to import.
+#
+# [*content*]
+# Page content as a string.
+#
+# [*db_name*]
+# Wiki database to import page into. The default will import into the
+# primary wiki.
+#
+# [*wiki*]
+# Wiki to import page into. The default will import into the primary wiki.
+#
+# == Usage
+#
+# mediawiki::import_text { 'Main_Page':
+# content => template('mediawiki/mainpage.erb'),
+# }
+#
+define mediawiki::import_text(
+ $page_title = $title,
+ $source = undef,
+ $content = undef,
+ $db_name = $::mediawiki::db_name,
+ $wiki = $::mediawiki::wiki_name,
+) {
+ if $source == undef and $content == undef {
+ fail('you must provide either "source" or "content"')
+ }
+ if $source != undef and $content != undef {
+ fail('"source" and "content" are mutually exclusive')
+ }
+
+ $path = "${::mediawiki::page_dir}/wiki/${db_name}/${page_title}"
+
+ file { $path:
+ source => $source,
+ content => $content,
+ notify => Exec["add page ${wiki}/${page_title}"],
+ }
+
+ exec { "add page ${wiki}/${page_title}":
+ command => "mwscript edit.php --wiki=${db_name} --summary='Vagrant
import' --no-rc '${page_title}' < ${path}",
+ refreshonly => true,
+ user => 'www-data',
+ require => Mediawiki::Wiki[$wiki],
+ }
+}
diff --git a/puppet/modules/mediawiki/manifests/init.pp
b/puppet/modules/mediawiki/manifests/init.pp
index 083c6f7..b72fc1e 100644
--- a/puppet/modules/mediawiki/manifests/init.pp
+++ b/puppet/modules/mediawiki/manifests/init.pp
@@ -40,6 +40,10 @@
# The file system path of the folder where files will be uploaded
# (example: '/srv/mediawiki/images').
#
+# [*page_dir*]
+# The file system path of the folder where the content of vagrant-managed
+# pages is stored (example: '/srv/pages').
+#
# [*branch*]
# Version to check out
#
@@ -57,6 +61,7 @@
$cache_dir,
$settings_dir,
$upload_dir,
+ $page_dir,
$branch = undef,
$server_url = undef,
) {
@@ -110,6 +115,11 @@
source => 'puppet:///modules/mediawiki/mediawiki-settings.d-empty',
}
+ # needed by import_page
+ file { [$page_dir, "${page_dir}/wiki"]:
+ ensure => directory,
+ }
+
mediawiki::wiki { $wiki_name:
db_name => $db_name,
upload_dir => $upload_dir,
diff --git a/puppet/modules/mediawiki/manifests/wiki.pp
b/puppet/modules/mediawiki/manifests/wiki.pp
index 8384d95..3987977 100644
--- a/puppet/modules/mediawiki/manifests/wiki.pp
+++ b/puppet/modules/mediawiki/manifests/wiki.pp
@@ -130,6 +130,11 @@
source => 'puppet:///modules/mediawiki/wiki/settings.d-empty',
}
+ # used by import_page
+ file { "${::mediawiki::page_dir}/wiki/${db_name}":
+ ensure => directory,
+ }
+
# Provision primary wiki before others
Mediawiki::Wiki <| primary_wiki == true |> -> Mediawiki::Wiki <|
primary_wiki == false |>
# Provision wikis before adding extensions
--
To view, visit https://gerrit.wikimedia.org/r/189180
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ice89478f2440eb31b1599ab3e86235ffeec66db6
Gerrit-PatchSet: 5
Gerrit-Project: mediawiki/vagrant
Gerrit-Branch: master
Gerrit-Owner: Gergő Tisza <[email protected]>
Gerrit-Reviewer: BryanDavis <[email protected]>
Gerrit-Reviewer: Dduvall <[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