Hashar has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/123195

Change subject: ganglia: define in subclass at the top level
......................................................................

ganglia: define in subclass at the top level

Lets avoid classes defined inside a class, makes it hard to grep for
them plus puppet-lint complains.

Change-Id: I81b73f922ac8a8f47cf9e5c124b7e4f3daa08e7b
---
M manifests/ganglia.pp
1 file changed, 167 insertions(+), 166 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/puppet 
refs/changes/95/123195/1

diff --git a/manifests/ganglia.pp b/manifests/ganglia.pp
index 2b03754..ab20f8f 100644
--- a/manifests/ganglia.pp
+++ b/manifests/ganglia.pp
@@ -242,181 +242,182 @@
         generic::systemuser { gmetric: name => "gmetric", home => 
"/home/gmetric", shell => "/bin/sh" }
     }
 
-    # == Class ganglia::collector::config
-    # Ganglia gmetad config.  This class does not start
-    # gmetad.  Include ganglia::collector instead if you want to do that.
-    class collector::config {
-        package { "gmetad":
+}
+
+# == Class ganglia::collector::config
+# Ganglia gmetad config.  This class does not start
+# gmetad.  Include ganglia::collector instead if you want to do that.
+class ganglia::collector::config {
+    package { "gmetad":
+        ensure => present;
+    }
+
+    if $::realm == "labs" {
+        $gridname = "wmflabs"
+        # for labs, just generate a stub gmetad configuration without 
data_source lines
+        $gmetad_conf = "gmetad.conf.labsstub"
+        $authority_url = "http://ganglia.wmflabs.org";
+        $rra_sizes = '"RRA:AVERAGE:0.5:1:360" "RRA:AVERAGE:0.5:24:245" 
"RRA:AVERAGE:0.5:168:241" "RRA:AVERAGE:0.5:672:241" "RRA:AVERAGE:0.5:5760:371"'
+        $rrd_rootdir = "/mnt/ganglia_tmp/rrds.pmtpa"
+    } else {
+        $gridname = "Wikimedia"
+        $gmetad_conf = "gmetad.conf"
+        $authority_url = "http://ganglia.wikimedia.org";
+        case $::hostname {
+            # manutius runs gmetad to get varnish data into torrus
+            # unlike other servers, manutius uses the default rrd_rootdir
+            /^manutius$/: {
+                $data_sources = {
+                    "Upload caches eqiad" => "cp1048.eqiad.wmnet 
cp1061.eqiad.wmnet"
+                }
+                $rra_sizes = '"RRA:AVERAGE:0:1:4032" "RRA:AVERAGE:0.17:6:2016" 
"RRA:MAX:0.17:6:2016" "RRA:AVERAGE:0.042:288:732" "RRA:MAX:0.042:288:732"'
+            }
+            # neon needs gmetad config for ganglios
+            /^neon$/: {
+                $data_sources = {
+                    "Miscellaneous"                  => "tarin.pmtpa.wmnet",
+                    "Miscellaneous eqiad"            => "carbon.wikimedia.org 
ms1004.eqiad.wmnet",
+                    "Analytics cluster eqiad"        => 
"analytics1009.eqiad.wmnet analytics1010.eqiad.wmnet analytics1014.eqiad.wmnet",
+                    "Mobile caches eqiad"            => "cp1046.eqiad.wmnet 
cp1047.eqiad.wmnet",
+                    "Mobile caches esams"            => 
"hooft.esams.wikimedia.org:11677",
+                    "Mobile caches ulsfo"            => 'cp4011.ulsfo.wmnet 
cp4019.ulsfo.wmnet',
+                }
+                $rra_sizes = '"RRA:AVERAGE:0.5:1:360" "RRA:AVERAGE:0.5:24:245" 
"RRA:AVERAGE:    0.5:168:241" "RRA:AVERAGE:0.5:672:241" 
"RRA:AVERAGE:0.5:5760:371"'
+                }
+            default: {
+                $data_sources = {
+                    "Video scalers eqiad"            => "tmh1001.eqiad.wmnet 
tmh1002.eqiad.wmnet",
+                    "Image scalers eqiad"            => "mw1153.eqiad.wmnet 
mw1154.eqiad.wmnet",
+                    "API application servers eqiad"  => "mw1114.eqiad.wmnet 
mw1115.eqiad.wmnet",
+                    "Application servers eqaid"      => "mw1017.eqiad.wmnet 
mw1018.eqiad.wmnet",
+                    "Jobrunners eqiad"              => "mw1001.eqiad.wmnet 
mw1002.eqiad.wmnet",
+                    "Bits application servers eqiad" => "mw1151.eqiad.wmnet 
mw1152.eqiad.wmnet",
+                    "MySQL"                          => "db1050.eqiad.wmnet",
+                    "PDF servers"                    => "pdf2.wikimedia.org 
pdf3.wikimedia.org",
+                    "Miscellaneous"                  => "tarin.pmtpa.wmnet",
+                    "Fundraising eqiad"              => 
"pay-lvs1001.frack.eqiad.wmnet pay-lvs1002.frack.eqiad.wmnet",
+                    "SSL cluster esams"              => 
"hooft.esams.wikimedia.org:11675 ssl3001.esams.wikimedia.org 
ssl3002.esams.wikimedia.org",
+                    "Swift pmtpa"                    => "ms-fe1.pmtpa.wmnet 
ms-fe2.pmtpa.wmnet",
+                    "Virtualization cluster eqiad"   => 
"labnet1001.eqiad.wmnet virt1000.wikimedia.org",
+                    "Virtualization cluster pmtpa"   => "virt5.pmtpa.wmnet 
virt0.wikimedia.org",
+                    "Glusterfs cluster pmtpa"        => "labstore1.pmtpa.wmnet 
labstore2.pmtpa.wmnet",
+                    "MySQL eqiad"                    => "db1056.eqiad.wmnet 
db1021.eqiad.wmnet",
+                    "LVS loadbalancers eqiad"        => "lvs1001.wikimedia.org 
lvs1002.wikimedia.org",
+                    "Miscellaneous eqiad"            => "carbon.wikimedia.org 
ms1004.eqiad.wmnet",
+                    "Mobile caches eqiad"            => "cp1046.eqiad.wmnet 
cp1047.eqiad.wmnet",
+                    "Mobile caches esams"            => 
"hooft.esams.wikimedia.org:11677",
+                    "Bits caches eqiad"              => "cp1056.eqiad.wmnet 
cp1057.eqiad.wmnet",
+                    "Upload caches eqiad"            => "cp1048.eqiad.wmnet 
cp1061.eqiad.wmnet",
+                    "SSL cluster eqiad"              => "ssl1001.wikimedia.org 
ssl1002.wikimedia.org",
+                    "Swift eqiad"                    => "ms-fe1001.eqiad.wmnet 
ms-fe1002.eqiad.wmnet",
+                    "Search eqiad"                   => 
"search1001.eqiad.wmnet search1002.eqiad.wmnet",
+                    "Bits caches esams"              => 
"hooft.esams.wikimedia.org:11670 cp3019.esams.wikimedia.org 
cp3020.esams.wikimedia.org",
+                    "LVS loadbalancers esams"        => 
"hooft.esams.wikimedia.org:11651 amslvs1.esams.wikimedia.org 
amslvs2.esams.wikimedia.org",
+                    "Miscellaneous esams"            => 
"hooft.esams.wikimedia.org:11657",
+                    "Analytics cluster eqiad"        => 
"analytics1009.eqiad.wmnet analytics1010.eqiad.wmnet analytics1014.eqiad.wmnet",
+                    "Memcached eqiad"                => "mc1001.eqiad.wmnet 
mc1002.eqiad.wmnet",
+                    "Text caches esams"              => 
"hooft.esams.wikimedia.org:11669",
+                    "Upload caches esams"            => 
"hooft.esams.wikimedia.org:11671 cp3003.esams.wikimedia.org 
cp3004.esams.wikimedia.org",
+                    "Ceph cluster esams"             => 
"ms-be3001.esams.wikimedia.org ms-be3002.esams.wikimedia.org",
+                    "Parsoid eqiad"                  => "wtp1001.eqiad.wmnet",
+                    "Parsoid Varnish eqiad"          => "cp1045.eqiad.wmnet 
cp1058.eqiad.wmnet",
+                    "Redis eqiad"                    => "rdb1001.eqiad.wmnet 
rdb1002.eqiad.wmnet",
+                    "Labs NFS cluster pmtpa"         => "labstore3.pmtpa.wmnet 
labstore4.pmtpa.wmnet",
+                    "Text caches eqiad"              => "cp1052.eqiad.wmnet 
cp1053.eqiad.wmnet",
+                    'Misc Web caches eqiad'          => 'cp1043.eqiad.wmnet 
cp1044.eqiad.wmnet',
+                    "LVS loadbalancers ulsfo"        => "lvs4001.ulsfo.wmnet 
lvs4003.ulsfo.wmnet",
+                    "Bits caches ulsfo"              => 'cp4001.ulsfo.wmnet 
cp4003.ulsfo.wmnet',
+                    "Upload caches ulsfo"            => 'cp4005.ulsfo.wmnet 
cp4013.ulsfo.wmnet',
+                    "Mobile caches ulsfo"            => 'cp4011.ulsfo.wmnet 
cp4019.ulsfo.wmnet',
+                    "Text caches ulsfo"              => 'cp4008.ulsfo.wmnet 
cp4016.ulsfo.wmnet',
+                    "Elasticsearch eqiad"            => 
'elastic1001.eqiad.wmnet elastic1007.eqiad.wmnet elastic1013.eqiad.wmnet',
+                    "Logstash eqiad"                 => 
'logstash1001.eqiad.wmnet logstash1003.eqiad.wmnet',
+
+                }
+                $rra_sizes = '"RRA:AVERAGE:0.5:1:360" "RRA:AVERAGE:0.5:24:245" 
"RRA:AVERAGE:0.5:168:241" "RRA:AVERAGE:0.5:672:241" "RRA:AVERAGE:0.5:5760:371"'
+                $rrd_rootdir = "/mnt/ganglia_tmp/rrds.pmtpa"
+            }
+        }
+    }
+
+    file { "/etc/ganglia/${gmetad_conf}":
+        require => Package[gmetad],
+        content => template("ganglia/gmetad.conf.erb"),
+        mode => 0444,
+        ensure  => present
+    }
+}
+
+# == Class ganglia::collector
+# This class inherits ganglia::collector::config
+# to install gmetad.conf, and then ensures that
+# gmetad is running.
+class ganglia::collector inherits ganglia::collector::config {
+    system::role { "ganglia::collector": description => "Ganglia gmetad 
aggregator" }
+
+    # for labs, gmond.conf and gmetad.conf are generated every 4 hours by a 
cron job
+    if $::realm == "labs" {
+        file { "/etc/ganglia/gmond.conf.labsstub":
+            source => "puppet:///files/ganglia/gmond.conf.labsstub",
+            mode => 0444,
             ensure => present;
         }
 
-        if $::realm == "labs" {
-            $gridname = "wmflabs"
-            # for labs, just generate a stub gmetad configuration without 
data_source lines
-            $gmetad_conf = "gmetad.conf.labsstub"
-            $authority_url = "http://ganglia.wmflabs.org";
-            $rra_sizes = '"RRA:AVERAGE:0.5:1:360" "RRA:AVERAGE:0.5:24:245" 
"RRA:AVERAGE:0.5:168:241" "RRA:AVERAGE:0.5:672:241" "RRA:AVERAGE:0.5:5760:371"'
-            $rrd_rootdir = "/mnt/ganglia_tmp/rrds.pmtpa"
-        } else {
-            $gridname = "Wikimedia"
-            $gmetad_conf = "gmetad.conf"
-            $authority_url = "http://ganglia.wikimedia.org";
-            case $::hostname {
-                # manutius runs gmetad to get varnish data into torrus
-                # unlike other servers, manutius uses the default rrd_rootdir
-                /^manutius$/: {
-                    $data_sources = {
-                        "Upload caches eqiad" => "cp1048.eqiad.wmnet 
cp1061.eqiad.wmnet"
-                    }
-                    $rra_sizes = '"RRA:AVERAGE:0:1:4032" 
"RRA:AVERAGE:0.17:6:2016" "RRA:MAX:0.17:6:2016" "RRA:AVERAGE:0.042:288:732" 
"RRA:MAX:0.042:288:732"'
-                }
-                # neon needs gmetad config for ganglios
-                /^neon$/: {
-                    $data_sources = {
-                        "Miscellaneous"                  => 
"tarin.pmtpa.wmnet",
-                        "Miscellaneous eqiad"            => 
"carbon.wikimedia.org ms1004.eqiad.wmnet",
-                        "Analytics cluster eqiad"        => 
"analytics1009.eqiad.wmnet analytics1010.eqiad.wmnet analytics1014.eqiad.wmnet",
-                        "Mobile caches eqiad"            => 
"cp1046.eqiad.wmnet cp1047.eqiad.wmnet",
-                        "Mobile caches esams"            => 
"hooft.esams.wikimedia.org:11677",
-                        "Mobile caches ulsfo"            => 
'cp4011.ulsfo.wmnet cp4019.ulsfo.wmnet',
-                    }
-                    $rra_sizes = '"RRA:AVERAGE:0.5:1:360" 
"RRA:AVERAGE:0.5:24:245" "RRA:AVERAGE:    0.5:168:241" 
"RRA:AVERAGE:0.5:672:241" "RRA:AVERAGE:0.5:5760:371"'
-                    }
-                default: {
-                    $data_sources = {
-                        "Video scalers eqiad"            => 
"tmh1001.eqiad.wmnet tmh1002.eqiad.wmnet",
-                        "Image scalers eqiad"            => 
"mw1153.eqiad.wmnet mw1154.eqiad.wmnet",
-                        "API application servers eqiad"  => 
"mw1114.eqiad.wmnet mw1115.eqiad.wmnet",
-                        "Application servers eqaid"      => 
"mw1017.eqiad.wmnet mw1018.eqiad.wmnet",
-                        "Jobrunners eqiad"              => "mw1001.eqiad.wmnet 
mw1002.eqiad.wmnet",
-                        "Bits application servers eqiad" => 
"mw1151.eqiad.wmnet mw1152.eqiad.wmnet",
-                        "MySQL"                          => 
"db1050.eqiad.wmnet",
-                        "PDF servers"                    => 
"pdf2.wikimedia.org pdf3.wikimedia.org",
-                        "Miscellaneous"                  => 
"tarin.pmtpa.wmnet",
-                        "Fundraising eqiad"              => 
"pay-lvs1001.frack.eqiad.wmnet pay-lvs1002.frack.eqiad.wmnet",
-                        "SSL cluster esams"              => 
"hooft.esams.wikimedia.org:11675 ssl3001.esams.wikimedia.org 
ssl3002.esams.wikimedia.org",
-                        "Swift pmtpa"                    => 
"ms-fe1.pmtpa.wmnet ms-fe2.pmtpa.wmnet",
-                        "Virtualization cluster eqiad"   => 
"labnet1001.eqiad.wmnet virt1000.wikimedia.org",
-                        "Virtualization cluster pmtpa"   => "virt5.pmtpa.wmnet 
virt0.wikimedia.org",
-                        "Glusterfs cluster pmtpa"        => 
"labstore1.pmtpa.wmnet labstore2.pmtpa.wmnet",
-                        "MySQL eqiad"                    => 
"db1056.eqiad.wmnet db1021.eqiad.wmnet",
-                        "LVS loadbalancers eqiad"        => 
"lvs1001.wikimedia.org lvs1002.wikimedia.org",
-                        "Miscellaneous eqiad"            => 
"carbon.wikimedia.org ms1004.eqiad.wmnet",
-                        "Mobile caches eqiad"            => 
"cp1046.eqiad.wmnet cp1047.eqiad.wmnet",
-                        "Mobile caches esams"            => 
"hooft.esams.wikimedia.org:11677",
-                        "Bits caches eqiad"              => 
"cp1056.eqiad.wmnet cp1057.eqiad.wmnet",
-                        "Upload caches eqiad"            => 
"cp1048.eqiad.wmnet cp1061.eqiad.wmnet",
-                        "SSL cluster eqiad"              => 
"ssl1001.wikimedia.org ssl1002.wikimedia.org",
-                        "Swift eqiad"                    => 
"ms-fe1001.eqiad.wmnet ms-fe1002.eqiad.wmnet",
-                        "Search eqiad"                   => 
"search1001.eqiad.wmnet search1002.eqiad.wmnet",
-                        "Bits caches esams"              => 
"hooft.esams.wikimedia.org:11670 cp3019.esams.wikimedia.org 
cp3020.esams.wikimedia.org",
-                        "LVS loadbalancers esams"        => 
"hooft.esams.wikimedia.org:11651 amslvs1.esams.wikimedia.org 
amslvs2.esams.wikimedia.org",
-                        "Miscellaneous esams"            => 
"hooft.esams.wikimedia.org:11657",
-                        "Analytics cluster eqiad"        => 
"analytics1009.eqiad.wmnet analytics1010.eqiad.wmnet analytics1014.eqiad.wmnet",
-                        "Memcached eqiad"                => 
"mc1001.eqiad.wmnet mc1002.eqiad.wmnet",
-                        "Text caches esams"              => 
"hooft.esams.wikimedia.org:11669",
-                        "Upload caches esams"            => 
"hooft.esams.wikimedia.org:11671 cp3003.esams.wikimedia.org 
cp3004.esams.wikimedia.org",
-                        "Ceph cluster esams"             => 
"ms-be3001.esams.wikimedia.org ms-be3002.esams.wikimedia.org",
-                        "Parsoid eqiad"                  => 
"wtp1001.eqiad.wmnet",
-                        "Parsoid Varnish eqiad"          => 
"cp1045.eqiad.wmnet cp1058.eqiad.wmnet",
-                        "Redis eqiad"                    => 
"rdb1001.eqiad.wmnet rdb1002.eqiad.wmnet",
-                        "Labs NFS cluster pmtpa"         => 
"labstore3.pmtpa.wmnet labstore4.pmtpa.wmnet",
-                        "Text caches eqiad"              => 
"cp1052.eqiad.wmnet cp1053.eqiad.wmnet",
-                        'Misc Web caches eqiad'          => 
'cp1043.eqiad.wmnet cp1044.eqiad.wmnet',
-                        "LVS loadbalancers ulsfo"        => 
"lvs4001.ulsfo.wmnet lvs4003.ulsfo.wmnet",
-                        "Bits caches ulsfo"              => 
'cp4001.ulsfo.wmnet cp4003.ulsfo.wmnet',
-                        "Upload caches ulsfo"            => 
'cp4005.ulsfo.wmnet cp4013.ulsfo.wmnet',
-                        "Mobile caches ulsfo"            => 
'cp4011.ulsfo.wmnet cp4019.ulsfo.wmnet',
-                        "Text caches ulsfo"              => 
'cp4008.ulsfo.wmnet cp4016.ulsfo.wmnet',
-                        "Elasticsearch eqiad"            => 
'elastic1001.eqiad.wmnet elastic1007.eqiad.wmnet elastic1013.eqiad.wmnet',
-                        "Logstash eqiad"                 => 
'logstash1001.eqiad.wmnet logstash1003.eqiad.wmnet',
-
-                    }
-                    $rra_sizes = '"RRA:AVERAGE:0.5:1:360" 
"RRA:AVERAGE:0.5:24:245" "RRA:AVERAGE:0.5:168:241" "RRA:AVERAGE:0.5:672:241" 
"RRA:AVERAGE:0.5:5760:371"'
-                    $rrd_rootdir = "/mnt/ganglia_tmp/rrds.pmtpa"
-                }
-            }
+        file { "/usr/local/sbin/generate-ganglia-conf.py":
+            source => "puppet:///files/ganglia/generate-ganglia-conf.py",
+            mode => 0755,
+            ensure => present;
         }
 
-        file { "/etc/ganglia/${gmetad_conf}":
+        cron { generate-ganglia-conf:
+            command => "/usr/local/sbin/generate-ganglia-conf.py",
             require => Package[gmetad],
-            content => template("ganglia/gmetad.conf.erb"),
-            mode => 0444,
-            ensure  => present
-        }
-    }
-
-    # == Class ganglia::collector
-    # This class inherits ganglia::collector::config
-    # to install gmetad.conf, and then ensures that
-    # gmetad is running.
-    class collector inherits ganglia::collector::config {
-        system::role { "ganglia::collector": description => "Ganglia gmetad 
aggregator" }
-
-        # for labs, gmond.conf and gmetad.conf are generated every 4 hours by 
a cron job
-        if $::realm == "labs" {
-            file { "/etc/ganglia/gmond.conf.labsstub":
-                source => "puppet:///files/ganglia/gmond.conf.labsstub",
-                mode => 0444,
-                ensure => present;
-            }
-
-            file { "/usr/local/sbin/generate-ganglia-conf.py":
-                source => "puppet:///files/ganglia/generate-ganglia-conf.py",
-                mode => 0755,
-                ensure => present;
-            }
-
-            cron { generate-ganglia-conf:
-                command => "/usr/local/sbin/generate-ganglia-conf.py",
-                require => Package[gmetad],
-                user => root,
-                hour => [0, 4, 8, 12, 16, 20],
-                minute => 30,
-                ensure => present,
-                environment => 'PATH=$PATH:/sbin',
-            }
-
-            # log gmetad messages to /var/log/ganglia.log
-            file { "/etc/rsyslog.d/30-ganglia.conf":
-                source => "puppet:///files/ganglia/rsyslog.d/30-ganglia.conf",
-                mode => 0444,
-                ensure => present,
-                notify => Service["rsyslog"];
-            }
-
-            file { "/etc/logrotate.d/ganglia":
-                source => "puppet:///files/logrotate/ganglia",
-                mode => 0444,
-                ensure => present;
-            }
-        }
-
-        service { "gmetad":
-            require => File["/etc/ganglia/${gmetad_conf}"],
-            subscribe => File["/etc/ganglia/${gmetad_conf}"],
-            hasstatus => false,
-            ensure => running;
-        }
-    }
-
-    # Class: ganglia::aggregator
-    # for the machine class which listens on multicast and
-    # collects all the ganglia information from other sources
-    class aggregator {
-        # This overrides the default ganglia-monitor script
-        # with one that starts up multiple instances of gmond
-        file { "/etc/init.d/ganglia-monitor-aggrs":
-            source => "puppet:///files/ganglia/ganglia-monitor",
-            mode   => 0555,
+            user => root,
+            hour => [0, 4, 8, 12, 16, 20],
+            minute => 30,
             ensure => present,
-            require => Package["ganglia-monitor"];
+            environment => 'PATH=$PATH:/sbin',
         }
-        service { "ganglia-monitor-aggrs":
-            require => File["/etc/init.d/ganglia-monitor-aggrs"],
-            enable => true,
-            ensure => running;
+
+        # log gmetad messages to /var/log/ganglia.log
+        file { "/etc/rsyslog.d/30-ganglia.conf":
+            source => "puppet:///files/ganglia/rsyslog.d/30-ganglia.conf",
+            mode => 0444,
+            ensure => present,
+            notify => Service["rsyslog"];
         }
+
+        file { "/etc/logrotate.d/ganglia":
+            source => "puppet:///files/logrotate/ganglia",
+            mode => 0444,
+            ensure => present;
+        }
+    }
+
+    service { "gmetad":
+        require => File["/etc/ganglia/${gmetad_conf}"],
+        subscribe => File["/etc/ganglia/${gmetad_conf}"],
+        hasstatus => false,
+        ensure => running;
+    }
+}
+
+# == Class: ganglia::aggregator
+# for the machine class which listens on multicast and
+# collects all the ganglia information from other sources
+class ganglia::aggregator {
+    # This overrides the default ganglia-monitor script
+    # with one that starts up multiple instances of gmond
+    file { "/etc/init.d/ganglia-monitor-aggrs":
+        source => "puppet:///files/ganglia/ganglia-monitor",
+        mode   => 0555,
+        ensure => present,
+        require => Package["ganglia-monitor"];
+    }
+    service { "ganglia-monitor-aggrs":
+        require => File["/etc/init.d/ganglia-monitor-aggrs"],
+        enable => true,
+        ensure => running;
     }
 }
 

-- 
To view, visit https://gerrit.wikimedia.org/r/123195
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I81b73f922ac8a8f47cf9e5c124b7e4f3daa08e7b
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Hashar <has...@free.fr>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to