Adamw has uploaded a new change for review.

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


Change subject: Merge "Adding owner and group parameters to git::clone"
......................................................................

Merge "Adding owner and group parameters to git::clone"

Change-Id: If1f9f9ee6be4c9d7051cd8cb628fceceb98d96da
---
M .gitignore
M README
M Vagrantfile
M puppet/files/.gitignore
M puppet/manifests/packages.pp
M puppet/manifests/roles.pp
A puppet/modules/activemq/lib/puppet/type/tarball.rb
A puppet/modules/activemq/manifests/init.pp
A puppet/modules/activemq/templates/activemq.xml.erb
A puppet/modules/activemq/templates/service-activemq.erb
A puppet/modules/crm/manifests/apache.pp
A puppet/modules/crm/manifests/civicrm.pp
A puppet/modules/crm/manifests/drupal.pp
A puppet/modules/crm/manifests/init.pp
A puppet/modules/crm/templates/civicrm-install.php.erb
A puppet/modules/crm/templates/crm-apache-site.erb
A puppet/modules/crm/templates/settings-local.php.erb
A puppet/modules/phpmailer/manifests/init.pp
A puppet/modules/postfix/manifests/init.pp
A puppet/modules/postfix/templates/main.cf.erb
A puppet/modules/postfix/templates/virtual.erb
A puppet/modules/twig/manifests/init.pp
M puppet/templates/fr-config.php.erb
23 files changed, 544 insertions(+), 23 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/vagrant 
refs/changes/61/108861/1

diff --git a/.gitignore b/.gitignore
index 98a04d4..98f6efd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,14 +1,16 @@
 /.vagrant
 /.rbenv-version
+/crm
 /no-update
 /Vagrantfile-extra.rb
 /Roles.yaml
 /Roles
-/LocalSettings.php
 /mediawiki/
+/phpmailer
 /settings.d
 !/settings.d/README
 !/settings.d/puppet-managed/README
+/twig
 /puppet/manifests/manifests.d
 !/puppet/manifests/manifests.d/README
 !/puppet/manifests/manifests.d/dummy.pp
diff --git a/README b/README
index dcef127..c331e77 100644
--- a/README
+++ b/README
@@ -38,8 +38,14 @@
 Canonical, retrieve some additional packages, and install and configure each of
 them in turn.
 
-If it all worked, you should be able to browse to http://127.0.0.1:8080/ and
-see the main page of your MediaWiki instance.
+Now, edit your host system's /etc/hosts file, and add this line:
+
+  10.11.12.13 wiki.dev
+
+If it all worked, you should be able to browse to http://wiki.dev/ and
+see the main page of your MediaWiki instance.  You can also browse to the
+forwarded port, http://127.0.0.1:8080/ (but, note that this URL will not
+work correctly if you are hosting more than one virtualhost on your guest OS).
 
 
 ## Use
diff --git a/Vagrantfile b/Vagrantfile
index c451c97..d0d7ebe 100644
--- a/Vagrantfile
+++ b/Vagrantfile
@@ -70,7 +70,11 @@
 
     config.vm.provider :virtualbox do |vb|
         # See http://www.virtualbox.org/manual/ch08.html for additional 
options.
-        vb.customize ['modifyvm', :id, '--memory', '768']
+        if roles_enabled.include?('fundraising')
+            vb.customize ['modifyvm', :id, '--memory', '2048']
+        else
+            vb.customize ['modifyvm', :id, '--memory', '768']
+        end
         vb.customize ['modifyvm', :id, '--ostype', 'Ubuntu_64']
         vb.customize ['modifyvm', :id, '--ioapic', 'on']  # Bug 51473
 
diff --git a/puppet/files/.gitignore b/puppet/files/.gitignore
index d3c2f59..002621b 100644
--- a/puppet/files/.gitignore
+++ b/puppet/files/.gitignore
@@ -1 +1,2 @@
 # .gitignore
+civicrm-install.php
diff --git a/puppet/manifests/packages.pp b/puppet/manifests/packages.pp
index 9e5e39b..5821d39 100644
--- a/puppet/manifests/packages.pp
+++ b/puppet/manifests/packages.pp
@@ -12,6 +12,10 @@
 #   same name. If you need anything fancy, create a module instead.
 #
 
+class packages::drush {
+    package { 'drush': }
+}
+
 class packages::imagemagick {
     package { 'imagemagick': }
 }
diff --git a/puppet/manifests/roles.pp b/puppet/manifests/roles.pp
index fe38b91..a380014 100644
--- a/puppet/manifests/roles.pp
+++ b/puppet/manifests/roles.pp
@@ -82,7 +82,11 @@
 # and sets up the ContributionTracking, FundraisingEmailUnsubscribe, and
 # DonationInterface extensions.
 class role::fundraising {
-    include role::mediawiki
+    include role::centralnotice
+    include role::payments
+    include role::message_queue
+    include role::crm
+
     include packages::rsyslog
 
     $rsyslog_max_message_size = '64k'
@@ -94,32 +98,62 @@
         hasrestart => true,
     }
 
-    file { '/etc/rsyslog.d/60-payments.conf':
-        content => template('fr-payments-rsyslog.conf.erb'),
-        require => Package['rsyslog'],
-        notify  => Service['rsyslog'],
+    # TODO: import from frack
+    #file { '/etc/rsyslog.d/60-payments.conf':
+    #    content => template('fr-payments-rsyslog.conf.erb'),
+    #    require => Package['rsyslog'],
+    #    notify  => Service['rsyslog'],
+    #}
+}
+
+class role::crm {
+    $dir = "/vagrant/crm"
+    $crm_site_name = 'crm.dev'
+
+    class { '::crm':
+        dir => $dir,
+        site_name => $crm_site_name,
+    }
+}
+
+class role::centralnotice {
+    include role::mediawiki
+
+    @mediawiki::extension { [
+        'CentralNotice',
+        'Translate',
+    ]:
+        needs_update => true,
+    }
+}
+
+class role::payments
+inherits role::mediawiki {
+    include ::twig
+
+    Class['::mediawiki'] {
+        branch => 'fundraising/1.22',
     }
 
-    exec { 'checkout fundraising branch':
-        command => 'git checkout --track origin/fundraising/1.22',
-        unless  => 'git branch --list | grep -q fundraising/1.22',
-        cwd     => $mediawiki::dir,
-        require => Exec['mediawiki setup'],
-    }
+    @mediawiki::extension { 'ParserFunctions': }
 
-    mediawiki::extension { [ 'ContributionTracking', 'ParserFunctions' ]: }
+    @mediawiki::extension { [
+        'ContributionTracking',
+    ]:
+        needs_update => true,
+    }
 
     mediawiki::extension { 'FundraisingEmailUnsubscribe':
         entrypoint => 'FundraiserUnsubscribe.php',
+        settings => "\$wgTwigPath = '${twig::dir}/current/lib/Twig';",
+        require => Class['::twig'],
     }
 
-    mediawiki::extension { 'DonationInterface':
-        entrypoint   => 'donationinterface.php',
+    @mediawiki::extension { 'DonationInterface':
         settings     => template('fr-config.php.erb'),
         needs_update => true,
         require      => [
-            File['/etc/rsyslog.d/60-payments.conf'],
-            Exec['checkout fundraising branch'],
+            # path BROKEN File['/etc/rsyslog.d/60-payments.conf'],
             Mediawiki::Extension[
                 'ContributionTracking',
                 'FundraisingEmailUnsubscribe',
@@ -129,6 +163,9 @@
     }
 }
 
+class role::message_queue {
+    class { '::activemq': }
+}
 
 # == Class: role::eventlogging
 # This role sets up the EventLogging extension for MediaWiki such that
diff --git a/puppet/modules/activemq/lib/puppet/type/tarball.rb 
b/puppet/modules/activemq/lib/puppet/type/tarball.rb
new file mode 100644
index 0000000..a819e02
--- /dev/null
+++ b/puppet/modules/activemq/lib/puppet/type/tarball.rb
@@ -0,0 +1,74 @@
+require 'net/http'
+#require 'open-uri' # ruby 1.9
+require 'uri'
+
+Puppet::Type.newtype(:tarball) do
+    @doc = "Fetch and extract tarballed packages"
+
+    ensurable
+
+    newparam(:source) do
+        desc "URL where the tarball will be found"
+    end
+
+    newparam(:path) do
+        desc "Directory in which the tarball shall be extracted"
+    end
+
+    newparam(:creates) do
+        desc "Will create this path when untarred"
+
+        isnamevar
+    end
+
+    newparam(:storage) do
+        desc "Directory in which to store the original tarball"
+    end
+
+    def create
+        if not File.exists? filename
+            fetch
+        end
+        extract
+    end
+
+    def creates_path
+        self[:creates] || filename
+    end
+
+    def destroy
+        File.unlink creates_path
+    end
+
+    def exists?
+        # TODO verify signature
+        File.exists? creates_path
+    end
+
+    def extract
+        notice "Unpacking tarball #{filename} into #{self[:path]}"
+        system("tar", "-C", self[:path], "-xzf", filename)
+    end
+
+    def fetch
+        # TODO safe noclobber
+
+        # ruby 1.9.x :-(
+        #FileUtils.copy_stream(
+        #    open(self[:source]),
+        #    File.open(filename, "w+")
+        #)
+
+        uri = URI.parse self[:source]
+        notice "Retrieving tarball from #{uri}"
+        Net::HTTP.get_response uri do |input|
+            File.open(filename, "wb+") do |output|
+                input.read_body(output)
+            end
+        end
+    end
+
+    def filename
+        File.join(self[:storage], self[:source].split(/\//).last)
+    end
+end
diff --git a/puppet/modules/activemq/manifests/init.pp 
b/puppet/modules/activemq/manifests/init.pp
new file mode 100644
index 0000000..6e33f15
--- /dev/null
+++ b/puppet/modules/activemq/manifests/init.pp
@@ -0,0 +1,66 @@
+# activemq.pp
+
+class activemq(
+    $version = '5.9.0',
+) {
+    $pkgname = "apache-activemq-${version}"
+    $mirror = 
"http://mirrors.ibiblio.org/apache/activemq/apache-activemq/${version}/${pkgname}-bin.tar.gz";
+
+    $destdir = "/usr/local"
+    $pkgdir = "${destdir}/${pkgname}"
+
+    tarball { $pkgname:
+        ensure => present,
+        source => $mirror,
+        storage => '/vagrant/apt-cache',
+        path => $destdir,
+        creates => $pkgdir,
+    }
+
+    $config = '/etc/activemq.xml'
+
+    file { $config:
+        owner => root,
+        group => root,
+        content => template('activemq/activemq.xml.erb'),
+    }
+
+    file { '/etc/init.d/activemq':
+        owner => root,
+        group => root,
+        mode => 0555,
+        content => template('activemq/service-activemq.erb'),
+    }
+
+    package { 'default-jre-headless':
+        ensure => present,
+    }
+
+    user { 'activemq':
+        ensure => present,
+        managehome => true,
+        home => '/home/activemq',
+    }
+
+    file { ["${pkgdir}/data", "${pkgdir}/tmp"]:
+        ensure => directory,
+        recurse => true,
+        owner => activemq,
+        group => activemq,
+        mode => 0770,
+    }
+
+    service { 'activemq':
+        require => [
+            Package['default-jre-headless'],
+            Tarball[$pkgname],
+            File[$config],
+            File['/etc/init.d/activemq'],
+            File["${pkgdir}/data"],
+            User['activemq'],
+        ],
+        ensure => running,
+        hasstatus => false,
+        enable => true,
+    }
+}
diff --git a/puppet/modules/activemq/templates/activemq.xml.erb 
b/puppet/modules/activemq/templates/activemq.xml.erb
new file mode 100644
index 0000000..0333dac
--- /dev/null
+++ b/puppet/modules/activemq/templates/activemq.xml.erb
@@ -0,0 +1,63 @@
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+   
+    http://www.apache.org/licenses/LICENSE-2.0
+   
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<beans
+  xmlns="http://www.springframework.org/schema/beans";
+  xmlns:amq="http://activemq.apache.org/schema/core";
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+  xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+  http://activemq.apache.org/schema/core 
http://activemq.apache.org/schema/core/activemq-core.xsd";>
+
+    <bean 
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
+        <property name="locations">
+            <value>file:${activemq.base}/conf/credentials.properties</value>
+        </property>
+    </bean>
+
+    <!-- Allows us to use system properties as variables in this configuration 
file -->
+    <bean 
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
+    
+    <broker xmlns="http://activemq.apache.org/schema/core";
+            brokerName="localhost"
+            dataDirectory="${activemq.base}/data">
+
+        <!-- 
+            Configure message persistence for the broker. The default 
persistence
+            mechanism is the KahaDB store (identified by the kahaDB tag). 
+            For more information, see: 
+            
+            http://activemq.apache.org/persistence.html 
+        -->
+        <persistenceAdapter>
+            <kahaDB directory="${activemq.base}/data/kahadb"/>
+        </persistenceAdapter>
+
+        <!-- 
+            The transport connectors expose ActiveMQ over a given protocol to
+            clients and other brokers. For more information, see: 
+            
+            http://activemq.apache.org/configuring-transports.html 
+        -->
+        <transportConnectors>
+            <transportConnector name="stomp" uri="stomp://127.0.0.1:61613"/>
+        </transportConnectors>
+
+    </broker>
+
+    <import resource="jetty.xml"/>
+
+</beans>
+
diff --git a/puppet/modules/activemq/templates/service-activemq.erb 
b/puppet/modules/activemq/templates/service-activemq.erb
new file mode 100755
index 0000000..61f1783
--- /dev/null
+++ b/puppet/modules/activemq/templates/service-activemq.erb
@@ -0,0 +1,27 @@
+#! /bin/sh
+
+CMD="/usr/local/<%= @pkgname %>/bin/activemq-admin"
+
+case "$1" in
+       start)
+               echo -n "Starting ActiveMQ "
+               /bin/su - activemq -c "nohup $CMD $1 >/dev/null 2>&1 &"
+               echo " . . . done"
+               ;;
+       stop)
+               echo -n "Stopping ActiveMQ"
+               /bin/su - activemq -c "$CMD $1 >/dev/null 2>&1 "
+               echo " . . . done"
+               ;;
+       restart)
+               $0 stop
+               $0 start
+               ;;
+       status)
+               echo not implemented
+               ;;
+       *)
+               echo "Usage: $0 {start|stop|restart}"
+               exit 1
+               ;;
+esac
diff --git a/puppet/modules/crm/manifests/apache.pp 
b/puppet/modules/crm/manifests/apache.pp
new file mode 100644
index 0000000..87e46bb
--- /dev/null
+++ b/puppet/modules/crm/manifests/apache.pp
@@ -0,0 +1,10 @@
+class crm::apache {
+    include ::crm
+    include ::apache
+
+    @apache::site { $crm::site_name:
+        ensure  => present,
+        content => template('crm/crm-apache-site.erb'),
+        require => Apache::Mod['rewrite'],
+    }
+}
diff --git a/puppet/modules/crm/manifests/civicrm.pp 
b/puppet/modules/crm/manifests/civicrm.pp
new file mode 100644
index 0000000..782ca7a
--- /dev/null
+++ b/puppet/modules/crm/manifests/civicrm.pp
@@ -0,0 +1,21 @@
+class crm::civicrm(
+) {
+    @mysql::db { 'civicrm':
+        dbname => $crm::civicrm_db,
+    }
+
+    exec { 'civicrm setup':
+        command => "php /vagrant/puppet/files/civicrm-install.php",
+        unless => "mysql -u ${mediawiki::db_user} -p${mediawiki::db_pass} 
${crm::civicrm_db} -e 'select count(*) from civicrm_domain' > /dev/null",
+        require => [
+            File['/vagrant/puppet/files/civicrm-install.php'],
+            Mysql::Db['civicrm'],
+            Package['drush'],
+            Exec['drupal db install'],
+        ],
+    }
+
+    file { '/vagrant/puppet/files/civicrm-install.php':
+        content => template('crm/civicrm-install.php.erb'),
+    }
+}
diff --git a/puppet/modules/crm/manifests/drupal.pp 
b/puppet/modules/crm/manifests/drupal.pp
new file mode 100644
index 0000000..7540110
--- /dev/null
+++ b/puppet/modules/crm/manifests/drupal.pp
@@ -0,0 +1,69 @@
+define crm::drupal(
+    $modules,
+    $settings = {},
+) {
+    include packages::drush
+
+    $files_dir = '/srv/crm-files'
+
+    file { $files_dir:
+        ensure => directory,
+        group => 'www-data',
+        mode => '2775',
+        recurse => true,
+        require => Exec['civicrm setup'],
+    }
+
+    file { "${crm::dir}/sites/default/files":
+        ensure => link,
+        target => $files_dir,
+        force => true,
+    }
+
+    # ugh.
+    exec { 'kill files':
+        command => "rm -rf '${crm::dir}/sites/default/files'",
+    }
+
+    @mysql::db { 'drupal':
+        dbname => $crm::drupal_db,
+    }
+
+    $drush = "drush -y --root=${crm::dir}/drupal"
+
+    exec { 'drupal db install':
+        command => "${drush} site-install standard 
--db-url='mysql://${mediawiki::db_user}:${mediawiki::db_pass}@localhost/${crm::drupal_db}'
 --site-name='${site_name}'",
+        unless => "mysql -u '${mediawiki::db_user}' -p'${mediawiki::db_pass}' 
'${crm::drupal_db}' -e 'select count(*) from system' > /dev/null",
+        require => [
+            Git::Clone['wikimedia/fundraising/crm'],
+            Mysql::Db['drupal'],
+            Package['drush'],
+            Exec['kill files'],
+        ],
+    }
+
+    $settings_path = "${crm::dir}/sites/default/settings.php"
+    $local_settings_path = "${crm::dir}/sites/default/settings.local.php"
+
+    file { $local_settings_path:
+        content => template('crm/settings-local.php.erb'),
+    }
+
+    $settings_hook = "require_once 'settings.local.php';"
+    exec { 'local drupal settings':
+        command => "chmod u+w ${settings_path} && echo \"${settings_hook}\" >> 
${settings_path} ; chmod 0440 ${settings_path}",
+        unless => "grep -q \"^${settings_hook}$\" ${settings_path}",
+        require => [
+            File[$local_settings_path],
+            Exec['drupal db install'],
+        ],
+    }
+
+    exec { 'enable drupal modules':
+        command => "${drush} pm-enable ${modules}",
+        require => [
+            Exec['drupal db install'],
+            Exec['civicrm setup'],
+        ],
+    }
+}
diff --git a/puppet/modules/crm/manifests/init.pp 
b/puppet/modules/crm/manifests/init.pp
new file mode 100644
index 0000000..f487788
--- /dev/null
+++ b/puppet/modules/crm/manifests/init.pp
@@ -0,0 +1,30 @@
+class crm(
+    $dir,
+    $site_name,
+    $drupal_db = 'drupal',
+    $civicrm_db = 'civicrm',
+) {
+    include ::mediawiki
+    include ::php
+    include ::phpmailer
+    include ::postfix
+    include ::twig
+    include crm::apache
+    include crm::civicrm
+
+    @git::clone { 'wikimedia/fundraising/crm':
+        directory => $dir,
+    }
+
+    # required by module ganglia_reporter
+    package { 'ganglia-monitor': }
+
+    crm::drupal { $dir:
+        modules => "civicrm contribution_audit contribution_tracking devel 
donor_review exchange_rates ganglia_reporter globalcollect_audit large_donation 
log_audit offline2civicrm oneoffs paypal_audit queue2civicrm recurring 
recurring_globalcollect syslog thank_you wmf_civicrm wmf_common 
wmf_communication wmf_contribution_search wmf_eoy_receipt wmf_logging 
wmf_refund_qc wmf_reports wmf_unsubscribe wmf_unsubscribe_qc   devel 
queue2civicrm_tests simpletest twigext_l10n_tests wmf_communication_tests 
wmf_test_settings",
+        settings => {
+            'wmf_common_phpmailer_location' => $phpmailer::dir,
+            'wmf_common_twig_location' => "${twig::dir}/current",
+            'wmf_common_di_location' => 
"${mediawiki::dir}/extensions/DonationInterface",
+        }
+    }
+}
diff --git a/puppet/modules/crm/templates/civicrm-install.php.erb 
b/puppet/modules/crm/templates/civicrm-install.php.erb
new file mode 100644
index 0000000..37c2006
--- /dev/null
+++ b/puppet/modules/crm/templates/civicrm-install.php.erb
@@ -0,0 +1,33 @@
+<?php
+
+$config = array(
+    'site_dir' => 'default',
+    'base_url' => "http://<%= @site_name %>/",
+    'mysql' => array(
+        'username' => "<%= scope.lookupvar('mediawiki::db_user') %>",
+        'password' => "<%= scope.lookupvar('mediawiki::db_pass') %>",
+        'server' => 'localhost',
+        'database' => "<%= scope.lookupvar('crm::civicrm_db') %>",
+    ),
+    'drupal' => array(
+        'username' => "<%= scope.lookupvar('mediawiki::db_user') %>",
+        'password' => "<%= scope.lookupvar('mediawiki::db_pass') %>",
+        'server' => 'localhost',
+        'database' => "<%= scope.lookupvar('crm::drupal_db') %>",
+    ),
+);
+
+global $cmsPath, $crmPath, $installType;
+$cmsPath = '<%= @dir %>/drupal';
+$crmPath = '<%= @dir %>/civicrm';
+$installType = 'drupal';
+
+define( 'VERSION', '7.0' );
+define( 'DB_USER', $config['drupal']['username'] );
+define( 'DB_PASSWORD', $config['drupal']['password'] );
+define( 'DB_HOST', $config['drupal']['server'] );
+define( 'DB_NAME', $config['drupal']['database'] );
+
+require_once '<%= @dir %>/civicrm/install/civicrm.php';
+
+civicrm_main( $config );
diff --git a/puppet/modules/crm/templates/crm-apache-site.erb 
b/puppet/modules/crm/templates/crm-apache-site.erb
new file mode 100644
index 0000000..87dfbb7
--- /dev/null
+++ b/puppet/modules/crm/templates/crm-apache-site.erb
@@ -0,0 +1,6 @@
+DocumentRoot "<%= scope.lookupvar('crm::dir') %>/drupal"
+
+ServerName <%= scope.lookupvar('crm::site_name') %>
+
+<Directory <%= scope.lookupvar('crm::dir') %>>
+</Directory>
diff --git a/puppet/modules/crm/templates/settings-local.php.erb 
b/puppet/modules/crm/templates/settings-local.php.erb
new file mode 100644
index 0000000..bc1e688
--- /dev/null
+++ b/puppet/modules/crm/templates/settings-local.php.erb
@@ -0,0 +1,11 @@
+<?php
+# This file is managed by Puppet.
+
+define( 'WMF_UNSUB_SALT', 'vagrant' );
+
+$databases['donations']['default'] = $databases['default']['default'];
+
+# default settings for drupal variable_get
+<% @settings.each do |k, v| %>
+    $conf['<%= k %>'] = '<%= v %>';
+<% end %>
diff --git a/puppet/modules/phpmailer/manifests/init.pp 
b/puppet/modules/phpmailer/manifests/init.pp
new file mode 100644
index 0000000..efd8ac7
--- /dev/null
+++ b/puppet/modules/phpmailer/manifests/init.pp
@@ -0,0 +1,7 @@
+class phpmailer(
+    $dir = "/vagrant/phpmailer",
+) {
+    @git::clone { 'wikimedia/fundraising/phpmailer':
+        directory => $dir,
+    }
+}
diff --git a/puppet/modules/postfix/manifests/init.pp 
b/puppet/modules/postfix/manifests/init.pp
new file mode 100644
index 0000000..781dcbd
--- /dev/null
+++ b/puppet/modules/postfix/manifests/init.pp
@@ -0,0 +1,35 @@
+class postfix {
+    package { 'postfix':
+        ensure => latest
+    }
+
+    file { '/etc/postfix/main.cf':
+        owner => root,
+        group => root,
+        mode => 0644,
+        content => template('postfix/main.cf.erb');
+    }
+
+    #TODO: postmap
+    file { '/etc/postfix/virtual':
+        owner => root,
+        group => root,
+        mode => 0644,
+        content => template('postfix/virtual.erb');
+    }
+
+    exec { 'postmap virtual':
+        command => "postmap /etc/postfix/virtual",
+        subscribe => File['/etc/postfix/virtual'],
+    }
+
+    service { 'postfix':
+        require => Package['postfix'],
+        subscribe => [
+            File['/etc/postfix/main.cf'],
+            Exec['postmap virtual'],
+        ],
+        ensure => running,
+        enable => true;
+    }
+}
diff --git a/puppet/modules/postfix/templates/main.cf.erb 
b/puppet/modules/postfix/templates/main.cf.erb
new file mode 100644
index 0000000..9ebd232
--- /dev/null
+++ b/puppet/modules/postfix/templates/main.cf.erb
@@ -0,0 +1 @@
+virtual_alias_maps = regexp:/etc/postfix/virtual
diff --git a/puppet/modules/postfix/templates/virtual.erb 
b/puppet/modules/postfix/templates/virtual.erb
new file mode 100644
index 0000000..bf6eef0
--- /dev/null
+++ b/puppet/modules/postfix/templates/virtual.erb
@@ -0,0 +1 @@
+/.+/ vagrant
diff --git a/puppet/modules/twig/manifests/init.pp 
b/puppet/modules/twig/manifests/init.pp
new file mode 100644
index 0000000..94b8536
--- /dev/null
+++ b/puppet/modules/twig/manifests/init.pp
@@ -0,0 +1,7 @@
+class twig(
+    $dir = "/vagrant/twig",
+) {
+    @git::clone { 'wikimedia/fundraising/twig':
+        directory => $dir,
+    }
+}
diff --git a/puppet/templates/fr-config.php.erb 
b/puppet/templates/fr-config.php.erb
index bfbfbcc..c708339 100644
--- a/puppet/templates/fr-config.php.erb
+++ b/puppet/templates/fr-config.php.erb
@@ -1,11 +1,17 @@
 $wgDonationInterfaceTestMode = true;
+$wgDonationInterfaceEnableAdyen = true;
+$wgDonationInterfaceEnableAmazon = true;
 $wgDonationInterfaceEnableGlobalCollect = true;
 $wgDonationInterfaceEnablePaypal = true;
 
+# TODO: the following cruft is brought to u by a forward reference snafu.
+# Better if DonationInterfaceFormSettings would use relative paths?
 $DI = "$IP/extensions/DonationInterface";
-$wgGlobalCollectGatewayHtmlFormDir = "$DI/globalcollect_gateway/forms";
-$wgPaypalGatewayHtmlFormDir = "$DI/paypal_gateway/forms";
-$wgPayflowProGatewayHtmlFormDir = "$DI/payflowpro_gateway/forms";
+$wgAdyenGatewayHtmlFormDir = "$DI/adyen_gateway/forms/html";
+$wgAmazonGatewayHtmlFormDir = "$DI/amazon_gateway/forms/html";
+$wgGlobalCollectGatewayHtmlFormDir = "$DI/globalcollect_gateway/forms/html";
+$wgPaypalGatewayHtmlFormDir = "$DI/paypal_gateway/forms/html";
+$wgPayflowProGatewayHtmlFormDir = "$DI/payflowpro_gateway/forms/html";
 
 $wgGlobalCollectGatewayAccountInfo['test'] = array(
     'MerchantID' => 'test'

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: If1f9f9ee6be4c9d7051cd8cb628fceceb98d96da
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/vagrant
Gerrit-Branch: master
Gerrit-Owner: Adamw <[email protected]>
Gerrit-Reviewer: Ori.livneh <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to