Merge branch 'develop' of github.com:Dolibarr/dolibarr into develop
This commit is contained in:
commit
108cf11c8b
5
.gitignore
vendored
5
.gitignore
vendored
@ -17,7 +17,4 @@ doxygen_warnings.log
|
||||
*.iml
|
||||
Thumbs.db
|
||||
# Vagrant generated files
|
||||
.vagrant
|
||||
/index.html
|
||||
/phpmyadmin
|
||||
/xhprof
|
||||
.vagrant
|
||||
16
.travis.yml
16
.travis.yml
@ -87,20 +87,22 @@ before_script:
|
||||
|
||||
script:
|
||||
- cd htdocs/install
|
||||
- date
|
||||
- php upgrade.php 3.4.0 3.5.0 > upgrade.log
|
||||
- php upgrade2.php 3.4.0 3.5.0 > upgrade2.log
|
||||
- php upgrade.php 3.5.0 3.6.0 >> upgrade.log
|
||||
- php upgrade2.php 3.5.0 3.6.0 >> upgrade2.log
|
||||
- cd ../..
|
||||
- php upgrade.php 3.6.0 3.7.0 >> upgrade.log
|
||||
- php upgrade2.php 3.6.0 3.7.0 >> upgrade2.log
|
||||
# - cat upgrade.log
|
||||
# - cat upgrade2.log
|
||||
# - phpunit -d memory_limit=-1 --configuration test/phpunit/phpunittest.xml --coverage-text test/phpunit/AllTests.php
|
||||
# - phpunit -d memory_limit=-1 --configuration test/phpunit/phpunittest.xml --coverage-text test/phpunit/BuildDocTest.php
|
||||
# - phpunit -d memory_limit=-1 --configuration test/phpunit/phpunittest.xml test/phpunit/WebservicesOtherTest.php
|
||||
# - phpcs --warning-severity=0 -s --report-checkstyle --report-summary --standard=dev/codesniffer/ruleset.xml --tab-width=4 --ignore=/build/html/,/documents/,/includes/,/test/report/ htdocs/core/class/dolgraph.class.php
|
||||
- phpcs --warning-severity=0 -s --report-checkstyle --report-summary --standard=dev/codesniffer/ruleset.xml --tab-width=4 --ignore=/build/html/,/documents/,/includes/,/test/report/ .
|
||||
# - phpcs --warning-severity=0 -s --report-summary --standard=dev/codesniffer/ruleset.xml --tab-width=4 --ignore=/build/html/,/documents/,/includes/,/test/report/ .
|
||||
- cd ../..
|
||||
- date
|
||||
- phpunit -d memory_limit=-1 --configuration test/phpunit/phpunittest.xml test/phpunit/AllTests.php
|
||||
- date
|
||||
# - phpcs -p --warning-severity=0 -s --report-summary --standard=dev/codesniffer/ruleset.xml --tab-width=4 --ignore=/build/html/,/dev/vagrant/,/documents/,/includes/,/test/report/ htdocs/core/class/dolgraph.class.php 2>&1
|
||||
- phpcs -p --warning-severity=0 -s --report-checkstyle --report-summary --standard=dev/codesniffer/ruleset.xml --tab-width=4 --ignore=/build/html/,/dev/vagrant/,/documents/,/includes/,/test/report/ . 2>&1
|
||||
- date
|
||||
|
||||
after_script:
|
||||
# - echo Output dolibarr log file; cat $(pwd)/htdocs/documents/dolibarr.log
|
||||
|
||||
58
ChangeLog
58
ChangeLog
@ -5,18 +5,63 @@ English Dolibarr ChangeLog
|
||||
|
||||
***** ChangeLog for 3.7 compared to 3.6.* *****
|
||||
For users:
|
||||
- New: Enable feature developed for 3.6 we forgot to enabled: Adding prefix
|
||||
on uploaded file names.
|
||||
- New: No more dependency between contract and service module.
|
||||
- New: [ task #867 ] Remove ESAEB external module code from core.
|
||||
- New: Can create proposal from an intervention.
|
||||
- New: Can filter events on a group of users.
|
||||
- New: Add thirdparty to filter on events.
|
||||
- New: Can filter events of a thirdparty.
|
||||
- New: Split Agenda view (month, week, day) into different tabs.
|
||||
- New: Form to add a photo is immediatly available on photo page if
|
||||
permissions are ok (save one click per photo to add).
|
||||
- New: Add option PRODUCT_MAX_VISIBLE_PHOTO to limit number of photos
|
||||
shown on main product card.
|
||||
- New: Add event FICHINTER_CLASSIFY_BILLED into list of possible events to
|
||||
create an automatic event into agenda.
|
||||
- New: Add new type of event (when type of events are used, not by default)
|
||||
- New: Add country into table of thirdparties type. This will allow to provide
|
||||
a list of thirdparty types specific to a country (like argentina that
|
||||
need type A or B).
|
||||
- New: Can force a specific bank account onto an invoice/order.
|
||||
- New: First changes for accessibility.
|
||||
- New: Home page of project area shows list of draft project (like other main page).
|
||||
- New: Can search on project ref or string from project main page (like other main page).
|
||||
- Fix: [ bug #1487 ] PAYMENT_DELETE trigger does not intercept trigger action
|
||||
- Fix: [ bug #1470, #1472, #1473] User trigger problem
|
||||
- Fix: [ bug #1489, #1491 ] Intervention trigger problem
|
||||
- Fix: [ bug #1492, #1493 ] Member trigger problem
|
||||
- Fix: [ bug #1474, #1475 ] Contract trigger problem
|
||||
- Fix: [ bug #1496 ] ACTION_DELETE trigger does not show trigger error
|
||||
- Fix: [ bug #1494 ] CATEGORY_CREATE and CATEGORY_MODIFY triggers do not intercept trigger action
|
||||
- Fix: [ bug #1502 ] DON_CREATE trigger does not intercept trigger action
|
||||
- Fix: [ bug #1505, #1504] Project trigger problem
|
||||
- Fix: [ bug #1463, #1464 ] Proposal triggers problem
|
||||
- Fix: [ bug #1498, #1499 ] Shipment/Delivery triggers problem
|
||||
- Fix: [ bug #1465, #1466 ] Product triggers problem
|
||||
- Fix: [ bug #1508 ] STOCK_MOVEMENT does not show trigger error message
|
||||
- Fix: [ bug #1501 ] DEPLACEMENT_CREATE trigger do not intercept trigger action
|
||||
- Fix: [ bug #1506, #1507 ] ECM trigger error problem
|
||||
- Fix: [ bug #1469 ] Triggers CONTACT_MODIFY and CONTACT_DELETE duplicates error message
|
||||
- New: [ task #1204 ] add a External reference to contract
|
||||
|
||||
For translators:
|
||||
- Update language files.
|
||||
|
||||
For developers:
|
||||
- New: Add hook "searchAgendaFrom".
|
||||
- New: Add trigger DON_UPDATE, DON_DELETE
|
||||
- New: Add country iso code on 3 chars into table of countries.
|
||||
- Qual: Removed hard coded rowid into data init of table llx_c_action_trigger.
|
||||
- LINEBILL_DELETE, LINK_DELETE, ORDER_SUPPLIER_DELETE, RESOURCE_DELETE trigger called before SQL delete
|
||||
- New: [ Task #1481 ] Add trigger BILL_SUPPLIER_UPDATE.
|
||||
- New: [ Task #1495 ] Add trigger LINECONTRACT_CREATE.
|
||||
|
||||
WARNING: Following change may create regression for some external modules, but was necessary to make
|
||||
Dolibarr better:
|
||||
|
||||
- Change the way parameters are provides to scripts sync_xxx_ldap2dolibarr.php
|
||||
|
||||
|
||||
***** ChangeLog for 3.6 compared to 3.5.* *****
|
||||
For users:
|
||||
@ -87,6 +132,12 @@ For users:
|
||||
- Fix: [ bug #1478 ] BILL_PAYED trigger action does not intercept failure under some circumstances
|
||||
- Fix: [ bug #1479 ] Several customer invoice triggers do not intercept trigger action
|
||||
- Fix: [ bug #1477 ] Several customer invoice triggers do not show trigger error messages
|
||||
- Fix: [ bug #1471 ] Several PHP warnings when intercepting USER_CREATE trigger.
|
||||
- Fix: [ bug #1517 ] Packages sizes.
|
||||
- Fix: [ bug #1521 ] The second order's page from a provider shows all orders
|
||||
|
||||
TODO
|
||||
- New: Predefined product and free product use same form.
|
||||
|
||||
For translators:
|
||||
- Update language files.
|
||||
@ -124,10 +175,12 @@ removed. You must now use the 6 parameters way. See file modMyModule.class.php f
|
||||
So check that return value is 0 to keep default standard behaviour after hook, or 1 to disable
|
||||
default standard behaviour.
|
||||
- Properties "civilite_id" were renamed into "civility_id".
|
||||
- Remove add_photo_web() that is ot used anymore by core code.
|
||||
|
||||
|
||||
|
||||
***** ChangeLog for 3.5.4 compared to 3.5.3 *****
|
||||
Fix: Hide title of event when agenda module disabled.
|
||||
Fix: When using option MAIN_MAIL_ALLOW_SENDMAIL_F, a mail was sent to sender.
|
||||
Fix: Question about warehouse must not be done when module stock is disabled.
|
||||
Fix: Option STOCK_SUPPORTS_SERVICES was not correctly implemented
|
||||
@ -168,6 +221,9 @@ Fix: [ bug #1461 ] LINEORDER_SUPPLIER_CREATE does not intercept supplier order l
|
||||
Fix: [ bug #1484 ] BILL_SUPPLIER_PAYED trigger action does not intercept failure under some circumstances
|
||||
Fix: [ bug #1482 ] Several supplier invoice triggers do not show trigger error messages
|
||||
Fix: [ bug #1486 ] LINEBILL_SUPPLIER_CREATE and LINEBILL_SUPPLIER_UPDATE triggers do not intercept trigger action
|
||||
Fix: [ bug #1522 ] Element list into associate object into project are no more filterd by project thirdparty
|
||||
Fix: [ bug #1526 ] Thumbs of files uploaded with dots in their names do not load correctly
|
||||
Fix: Import ProfId1 to siren and ProfId2 to siret
|
||||
|
||||
***** ChangeLog for 3.5.3 compared to 3.5.2 *****
|
||||
Fix: Error on field accountancy code for export profile of invoices.
|
||||
|
||||
@ -115,8 +115,8 @@ Divers:
|
||||
- Application simple à utiliser.
|
||||
- Plusieurs thèmes visuels.
|
||||
- Code simple et facilement personnalisable.
|
||||
- Fonctionne avec PHP 5.3+, MySQL 4.1+ ou PostgreSql 8.1.4+.
|
||||
- Compatible avec toutes les offres Cloud du marché respectant les prérequis MySQL et PHP.
|
||||
- Requiert PHP et Mysql ou Postgresql (Voir versions exactes sur http://wiki.dolibarr.org/index.php/Prérequis).
|
||||
- Compatible avec toutes les offres Cloud du marché respectant les prérequis MySQL et PHP ou Postgresql.
|
||||
|
||||
|
||||
## CE QUE DOLIBARR NE PEUT PAS FAIRE (TACHES A FAIRE)
|
||||
|
||||
@ -114,6 +114,7 @@ See ChangeLog file found into package.
|
||||
- Very user friendly and easy to use.
|
||||
- Highly customizable: Enable only modules you need, user personalized fields, choose your skin, several menu managers (can be used by internal users as a back-office with a particular menu, or by external users as a front-office with another one).
|
||||
- Works with PHP 5.3+, MySql 4.1 or PostgreSQL 8.1.
|
||||
- Require PHP and Mysql or Postgresql (See exatc versions on http://wiki.dolibarr.org/index.php/Prerequisite).
|
||||
- Compatible with all Cloud solutions that match MySql, PHP or PostgreSQL prerequisites.
|
||||
- An easy to understand, maintain and code interfaces with your own system information (PHP with no heavy frameworks, trigger and hook architecture).
|
||||
- Support countries specific features:
|
||||
|
||||
@ -959,8 +959,8 @@ if ($nboftargetok) {
|
||||
}
|
||||
}
|
||||
|
||||
# Build package for each target
|
||||
#------------------------------
|
||||
# Publish package for each target
|
||||
#--------------------------------
|
||||
foreach my $target (keys %CHOOSEDPUBLISH)
|
||||
{
|
||||
if ($CHOOSEDPUBLISH{$target} < 0) { next; }
|
||||
@ -1035,9 +1035,7 @@ if ($nboftargetok) {
|
||||
print "$command\n";
|
||||
my $ret=`$command 2>&1`;
|
||||
print "$ret\n";
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -333,10 +333,10 @@ fi
|
||||
|
||||
# version x.y.z-0.1.a for alpha, x.y.z-0.2.b for beta, x.y.z-0.3 for release
|
||||
%changelog
|
||||
* Wed Jun 20 2014 Laurent Destailleur 3.5.4-0.3
|
||||
* Wed Jul 2 2014 Laurent Destailleur 3.6.0-0.2.b
|
||||
- Upstream release
|
||||
|
||||
* Fri May 9 2014 Laurent Destailleur 3.6.0-0.2.b
|
||||
* Tue Jul 1 2014 Laurent Destailleur 3.5.4-0.3
|
||||
- Upstream release
|
||||
|
||||
* Fri May 2 2014 Laurent Destailleur 3.5.3-0.3
|
||||
|
||||
@ -569,10 +569,10 @@ fi
|
||||
|
||||
# version x.y.z-0.1.a for alpha, x.y.z-0.2.b for beta, x.y.z-0.3 for release
|
||||
%changelog
|
||||
* Wed Jun 20 2014 Laurent Destailleur 3.5.4-0.3
|
||||
* Wed Jul 2 2014 Laurent Destailleur 3.6.0-0.2.b
|
||||
- Upstream release
|
||||
|
||||
* Fri May 9 2014 Laurent Destailleur 3.6.0-0.2.b
|
||||
* Tue Jul 1 2014 Laurent Destailleur 3.5.4-0.3
|
||||
- Upstream release
|
||||
|
||||
* Fri May 2 2014 Laurent Destailleur 3.5.3-0.3
|
||||
|
||||
@ -338,10 +338,10 @@ fi
|
||||
|
||||
# version x.y.z-0.1.a for alpha, x.y.z-0.2.b for beta, x.y.z-0.3 for release
|
||||
%changelog
|
||||
* Wed Jun 20 2014 Laurent Destailleur 3.5.4-0.3
|
||||
* Wed Jul 2 2014 Laurent Destailleur 3.6.0-0.2.b
|
||||
- Upstream release
|
||||
|
||||
* Fri May 9 2014 Laurent Destailleur 3.6.0-0.2.b
|
||||
* Tue Jul 1 2014 Laurent Destailleur 3.5.4-0.3
|
||||
- Upstream release
|
||||
|
||||
* Fri May 2 2014 Laurent Destailleur 3.5.3-0.3
|
||||
|
||||
@ -349,10 +349,10 @@ fi
|
||||
|
||||
# version x.y.z-0.1.a for alpha, x.y.z-0.2.b for beta, x.y.z-0.3 for release
|
||||
%changelog
|
||||
* Wed Jun 20 2014 Laurent Destailleur 3.5.4-0.3
|
||||
* Wed Jul 2 2014 Laurent Destailleur 3.6.0-0.2.b
|
||||
- Upstream release
|
||||
|
||||
* Fri May 9 2014 Laurent Destailleur 3.6.0-0.2.b
|
||||
* Tue Jul 1 2014 Laurent Destailleur 3.5.4-0.3
|
||||
- Upstream release
|
||||
|
||||
* Fri May 2 2014 Laurent Destailleur 3.5.3-0.3
|
||||
|
||||
@ -1,7 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!ELEMENT ruleset (description,rule+)>
|
||||
<!ELEMENT ruleset (description,exclude-pattern*,rule+)>
|
||||
<!ATTLIST ruleset name CDATA "">
|
||||
<!ELEMENT description (#PCDATA)>
|
||||
<!ELEMENT exclude-pattern (#PCDATA)>
|
||||
<!ELEMENT rule (properties*,severity*)>
|
||||
<!ATTLIST rule ref CDATA "">
|
||||
<!ELEMENT properties (property+)>
|
||||
|
||||
@ -3,6 +3,12 @@
|
||||
<ruleset name="Dolibarr">
|
||||
<description>Dolibarr coding standard.</description>
|
||||
|
||||
<exclude-pattern>*/conf.php</exclude-pattern>
|
||||
<exclude-pattern>*/includes/*</exclude-pattern>
|
||||
<exclude-pattern>*/documents/*</exclude-pattern>
|
||||
<exclude-pattern>*/custom/*</exclude-pattern>
|
||||
<exclude-pattern>*/nltechno*</exclude-pattern>
|
||||
|
||||
<!-- List of all tests -->
|
||||
|
||||
<rule ref="Internal.NoCodeFound">
|
||||
@ -18,6 +24,9 @@
|
||||
<severity>0</severity>
|
||||
</rule>
|
||||
|
||||
<!-- The closing ?> tag MUST be omitted from files containing only PHP. -->
|
||||
<rule ref="Zend.Files.ClosingTag"/>
|
||||
|
||||
<!-- <rule ref="Generic.CodeAnalysis.ForLoopShouldBeWhileLoop" /> -->
|
||||
|
||||
<rule ref="Generic.CodeAnalysis.ForLoopWithTestFunctionCall" />
|
||||
@ -46,6 +55,9 @@
|
||||
</rule>
|
||||
-->
|
||||
|
||||
<!-- PHP code MUST use only UTF-8 without BOM. -->
|
||||
<rule ref="Generic.Files.ByteOrderMark"/>
|
||||
|
||||
<!-- Lines can be 85 chars long, but never show errors -->
|
||||
<rule ref="Generic.Files.LineLength">
|
||||
<properties>
|
||||
|
||||
@ -173,7 +173,7 @@ class modMyModule extends DolibarrModules
|
||||
|
||||
// Add here list of permission defined by an id, a label, a boolean and two constant strings.
|
||||
// Example:
|
||||
// $this->rights[$r][0] = 2000; // Permission id (must not be already used)
|
||||
// $this->rights[$r][0] = $this->numero + $r; // Permission id (must not be already used)
|
||||
// $this->rights[$r][1] = 'Permision label'; // Permission label
|
||||
// $this->rights[$r][3] = 1; // Permission by default for new user (0/1)
|
||||
// $this->rights[$r][4] = 'level1'; // In php code, permission will be checked by test if ($user->rights->permkey->level1->level2)
|
||||
|
||||
@ -91,7 +91,7 @@ class Skeleton_Class extends CommonObject
|
||||
|
||||
$this->db->begin();
|
||||
|
||||
dol_syslog(get_class($this)."::create sql=".$sql, LOG_DEBUG);
|
||||
dol_syslog(get_class($this)."::create", LOG_DEBUG);
|
||||
$resql=$this->db->query($sql);
|
||||
if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
|
||||
|
||||
@ -105,10 +105,8 @@ class Skeleton_Class extends CommonObject
|
||||
// want this action calls a trigger.
|
||||
|
||||
//// Call triggers
|
||||
//include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
|
||||
//$interface=new Interfaces($this->db);
|
||||
//$result=$interface->run_triggers('MYOBJECT_CREATE',$this,$user,$langs,$conf);
|
||||
//if ($result < 0) { $error++; $this->errors=$interface->errors; }
|
||||
//$result=$this->call_trigger('MYOBJECT_CREATE',$user);
|
||||
//if ($result < 0) { $error++; //Do also what you must do to rollback action if trigger fail}
|
||||
//// End call triggers
|
||||
}
|
||||
}
|
||||
@ -149,7 +147,7 @@ class Skeleton_Class extends CommonObject
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."mytable as t";
|
||||
$sql.= " WHERE t.rowid = ".$id;
|
||||
|
||||
dol_syslog(get_class($this)."::fetch sql=".$sql, LOG_DEBUG);
|
||||
dol_syslog(get_class($this)."::fetch");
|
||||
$resql=$this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
@ -169,7 +167,6 @@ class Skeleton_Class extends CommonObject
|
||||
else
|
||||
{
|
||||
$this->error="Error ".$this->db->lasterror();
|
||||
dol_syslog(get_class($this)."::fetch ".$this->error, LOG_ERR);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
@ -204,7 +201,7 @@ class Skeleton_Class extends CommonObject
|
||||
|
||||
$this->db->begin();
|
||||
|
||||
dol_syslog(get_class($this)."::update sql=".$sql, LOG_DEBUG);
|
||||
dol_syslog(get_class($this)."::update");
|
||||
$resql = $this->db->query($sql);
|
||||
if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
|
||||
|
||||
@ -216,12 +213,10 @@ class Skeleton_Class extends CommonObject
|
||||
// want this action calls a trigger.
|
||||
|
||||
//// Call triggers
|
||||
//include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
|
||||
//$interface=new Interfaces($this->db);
|
||||
//$result=$interface->run_triggers('MYOBJECT_MODIFY',$this,$user,$langs,$conf);
|
||||
//if ($result < 0) { $error++; $this->errors=$interface->errors; }
|
||||
//$result=$this->call_trigger('MYOBJECT_MODIFY',$user);
|
||||
//if ($result < 0) { $error++; //Do also what you must do to rollback action if trigger fail}
|
||||
//// End call triggers
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Commit or rollback
|
||||
@ -264,12 +259,10 @@ class Skeleton_Class extends CommonObject
|
||||
// Uncomment this and change MYOBJECT to your own tag if you
|
||||
// want this action calls a trigger.
|
||||
|
||||
//// Call triggers
|
||||
//include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
|
||||
//$interface=new Interfaces($this->db);
|
||||
//$result=$interface->run_triggers('MYOBJECT_DELETE',$this,$user,$langs,$conf);
|
||||
//if ($result < 0) { $error++; $this->errors=$interface->errors; }
|
||||
//// End call triggers
|
||||
//// Call triggers
|
||||
//$result=$this->call_trigger('MYOBJECT_DELETE',$user);
|
||||
//if ($result < 0) { $error++; //Do also what you must do to rollback action if trigger fail}
|
||||
//// End call triggers
|
||||
}
|
||||
}
|
||||
|
||||
@ -278,7 +271,7 @@ class Skeleton_Class extends CommonObject
|
||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."mytable";
|
||||
$sql.= " WHERE rowid=".$this->id;
|
||||
|
||||
dol_syslog(get_class($this)."::delete sql=".$sql);
|
||||
dol_syslog(get_class($this)."::delete");
|
||||
$resql = $this->db->query($sql);
|
||||
if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
|
||||
}
|
||||
|
||||
@ -139,7 +139,7 @@ if ($action == 'list')
|
||||
print_liste_field_titre($langs->trans('field2'),$_SERVER['PHP_SELF'],'t.field2','',$param,'',$sortfield,$sortorder);
|
||||
print '</tr>';
|
||||
|
||||
dol_syslog($script_file." sql=".$sql, LOG_DEBUG);
|
||||
dol_syslog($script_file, LOG_DEBUG);
|
||||
$resql=$db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
|
||||
@ -119,7 +119,7 @@ $sql.= " FROM ".MAIN_DB_PREFIX."skeleton";
|
||||
$sql.= " WHERE field3 = 'xxx'";
|
||||
$sql.= " ORDER BY field1 ASC";
|
||||
|
||||
dol_syslog($script_file." sql=".$sql, LOG_DEBUG);
|
||||
dol_syslog($script_file, LOG_DEBUG);
|
||||
$resql=$db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
|
||||
@ -23,7 +23,7 @@ Usage
|
||||
|
||||
`cd` into the vagrant box directory and simply type `vagrant up`.
|
||||
|
||||
That's all you need to do. It will build a brand new VirtalBox machine for you with everything you need to develop on Dolibarr.
|
||||
That's all you need to do. It will build a brand new VirtualBox machine for you with everything you need to develop on Dolibarr.
|
||||
|
||||
### Name resolution
|
||||
For easy access to the VM you need to setup name resolution to the machines IP.
|
||||
@ -45,9 +45,16 @@ Somewhat bleeding edge vagrant box for develop branch related work.
|
||||
|
||||
- IP: 192.168.42.101
|
||||
- Vhost: dev.dolibarr.org
|
||||
- OS: Debian Wheezy 7.5
|
||||
- OS: Debian Wheezy 7.5 x64
|
||||
- Webserver: Apache 2.2.22
|
||||
- PHP: mod_php 5.5.13-1~dotdeb.1
|
||||
- PHP: mod_php 5.5.14-1~dotdeb.1
|
||||
Installed modules:
|
||||
- cli
|
||||
- curl
|
||||
- gd
|
||||
- imagick
|
||||
- intl
|
||||
- mcrypt
|
||||
- Database: MySQL 5.5
|
||||
- Root user: root
|
||||
- Root password: root
|
||||
@ -55,7 +62,13 @@ Somewhat bleeding edge vagrant box for develop branch related work.
|
||||
- Database user: user
|
||||
- Database password: user
|
||||
- Initial data: dev/initdata/mysqldump_dolibarr-3.5.0.sql
|
||||
- Database: PostgreSQL 9.3
|
||||
- Adminer: lightweight database management. Access through http://192.168.42.101/adminer
|
||||
- Debugger: XDebug
|
||||
- Profiler: Xhprof
|
||||
- Profiler: Xhprof. Access through http://192.168.42.101/xhprof/xhprof_html
|
||||
|
||||
You can access MailCatcher to read all outgoing emails at http://192.168.42.101:1080
|
||||
|
||||
To access the machine you must use the following private keys:
|
||||
- User root: located at puphpet/files/dot/ssh/root_rsa
|
||||
- User vagrant: located at puphpet/files/dot/ssh/id_rsa
|
||||
|
||||
25
dev/vagrant/dolibarrdev/Vagrantfile
vendored
25
dev/vagrant/dolibarrdev/Vagrantfile
vendored
@ -25,11 +25,19 @@ Vagrant.configure("2") do |config|
|
||||
|
||||
data['vm']['synced_folder'].each do |i, folder|
|
||||
if folder['source'] != '' && folder['target'] != ''
|
||||
nfs = (folder['nfs'] == "true") ? "nfs" : nil
|
||||
if nfs == "nfs"
|
||||
config.vm.synced_folder "#{folder['source']}", "#{folder['target']}", id: "#{i}", type: nfs
|
||||
if folder['sync_type'] == 'nfs'
|
||||
config.vm.synced_folder "#{folder['source']}", "#{folder['target']}", id: "#{i}", type: "nfs"
|
||||
elsif folder['sync_type'] == 'smb'
|
||||
config.vm.synced_folder "#{folder['source']}", "#{folder['target']}", id: "#{i}", type: "smb"
|
||||
elsif folder['sync_type'] == 'rsync'
|
||||
rsync_args = !folder['rsync']['args'].nil? ? folder['rsync']['args'] : ["--verbose", "--archive", "--delete", "-z"]
|
||||
rsync_auto = !folder['rsync']['auto'].nil? ? folder['rsync']['auto'] : true
|
||||
rsync_exclude = !folder['rsync']['exclude'].nil? ? folder['rsync']['exclude'] : [".vagrant/"]
|
||||
|
||||
config.vm.synced_folder "#{folder['source']}", "#{folder['target']}", id: "#{i}",
|
||||
rsync__args: rsync_args, rsync__exclude: rsync_exclude, rsync__auto: rsync_auto, type: "rsync"
|
||||
else
|
||||
config.vm.synced_folder "#{folder['source']}", "#{folder['target']}", id: "#{i}", type: nfs,
|
||||
config.vm.synced_folder "#{folder['source']}", "#{folder['target']}", id: "#{i}",
|
||||
group: 'www-data', owner: 'www-data', mount_options: ["dmode=775", "fmode=764"]
|
||||
end
|
||||
end
|
||||
@ -128,7 +136,14 @@ Vagrant.configure("2") do |config|
|
||||
end
|
||||
end
|
||||
|
||||
config.vm.provision :shell, :path => "puphpet/shell/execute-files.sh"
|
||||
config.vm.provision :shell do |s|
|
||||
s.path = "puphpet/shell/execute-files.sh"
|
||||
s.args = ["exec-once", "exec-always"]
|
||||
end
|
||||
config.vm.provision :shell, run: "always" do |s|
|
||||
s.path = "puphpet/shell/execute-files.sh"
|
||||
s.args = ["startup-once", "startup-always"]
|
||||
end
|
||||
config.vm.provision :shell, :path => "puphpet/shell/important-notices.sh"
|
||||
|
||||
if File.file?("#{dir}/puphpet/files/dot/ssh/id_rsa")
|
||||
|
||||
26
dev/vagrant/dolibarrdev/puphpet/config.yaml
vendored
26
dev/vagrant/dolibarrdev/puphpet/config.yaml
vendored
@ -29,10 +29,12 @@ vagrantfile-local:
|
||||
- '--hiera_config /vagrant/puphpet/puppet/hiera.yaml'
|
||||
- '--parser future'
|
||||
synced_folder:
|
||||
PL1BkioqqvGY:
|
||||
jopH6005bn96:
|
||||
source: ../../../
|
||||
target: /var/www
|
||||
nfs: 'false'
|
||||
target: /var/www/dolibarr
|
||||
sync_type: default
|
||||
rsync:
|
||||
auto: 'false'
|
||||
usable_port_range: 2200..2250
|
||||
ssh:
|
||||
host: null
|
||||
@ -71,7 +73,7 @@ apache:
|
||||
settings:
|
||||
user: www-data
|
||||
group: www-data
|
||||
default_vhost: false
|
||||
default_vhost: true
|
||||
manage_user: false
|
||||
manage_group: false
|
||||
sendfile: 0
|
||||
@ -79,9 +81,9 @@ apache:
|
||||
- php
|
||||
- rewrite
|
||||
vhosts:
|
||||
CGyWQB0fx4x0:
|
||||
b2tOrs1TMtoF:
|
||||
servername: dev.dolibarr.org
|
||||
docroot: /var/www/htdocs
|
||||
docroot: /var/www/dolibarr/htdocs
|
||||
port: '80'
|
||||
setenv:
|
||||
- 'APP_ENV dev'
|
||||
@ -97,7 +99,7 @@ apache:
|
||||
nginx:
|
||||
install: 0
|
||||
vhosts:
|
||||
jeF1sybIJ3V2:
|
||||
0dU5luf5AnIe:
|
||||
server_name: awesome.dev
|
||||
server_aliases:
|
||||
- www.awesome.dev
|
||||
@ -152,7 +154,7 @@ mysql:
|
||||
root_password: root
|
||||
adminer: 0
|
||||
databases:
|
||||
2OfuuapoIqsl:
|
||||
V6H3W2FVB7Yq:
|
||||
grant:
|
||||
- ALTER
|
||||
- CREATE
|
||||
@ -166,16 +168,16 @@ mysql:
|
||||
host: localhost
|
||||
user: user
|
||||
password: user
|
||||
sql_file: /var/www/dev/initdata/mysqldump_dolibarr_3.5.0.sql
|
||||
sql_file: /var/www/dolibarr/dev/initdata/mysqldump_dolibarr_3.5.0.sql
|
||||
postgresql:
|
||||
install: 0
|
||||
install: '1'
|
||||
settings:
|
||||
root_password: '123'
|
||||
root_password: root
|
||||
user_group: postgres
|
||||
encoding: UTF8
|
||||
version: '9.3'
|
||||
databases: { }
|
||||
adminer: 0
|
||||
adminer: '1'
|
||||
mariadb:
|
||||
install: 0
|
||||
root_password: '123'
|
||||
|
||||
@ -1,4 +1 @@
|
||||
ssh/id_rsa
|
||||
ssh/id_rsa.pub
|
||||
ssh/insecure_private_key
|
||||
ssh/id_rsa.ppk
|
||||
ssh/*
|
||||
0
dev/vagrant/dolibarrdev/puphpet/files/startup-always/empty
vendored
Normal file
0
dev/vagrant/dolibarrdev/puphpet/files/startup-always/empty
vendored
Normal file
0
dev/vagrant/dolibarrdev/puphpet/files/startup-once/empty
vendored
Normal file
0
dev/vagrant/dolibarrdev/puphpet/files/startup-once/empty
vendored
Normal file
@ -279,8 +279,14 @@ if hash_key_equals($mailcatcher_values, 'install', 1) {
|
||||
}
|
||||
|
||||
if ! defined(Class['supervisord']) {
|
||||
class{ 'puphpet::python::pip': }
|
||||
|
||||
class { 'supervisord':
|
||||
install_pip => true,
|
||||
install_pip => false,
|
||||
require => [
|
||||
Class['my_fw::post'],
|
||||
Class['Puphpet::Python::Pip'],
|
||||
],
|
||||
}
|
||||
}
|
||||
|
||||
@ -467,15 +473,16 @@ if hash_key_equals($apache_values, 'install', 1) {
|
||||
$apache_vhosts = merge($apache_values['vhosts'], {
|
||||
'default_vhost_80' => {
|
||||
'servername' => 'default',
|
||||
'serveraliases' => ['*'],
|
||||
'docroot' => '/var/www/default',
|
||||
'port' => 80,
|
||||
'default_vhost' => true,
|
||||
},
|
||||
'default_vhost_443' => {
|
||||
'servername' => 'default',
|
||||
'serveraliases' => ['*'],
|
||||
'docroot' => '/var/www/default',
|
||||
'port' => 443,
|
||||
'default_vhost' => true,
|
||||
'ssl' => 1,
|
||||
},
|
||||
})
|
||||
} else {
|
||||
@ -515,11 +522,11 @@ if hash_key_equals($apache_values, 'install', 1) {
|
||||
|
||||
create_resources(apache::vhost, { "${key}" => merge($vhost, {
|
||||
'custom_fragment' => template('puphpet/apache/custom_fragment.erb'),
|
||||
'ssl' => 'ssl' in $vhost and str2bool($vhost['ssl']) ? { true => true, default => false },
|
||||
'ssl_cert' => 'ssl_cert' in $vhost and $vhost['ssl_cert'] ? { undef => undef, '' => undef, default => $vhost['ssl_cert'] },
|
||||
'ssl_key' => 'ssl_key' in $vhost and $vhost['ssl_key'] ? { undef => undef, '' => undef, default => $vhost['ssl_key'] },
|
||||
'ssl_chain' => 'ssl_chain' in $vhost and $vhost['ssl_chain'] ? { undef => undef, '' => undef, default => $vhost['ssl_chain'] },
|
||||
'ssl_certs_dir' => 'ssl_certs_dir' in $vhost and $vhost['ssl_certs_dir'] ? { undef => undef, '' => undef, default => $vhost['ssl_certs_dir'] }
|
||||
'ssl' => 'ssl' in $vhost and str2bool($vhost['ssl']) ? { true => true, default => false },
|
||||
'ssl_cert' => hash_key_true($vhost, 'ssl_cert') ? { true => $vhost['ssl_cert'], default => undef },
|
||||
'ssl_key' => hash_key_true($vhost, 'ssl_cert') ? { true => $vhost['ssl_key'], default => undef },
|
||||
'ssl_chain' => hash_key_true($vhost, 'ssl_cert') ? { true => $vhost['ssl_chain'], default => undef },
|
||||
'ssl_certs_dir' => hash_key_true($vhost, 'ssl_cert') ? { true => $vhost['ssl_certs_dir'], default => undef }
|
||||
})
|
||||
})
|
||||
|
||||
@ -662,10 +669,6 @@ if hash_key_equals($nginx_values, 'install', 1) {
|
||||
}
|
||||
} elsif hash_key_equals($hhvm_values, 'install', 1) {
|
||||
$fastcgi_pass = '127.0.0.1:9000'
|
||||
|
||||
set_php5_fpm_sock_group_and_user { 'hhvm':
|
||||
require => Package['nginx'],
|
||||
}
|
||||
} else {
|
||||
$fastcgi_pass = ''
|
||||
}
|
||||
@ -1096,7 +1099,7 @@ if hash_key_equals($xhprof_values, 'install', 1)
|
||||
}
|
||||
|
||||
if hash_key_equals($apache_values, 'install', 1) {
|
||||
$xhprof_webroot_location = $puphpet::params::apache_webroot_location
|
||||
$xhprof_webroot_location = '/var/www/default'
|
||||
$xhprof_webserver_service = 'httpd'
|
||||
} elsif hash_key_equals($nginx_values, 'install', 1) {
|
||||
$xhprof_webroot_location = $puphpet::params::nginx_webroot_location
|
||||
@ -1216,11 +1219,11 @@ if hash_key_equals($mysql_values, 'install', 1) {
|
||||
|
||||
if hash_key_equals($mysql_values, 'adminer', 1) and $mysql_php_installed {
|
||||
if hash_key_equals($apache_values, 'install', 1) {
|
||||
$mysql_adminer_webroot_location = $puphpet::params::apache_webroot_location
|
||||
$mysql_adminer_webroot_location = '/var/www/default'
|
||||
} elsif hash_key_equals($nginx_values, 'install', 1) {
|
||||
$mysql_adminer_webroot_location = $puphpet::params::nginx_webroot_location
|
||||
} else {
|
||||
$mysql_adminer_webroot_location = $puphpet::params::apache_webroot_location
|
||||
$mysql_adminer_webroot_location = '/var/www/default'
|
||||
}
|
||||
|
||||
class { 'puphpet::adminer':
|
||||
@ -1329,11 +1332,11 @@ if hash_key_equals($postgresql_values, 'install', 1) {
|
||||
|
||||
if hash_key_equals($postgresql_values, 'adminer', 1) and $postgresql_php_installed {
|
||||
if hash_key_equals($apache_values, 'install', 1) {
|
||||
$postgresql_adminer_webroot_location = $puphpet::params::apache_webroot_location
|
||||
$postgresql_adminer_webroot_location = '/var/www/default'
|
||||
} elsif hash_key_equals($nginx_values, 'install', 1) {
|
||||
$postgresql_adminer_webroot_location = $puphpet::params::nginx_webroot_location
|
||||
} else {
|
||||
$postgresql_adminer_webroot_location = $puphpet::params::apache_webroot_location
|
||||
$postgresql_adminer_webroot_location = '/var/www/default'
|
||||
}
|
||||
|
||||
class { 'puphpet::adminer':
|
||||
@ -1364,7 +1367,7 @@ define postgresql_db (
|
||||
$table = "${name}.*"
|
||||
|
||||
exec{ "${name}-import":
|
||||
command => "psql ${name} < ${sql_file}",
|
||||
command => "sudo -u postgres psql ${name} < ${sql_file}",
|
||||
logoutput => true,
|
||||
refreshonly => $refresh,
|
||||
require => Postgresql::Server::Db[$name],
|
||||
@ -1491,11 +1494,11 @@ if hash_key_equals($mariadb_values, 'install', 1) {
|
||||
|
||||
if hash_key_equals($mariadb_values, 'adminer', 1) and $mariadb_php_installed {
|
||||
if hash_key_equals($apache_values, 'install', 1) {
|
||||
$mariadb_adminer_webroot_location = $puphpet::params::apache_webroot_location
|
||||
$mariadb_adminer_webroot_location = '/var/www/default'
|
||||
} elsif hash_key_equals($nginx_values, 'install', 1) {
|
||||
$mariadb_adminer_webroot_location = $puphpet::params::nginx_webroot_location
|
||||
} else {
|
||||
$mariadb_adminer_webroot_location = $puphpet::params::apache_webroot_location
|
||||
$mariadb_adminer_webroot_location = '/var/www/default'
|
||||
}
|
||||
|
||||
class { 'puphpet::adminer':
|
||||
@ -1662,7 +1665,7 @@ if $beanstalkd_values == undef {
|
||||
}
|
||||
|
||||
if hash_key_equals($apache_values, 'install', 1) {
|
||||
$beanstalk_console_webroot_location = "${puphpet::params::apache_webroot_location}/beanstalk_console"
|
||||
$beanstalk_console_webroot_location = '/var/www/default/beanstalk_console'
|
||||
} elsif hash_key_equals($nginx_values, 'install', 1) {
|
||||
$beanstalk_console_webroot_location = "${puphpet::params::nginx_webroot_location}/beanstalk_console"
|
||||
} else {
|
||||
|
||||
@ -0,0 +1,42 @@
|
||||
#
|
||||
# hash_key_true.rb
|
||||
#
|
||||
|
||||
module Puppet::Parser::Functions
|
||||
|
||||
newfunction(:hash_key_true, :type => :rvalue, :doc => <<-'ENDHEREDOC') do |args|
|
||||
|
||||
Returns true if the key within hash is truthy
|
||||
ENDHEREDOC
|
||||
|
||||
unless args.length == 2
|
||||
raise Puppet::ParseError, ("hash_key_true(): wrong number of arguments (#{args.length}; must be 2)")
|
||||
end
|
||||
|
||||
arr = args[0]
|
||||
key = args[1]
|
||||
|
||||
unless arr.is_a?(Hash)
|
||||
return false
|
||||
end
|
||||
|
||||
unless arr.has_key?(key)
|
||||
return false
|
||||
end
|
||||
|
||||
if arr[key].nil?
|
||||
return false
|
||||
end
|
||||
|
||||
if arr[key].empty?
|
||||
return false
|
||||
end
|
||||
|
||||
if arr[key] == 'false'
|
||||
return false
|
||||
end
|
||||
|
||||
return true
|
||||
|
||||
end
|
||||
end
|
||||
@ -69,17 +69,39 @@ class puphpet::hhvm(
|
||||
}
|
||||
}
|
||||
'centos': {
|
||||
$jemalloc_url = 'http://files.puphpet.com/centos6/jemalloc-3.6.0-1.el6.x86_64.rpm'
|
||||
$jemalloc_download_location = '/.puphpet-stuff/jemalloc-3.6.0-1.el6.x86_64.rpm'
|
||||
|
||||
$require = defined(Class['my_fw::post']) ? {
|
||||
true => Class['my_fw::post'],
|
||||
default => [],
|
||||
}
|
||||
|
||||
exec { "download jemalloc to ${download_location}":
|
||||
creates => $download_location,
|
||||
command => "wget --quiet --tries=5 --connect-timeout=10 -O '${jemalloc_download_location}' '${jemalloc_url}'",
|
||||
timeout => 30,
|
||||
path => '/usr/bin',
|
||||
require => $require
|
||||
}
|
||||
|
||||
package { 'jemalloc':
|
||||
ensure => latest,
|
||||
provider => yum,
|
||||
source => $download_location,
|
||||
require => Exec["download jemalloc to ${download_location}"],
|
||||
}
|
||||
|
||||
yum::managed_yumrepo { 'hop5':
|
||||
descr => 'hop5 repository',
|
||||
baseurl => 'http://www.hop5.in/yum/el6/',
|
||||
gpgkey => 'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-HOP5',
|
||||
enabled => 1,
|
||||
gpgcheck => 0,
|
||||
priority => 1
|
||||
priority => 1,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if $real_webserver == 'apache2' {
|
||||
if ! defined(Class['apache::mod::mime']) {
|
||||
class { 'apache::mod::mime': }
|
||||
|
||||
22
dev/vagrant/dolibarrdev/puphpet/puppet/modules/puphpet/manifests/python/pip.pp
vendored
Normal file
22
dev/vagrant/dolibarrdev/puphpet/puppet/modules/puphpet/manifests/python/pip.pp
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
class puphpet::python::pip {
|
||||
|
||||
Exec { path => [ '/usr/bin/', '/usr/local/bin', '/bin', '/usr/local/sbin', '/usr/sbin', '/sbin' ] }
|
||||
|
||||
if ! defined(Package['python-setuptools']) {
|
||||
package { 'python-setuptools': }
|
||||
}
|
||||
|
||||
exec { 'easy_install pip':
|
||||
unless => 'which pip',
|
||||
require => Package['python-setuptools'],
|
||||
}
|
||||
|
||||
if $::osfamily == 'RedHat' {
|
||||
exec { 'rhel pip_provider_name_fix':
|
||||
command => 'alternatives --install /usr/bin/pip-python pip-python /usr/bin/pip 1',
|
||||
subscribe => Exec['easy_install pip'],
|
||||
unless => 'which pip-python',
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,6 +1,10 @@
|
||||
fixtures:
|
||||
repositories:
|
||||
stdlib: "git://github.com/puppetlabs/puppetlabs-stdlib"
|
||||
concat: "git://github.com/puppetlabs/puppetlabs-concat"
|
||||
'stdlib':
|
||||
repo: 'git://github.com/puppetlabs/puppetlabs-stdlib'
|
||||
ref: '4.1.0'
|
||||
'concat':
|
||||
repo: 'git://github.com/puppetlabs/puppetlabs-concat'
|
||||
ref: '1.0.1'
|
||||
symlinks:
|
||||
supervisord: "#{source_dir}"
|
||||
@ -1,21 +1,28 @@
|
||||
language: ruby
|
||||
bundler_args: --without development
|
||||
script: "bundle exec rake spec lint"
|
||||
script: "bundle exec rake test"
|
||||
rvm:
|
||||
- 1.8.7
|
||||
- 1.9.3
|
||||
- 2.0.0
|
||||
env:
|
||||
matrix:
|
||||
- PUPPET_GEM_VERSION="~> 2.7.0"
|
||||
- PUPPET_GEM_VERSION="~> 3.3.0"
|
||||
- PUPPET_GEM_VERSION="~> 3.4.0"
|
||||
- PUPPET_VERSION="~> 2.7.0"
|
||||
- PUPPET_VERSION="~> 3.1.0"
|
||||
- PUPPET_VERSION="~> 3.2.0"
|
||||
- PUPPET_VERSION="~> 3.3.0"
|
||||
- PUPPET_VERSION="~> 3.4.0"
|
||||
- PUPPET_VERSION="~> 3.5.0"
|
||||
- PUPPET_VERSION="~> 3.6.0"
|
||||
matrix:
|
||||
exclude:
|
||||
- rvm: 1.9.3
|
||||
env: PUPPET_GEM_VERSION="~> 2.7.0"
|
||||
- rvm: 2.0.0
|
||||
env: PUPPET_GEM_VERSION="~> 2.7.0"
|
||||
env: PUPPET_VERSION="~> 2.7.0"
|
||||
- rvm: 1.9.3
|
||||
env: PUPPET_VERSION="~> 2.7.0"
|
||||
- rvm: 2.0.0
|
||||
env: PUPPET_VERSION="~> 3.1.0"
|
||||
- rvm: 1.8.7
|
||||
env: PUPPET_VERSION="~> 3.2.0"
|
||||
notifications:
|
||||
email: false
|
||||
|
||||
|
||||
@ -1,3 +1,66 @@
|
||||
2014-06-20 - v0.4.0
|
||||
|
||||
Fixes:
|
||||
|
||||
- Removed root as group and replaced with uid 0 to enhance system
|
||||
compatibility
|
||||
|
||||
Enhancements:
|
||||
|
||||
- Made package provider a user definable param see supervisord::package_provider and README for details of how to change this.
|
||||
- All define types can now be automatically pulled in from hiera see example https://github.com/ajcrowe/puppet-supervisord#configure-a-program
|
||||
- You can now override the default include path of $config_include/*.conf with your own array using $config_dirs. Bear in mind this would need to include whatever you set $config_include to be, with *.conf on the end.
|
||||
|
||||
Many thanks for the PRs from @jasperla, @mvantellingen for the bug report on the service name and @hasc for the enhancement ideas.
|
||||
|
||||
2014-06-06 - v0.3.3
|
||||
|
||||
Fixes:
|
||||
|
||||
- Fixed typo in stopwaitsec param, should have been stopwaitsecs, thanks to @rchrd2
|
||||
|
||||
2014-05-03 - v0.3.2
|
||||
|
||||
Changes:
|
||||
|
||||
- Added supervisord::executable_ctl variable for supervisorctl binary path, thanks to @bpgoldsb
|
||||
|
||||
2014-04-22 - v0.3.1
|
||||
|
||||
Fixes:
|
||||
|
||||
- Fixed typo in unix_socket_group param, thanks to @dig412
|
||||
|
||||
2014-03-11 - v0.3.0
|
||||
|
||||
Fixes:
|
||||
|
||||
- Fixed typo in fcgi config
|
||||
- Fixed typo in supervisord config with minfds and minprocs, thanks to @peefourtee
|
||||
- Typo in README fixed thanks to @hopkinsth
|
||||
- Removed refreshonly from pip_install exec resource
|
||||
- Number of syntax fixes thanks to `puppet lint`
|
||||
|
||||
Important Changes:
|
||||
|
||||
- Lots of input validation has been added **PLEASE** check your config works before upgrading!
|
||||
- Changed init_extras naming to defaults and cleaned things up.
|
||||
- Starting and stopping apps is now done with supervisorctl commands to avoid service restarts
|
||||
|
||||
Other Changes:
|
||||
|
||||
- CSV functions now order things consistently
|
||||
- Included description for classes and functions
|
||||
- Expanded spec testing built with Travis CI
|
||||
- Added beaker acceptance tests
|
||||
- Added greater validation of various parameters
|
||||
- Added coverage reporting for resources
|
||||
|
||||
To-Do:
|
||||
|
||||
- Add support for additional OS families such as Solaris.
|
||||
|
||||
|
||||
2013-10-31 - v0.2.3
|
||||
|
||||
Fixes:
|
||||
|
||||
@ -1,14 +1,26 @@
|
||||
source 'https://rubygems.org'
|
||||
|
||||
group :development, :test do
|
||||
group :test do
|
||||
gem 'rake'
|
||||
gem 'puppetlabs_spec_helper', :require => false
|
||||
gem 'rspec-system-puppet', '~> 2.0'
|
||||
gem 'puppet-lint', '~> 0.3.2'
|
||||
gem 'puppet-lint'
|
||||
gem 'puppet-syntax'
|
||||
gem 'puppetlabs_spec_helper'
|
||||
gem 'rspec-puppet', :git => 'https://github.com/rodjek/rspec-puppet.git' , :ref => 'c44381a240ec420d4ffda7bffc55ee4d9c08d682'
|
||||
gem 'rspec', '2.14.1'
|
||||
end
|
||||
|
||||
if puppetversion = ENV['PUPPET_GEM_VERSION']
|
||||
gem 'puppet', puppetversion, :require => false
|
||||
else
|
||||
gem 'puppet', :require => false
|
||||
group :development do
|
||||
gem 'travis'
|
||||
gem 'travis-lint'
|
||||
gem 'beaker'
|
||||
gem 'beaker-rspec'
|
||||
gem 'pry'
|
||||
gem 'guard-rake'
|
||||
end
|
||||
|
||||
|
||||
if puppetversion = ENV['PUPPET_VERSION']
|
||||
gem 'puppet', puppetversion
|
||||
else
|
||||
gem 'puppet', '~> 3.4.0'
|
||||
end
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
name 'ajcrowe-supervisord'
|
||||
version '0.2.3'
|
||||
version '0.4.0'
|
||||
source 'git@github.com/ajcrowe/puppet-supervisord.git'
|
||||
author 'Alex Crowe'
|
||||
license 'Apache License, Version 2.0'
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
|
||||
Puppet module to manage the [supervisord](http://supervisord.org/) process control system.
|
||||
|
||||
Functions available to configure
|
||||
Functions available to configure
|
||||
|
||||
* [programs](http://supervisord.org/configuration.html#program-x-section-settings)
|
||||
* [groups](http://supervisord.org/configuration.html#group-x-section-settings)
|
||||
@ -31,10 +31,16 @@ class supervisord {
|
||||
}
|
||||
```
|
||||
|
||||
This will download [setuptool](https://bitbucket.org/pypa/setuptools) and install pip with easy_install.
|
||||
This will download [setuptool](https://bitbucket.org/pypa/setuptools) and install pip with easy_install.
|
||||
|
||||
You can pass a specific url with `$setuptools_url = 'url'`
|
||||
|
||||
### Install without pip
|
||||
|
||||
If you want to use your system package manager you can specify that with `supervisord::package_provider`.
|
||||
|
||||
You'll also likely need to adjust the `supervisord::service_name` to match that installed by the system package. If you're using Debian or Redhat OS families you'll also want to disable the init scripts with `supervisord::install_init = false`.
|
||||
|
||||
Note: Only Debian and RedHat families have an init script currently.
|
||||
|
||||
### Configure a program
|
||||
@ -61,23 +67,61 @@ supervisord::program { 'myprogram':
|
||||
}
|
||||
```
|
||||
|
||||
Or you can fully define your programs in hiera:
|
||||
|
||||
```yaml
|
||||
supervisord::programs:
|
||||
'myprogram':
|
||||
command: 'command --args'
|
||||
autostart: yes
|
||||
autorestart: 'true'
|
||||
environment:
|
||||
HOME: '/home/myuser'
|
||||
PATH: '/bin:/sbin:/usr/bin:/usr/sbin'
|
||||
SECRET: 'mysecret'
|
||||
```
|
||||
|
||||
### Configure a group
|
||||
|
||||
```ruby
|
||||
supervisord::group { 'mygroup':
|
||||
priority => 100,
|
||||
program => ['program1', 'program2', 'program3']
|
||||
programs => ['program1', 'program2', 'program3']
|
||||
}
|
||||
```
|
||||
|
||||
### Configure an eventlistener
|
||||
|
||||
```ruby
|
||||
supervisord::eventlistener { 'mylistener':
|
||||
command => 'command --args',
|
||||
events => ['PROCESS_STATE', 'PROCESS_STATE_START']
|
||||
priority => '100',
|
||||
env_var => 'my_common_envs'
|
||||
}
|
||||
```
|
||||
|
||||
### Run supervisorctl Commands
|
||||
|
||||
Should you need to run a sequence of command with `supervisorctl` you can use the define type `supervisord::supervisorctl`
|
||||
|
||||
```ruby
|
||||
supervisord::supervisorctl { 'restart_myapp':
|
||||
command => 'restart',
|
||||
process => 'myapp'
|
||||
}
|
||||
```
|
||||
|
||||
You can also issue a command without specifying a process.
|
||||
|
||||
### Development
|
||||
|
||||
If you have suggestions or improvements please file an issue or pull request, i'll try and sort them as quickly as possble.
|
||||
|
||||
If you submit a pull please try and include tests for the new functionality. The module is tested with [Travis-CI](https://travis-ci.org/ajcrowe/puppet-supervisord).
|
||||
If you submit a pull please try and include tests for the new functionality/fix. The module is tested with [Travis-CI](https://travis-ci.org/ajcrowe/puppet-supervisord).
|
||||
|
||||
|
||||
### Credits
|
||||
|
||||
* Debian init script sourced from the system package.
|
||||
* RedHat/Centos init script sourced from https://github.com/Supervisor/initscripts
|
||||
* RedHat/Centos init script sourced from https://github.com/Supervisor/initscripts
|
||||
|
||||
@ -1,7 +1,28 @@
|
||||
require 'puppetlabs_spec_helper/rake_tasks'
|
||||
require 'puppet-lint/tasks/puppet-lint'
|
||||
require 'rspec-system/rake_task'
|
||||
require 'puppet-syntax/tasks/puppet-syntax'
|
||||
|
||||
PuppetLint.configuration.send('disable_80chars')
|
||||
PuppetLint.configuration.send('disable_class_inherits_from_params_class')
|
||||
PuppetLint.configuration.send('disable_documentation')
|
||||
PuppetLint.configuration.send('disable_quoted_booleans')
|
||||
PuppetLint.configuration.send('disable_autoloader_layout')
|
||||
|
||||
exclude_paths = [
|
||||
"pkg/**/*",
|
||||
"vendor/**/*",
|
||||
"spec/**/*",
|
||||
]
|
||||
PuppetLint.configuration.ignore_paths = exclude_paths
|
||||
PuppetSyntax.exclude_paths = exclude_paths
|
||||
|
||||
desc "Acceptance Tests"
|
||||
RSpec::Core::RakeTask.new(:acceptance) do |t|
|
||||
t.pattern = 'spec/acceptance'
|
||||
end
|
||||
|
||||
desc "Test Suite"
|
||||
task :test => [
|
||||
:lint,
|
||||
:syntax,
|
||||
:spec
|
||||
]
|
||||
@ -1,14 +1,12 @@
|
||||
#
|
||||
# Converts the array to a csv string
|
||||
#
|
||||
#
|
||||
# $array = [ 'string1', 'string2', 'string3' ]
|
||||
#
|
||||
# becomes:
|
||||
#
|
||||
# $string = "string1,string2,string3"
|
||||
#
|
||||
|
||||
module Puppet::Parser::Functions
|
||||
newfunction(:array2csv, :type => :rvalue, :doc => <<-'EOS'
|
||||
Returns a sorted csv formatted string from an array in the form
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
#
|
||||
# Converts the hash to a csv string
|
||||
#
|
||||
#
|
||||
# $hash = {
|
||||
# HOME => '/home/user',
|
||||
# ENV1 => 'env1',
|
||||
@ -12,7 +11,6 @@
|
||||
#
|
||||
# $string = "HOME='/home/user',ENV1='env1',SECRET='secret'"
|
||||
#
|
||||
|
||||
module Puppet::Parser::Functions
|
||||
newfunction(:hash2csv, :type => :rvalue, :doc => <<-'EOS'
|
||||
Returns a csv formatted string from an hash in the form
|
||||
|
||||
@ -1,6 +1,16 @@
|
||||
# Class: supervisord::config
|
||||
#
|
||||
# Configuration class for supervisor init and conf directories
|
||||
#
|
||||
class supervisord::config inherits supervisord {
|
||||
|
||||
file { [ "${supervisord::config_include}", "${supervisord::log_path}"]:
|
||||
file { $supervisord::config_include:
|
||||
ensure => directory,
|
||||
owner => 'root',
|
||||
mode => '0755'
|
||||
}
|
||||
|
||||
file { $supervisord::log_path:
|
||||
ensure => directory,
|
||||
owner => 'root',
|
||||
mode => '0755'
|
||||
@ -15,30 +25,26 @@ class supervisord::config inherits supervisord {
|
||||
}
|
||||
|
||||
if $supervisord::install_init {
|
||||
|
||||
$osname = downcase($::osfamily)
|
||||
|
||||
file { '/etc/init.d/supervisord':
|
||||
ensure => present,
|
||||
owner => 'root',
|
||||
mode => '0755',
|
||||
content => template("supervisord/init/${osname}_init.erb")
|
||||
content => template("supervisord/init/${::osfamily}/init.erb")
|
||||
}
|
||||
|
||||
if $supervisord::init_extras {
|
||||
file { $supervisord::init_extras:
|
||||
if $supervisord::init_defaults {
|
||||
file { $supervisord::init_defaults:
|
||||
ensure => present,
|
||||
owner => 'root',
|
||||
mode => '0755',
|
||||
content => template("supervisord/init/${osname}_extra.erb")
|
||||
content => template("supervisord/init/${::osfamily}/defaults.erb")
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
concat { $supervisord::config_file:
|
||||
owner => 'root',
|
||||
group => 'root',
|
||||
group => '0',
|
||||
mode => '0755'
|
||||
}
|
||||
|
||||
|
||||
@ -1,8 +1,16 @@
|
||||
# Define: supervisord::eventlistener
|
||||
#
|
||||
# This define creates an eventlistener configuration file
|
||||
#
|
||||
# Documentation on parameters available at:
|
||||
# http://supervisord.org/configuration.html#eventlistener-x-section-settings
|
||||
#
|
||||
define supervisord::eventlistener(
|
||||
$command,
|
||||
$ensure = present,
|
||||
$ensure_process = 'running',
|
||||
$buffer_size = 10,
|
||||
$events = undef,
|
||||
$buffer_size = undef,
|
||||
$result_handler = undef,
|
||||
$env_var = undef,
|
||||
$process_name = undef,
|
||||
@ -15,16 +23,16 @@ define supervisord::eventlistener(
|
||||
$startretries = undef,
|
||||
$exitcodes = undef,
|
||||
$stopsignal = undef,
|
||||
$stopwaitsec = undef,
|
||||
$stopwaitsecs = undef,
|
||||
$stopasgroup = undef,
|
||||
$killasgroup = undef,
|
||||
$user = undef,
|
||||
$redirect_stderr = undef,
|
||||
$stdout_logfile = "${supervisord::log_path}/eventlistener_${name}.log",
|
||||
$stdout_logfile = "eventlistener_${name}.log",
|
||||
$stdout_logfile_maxbytes = undef,
|
||||
$stdout_logfile_backups = undef,
|
||||
$stdout_events_enabled = undef,
|
||||
$stderr_logfile = "${supervisord::log_path}/eventlistener_${name}.error",
|
||||
$stderr_logfile = "eventlistener_${name}.error",
|
||||
$stderr_logfile_maxbytes = undef,
|
||||
$stderr_logfile_backups = undef,
|
||||
$stderr_events_enabled = undef,
|
||||
@ -36,11 +44,45 @@ define supervisord::eventlistener(
|
||||
|
||||
include supervisord
|
||||
|
||||
# parameter validation
|
||||
validate_string($command)
|
||||
validate_re($ensure_process, ['running', 'stopped', 'removed'])
|
||||
validate_re($buffer_size, '^\d+')
|
||||
if $events { validate_array($events) }
|
||||
if $result_handler { validate_string($result_handler) }
|
||||
if $numprocs { validate_re($numprocs, '^\d+')}
|
||||
if $numprocs_start { validate_re($numprocs_start, '^\d+')}
|
||||
if $priority { validate_re($priority, '^\d+') }
|
||||
if $autostart { validate_bool($autostart) }
|
||||
if $autorestart { validate_re($autorestart, ['true', 'false', 'unexpected']) }
|
||||
if $startsecs { validate_re($startsecs, '^\d+')}
|
||||
if $startretries { validate_re($startretries, '^\d+')}
|
||||
if $exitcodes { validate_string($exitcodes)}
|
||||
if $stopsignal { validate_re($stopsignal, ['TERM', 'HUP', 'INT', 'QUIT', 'KILL', 'USR1', 'USR2']) }
|
||||
if $stopwaitsecs { validate_re($stopwaitsecs, '^\d+')}
|
||||
if $stopasgroup { validate_bool($stopasgroup) }
|
||||
if $killasgroup { validate_bool($killasgroup) }
|
||||
if $user { validate_string($user) }
|
||||
if $redirect_stderr { validate_bool($redirect_stderr) }
|
||||
validate_string($stdout_logfile)
|
||||
if $stdout_logfile_maxbytes { validate_string($stdout_logfile_maxbytes) }
|
||||
if $stdout_logfile_backups { validate_re($stdout_logfile_backups, '^\d+')}
|
||||
if $stdout_events_enabled { validate_bool($stdout_events_enabled) }
|
||||
validate_string($stderr_logfile)
|
||||
if $stderr_logfile_maxbytes { validate_string($stderr_logfile_maxbytes) }
|
||||
if $stderr_logfile_backups { validate_re($stderr_logfile_backups, '^\d+')}
|
||||
if $stderr_events_enabled { validate_bool($stderr_events_enabled) }
|
||||
if $directory { validate_absolute_path($directory) }
|
||||
if $umask { validate_re($umask, '^[0-7][0-7][0-7]$') }
|
||||
|
||||
# convert environment data into a csv
|
||||
if $env_var {
|
||||
$env_hash = hiera($env_var)
|
||||
$env_hash = hiera_hash($env_var)
|
||||
validate_hash($env_hash)
|
||||
$env_string = hash2csv($env_hash)
|
||||
}
|
||||
elsif $environment {
|
||||
validate_hash($environment)
|
||||
$env_string = hash2csv($environment)
|
||||
}
|
||||
|
||||
@ -55,6 +97,22 @@ define supervisord::eventlistener(
|
||||
owner => 'root',
|
||||
mode => '0755',
|
||||
content => template('supervisord/conf/eventlistener.erb'),
|
||||
notify => Class['supervisord::service']
|
||||
notify => Class['supervisord::reload']
|
||||
}
|
||||
|
||||
case $ensure_process {
|
||||
'stopped': {
|
||||
supervisord::supervisorctl { "stop_${name}":
|
||||
command => 'stop',
|
||||
process => $name
|
||||
}
|
||||
}
|
||||
'removed': {
|
||||
supervisord::supervisorctl { "remove_${name}":
|
||||
command => 'remove',
|
||||
process => $name
|
||||
}
|
||||
}
|
||||
default: { }
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,7 +1,15 @@
|
||||
# Define: supervisord::fcgi_program
|
||||
#
|
||||
# This define creates an eventlistener configuration file
|
||||
#
|
||||
# Documentation on parameters available at:
|
||||
# http://supervisord.org/configuration.html#fcgi-program-x-section-settings
|
||||
#
|
||||
define supervisord::fcgi_program(
|
||||
$command,
|
||||
$socket,
|
||||
$ensure = present,
|
||||
$ensure_process = 'running',
|
||||
$socket_owner = undef,
|
||||
$socket_mode = undef,
|
||||
$env_var = undef,
|
||||
@ -15,17 +23,17 @@ define supervisord::fcgi_program(
|
||||
$startretries = undef,
|
||||
$exitcodes = undef,
|
||||
$stopsignal = undef,
|
||||
$stopwaitsec = undef,
|
||||
$stopwaitsecs = undef,
|
||||
$stopasgroup = undef,
|
||||
$killasgroup = undef,
|
||||
$user = undef,
|
||||
$redirect_stderr = undef,
|
||||
$stdout_logfile = "${supervisord::log_path}/fcgi-program_${name}.log",
|
||||
$stdout_logfile = "fcgi-program_${name}.log",
|
||||
$stdout_logfile_maxbytes = undef,
|
||||
$stdout_logfile_backups = undef,
|
||||
$stdout_capture_maxbytes = undef,
|
||||
$stdout_events_enabled = undef,
|
||||
$stderr_logfile = "${supervisord::log_path}/fcgi-program_${name}.error",
|
||||
$stderr_logfile = "fcgi-program_${name}.error",
|
||||
$stderr_logfile_maxbytes = undef,
|
||||
$stderr_logfile_backups = undef,
|
||||
$stderr_capture_maxbytes = undef,
|
||||
@ -38,11 +46,46 @@ define supervisord::fcgi_program(
|
||||
|
||||
include supervisord
|
||||
|
||||
# parameter validation
|
||||
validate_string($command)
|
||||
validate_re($ensure_process, ['running', 'stopped', 'removed'])
|
||||
validate_re($socket, ['^tcp:\/\/.*:\d+$', '^unix:\/\/\/'])
|
||||
if $process_name { validate_string($process_name) }
|
||||
if $numprocs { validate_re($numprocs, '^\d+')}
|
||||
if $numprocs_start { validate_re($numprocs_start, '^\d+')}
|
||||
if $priority { validate_re($priority, '^\d+') }
|
||||
if $autostart { validate_bool($autostart) }
|
||||
if $autorestart { validate_re($autorestart, ['true', 'false', 'unexpected']) }
|
||||
if $startsecs { validate_re($startsecs, '^\d+')}
|
||||
if $startretries { validate_re($startretries, '^\d+')}
|
||||
if $exitcodes { validate_string($exitcodes)}
|
||||
if $stopsignal { validate_re($stopsignal, ['TERM', 'HUP', 'INT', 'QUIT', 'KILL', 'USR1', 'USR2']) }
|
||||
if $stopwaitsecs { validate_re($stopwaitsecs, '^\d+')}
|
||||
if $stopasgroup { validate_bool($stopasgroup) }
|
||||
if $killasgroup { validate_bool($killasgroup) }
|
||||
if $user { validate_string($user) }
|
||||
if $redirect_stderr { validate_bool($redirect_stderr) }
|
||||
validate_string($stdout_logfile)
|
||||
if $stdout_logfile_maxbytes { validate_string($stdout_logfile_maxbytes) }
|
||||
if $stdout_logfile_backups { validate_re($stdout_logfile_backups, '^\d+')}
|
||||
if $stdout_capture_maxbytes { validate_string($stdout_capture_maxbytes) }
|
||||
if $stdout_events_enabled { validate_bool($stdout_events_enabled) }
|
||||
validate_string($stderr_logfile)
|
||||
if $stderr_logfile_maxbytes { validate_string($stderr_logfile_maxbytes) }
|
||||
if $stderr_logfile_backups { validate_re($stderr_logfile_backups, '^\d+')}
|
||||
if $stderr_capture_maxbytes { validate_string($stderr_capture_maxbytes) }
|
||||
if $stderr_events_enabled { validate_bool($stderr_events_enabled) }
|
||||
if $directory { validate_absolute_path($directory) }
|
||||
if $umask { validate_re($umask, '^[0-7][0-7][0-7]$') }
|
||||
|
||||
# convert environment data into a csv
|
||||
if $env_var {
|
||||
$env_hash = hiera($env_var)
|
||||
$env_hash = hiera_hash($env_var)
|
||||
validate_hash($env_hash)
|
||||
$env_string = hash2csv($env_hash)
|
||||
}
|
||||
elsif $environment {
|
||||
validate_hash($environment)
|
||||
$env_string = hash2csv($environment)
|
||||
}
|
||||
|
||||
@ -53,6 +96,22 @@ define supervisord::fcgi_program(
|
||||
owner => 'root',
|
||||
mode => '0755',
|
||||
content => template('supervisord/conf/fcgi_program.erb'),
|
||||
notify => Class['supervisord::service']
|
||||
notify => Class['supervisord::reload']
|
||||
}
|
||||
|
||||
case $ensure_process {
|
||||
'stopped': {
|
||||
supervisord::supervisorctl { "stop_${name}":
|
||||
command => 'stop',
|
||||
process => $name
|
||||
}
|
||||
}
|
||||
'removed': {
|
||||
supervisord::supervisorctl { "remove_${name}":
|
||||
command => 'remove',
|
||||
process => $name
|
||||
}
|
||||
}
|
||||
default: { }
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,3 +1,10 @@
|
||||
# Define: supervisord::group
|
||||
#
|
||||
# This define creates an group configuration file
|
||||
#
|
||||
# Documentation on parameters available at:
|
||||
# http://supervisord.org/configuration.html#group-x-section-settings
|
||||
#
|
||||
define supervisord::group (
|
||||
$programs,
|
||||
$ensure = present,
|
||||
@ -6,6 +13,10 @@ define supervisord::group (
|
||||
|
||||
include supervisord
|
||||
|
||||
# parameter validation
|
||||
validate_array($programs)
|
||||
if $priority { validate_re($priority, '^\d+', "invalid priority value of: ${priority}") }
|
||||
|
||||
$progstring = array2csv($programs)
|
||||
$conf = "${supervisord::config_include}/group_${name}.conf"
|
||||
|
||||
@ -13,6 +24,7 @@ define supervisord::group (
|
||||
ensure => $ensure,
|
||||
owner => 'root',
|
||||
mode => '0755',
|
||||
content => template('supervisord/conf/group.erb')
|
||||
content => template('supervisord/conf/group.erb'),
|
||||
notify => Class['supervisord::reload']
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,12 +1,18 @@
|
||||
# This class installs supervisord and configured it to run on boot
|
||||
# Class: supervisord
|
||||
#
|
||||
# This class installs supervisord via pip
|
||||
#
|
||||
class supervisord(
|
||||
$package_ensure = $supervisord::params::package_ensure,
|
||||
$package_provider = $supervisord::params::package_provider,
|
||||
$service_ensure = $supervisord::params::service_ensure,
|
||||
$service_name = $supervisord::params::service_name,
|
||||
$install_init = $supervisord::params::install_init,
|
||||
$install_pip = false,
|
||||
$init_extras = $supervisord::params::init_extras,
|
||||
$init_defaults = $supervisord::params::init_defaults,
|
||||
$setuptools_url = $supervisord::params::setuptools_url,
|
||||
$executable = $supervisord::params::executable,
|
||||
$executable_ctl = $supervisord::params::executable_ctl,
|
||||
|
||||
$log_path = $supervisord::params::log_path,
|
||||
$log_file = $supervisord::params::log_file,
|
||||
@ -19,20 +25,20 @@ class supervisord(
|
||||
$nodaemon = $supervisord::params::nodaemon,
|
||||
$minfds = $supervisord::params::minfds,
|
||||
$minprocs = $supervisord::params::minprocs,
|
||||
$config_path = $supervisord::params::config_path,
|
||||
$config_include = $supervisord::params::config_include,
|
||||
$config_file = $supervisord::params::config_file,
|
||||
$config_dirs = undef,
|
||||
$umask = $supervisord::params::umask,
|
||||
|
||||
$unix_socket = $supervisord::params::unix_socket,
|
||||
$unix_socket_file = $supervisord::params::unix_socket_file,
|
||||
$unix_socket_mode = $supervisord::params::unix_socket_mode,
|
||||
$unix_socket_owner = $supervisord::params::unix_socket_owner,
|
||||
$unix_scoket_group = $supervisord::params::unix_socket_group,
|
||||
$unix_socket_group = $supervisord::params::unix_socket_group,
|
||||
|
||||
$inet_server = $supervisord::params::inet_server,
|
||||
$inet_server_hostname = $supervisord::params::inet_hostname,
|
||||
$inet_server_port = $supervisord::params::inet_port,
|
||||
$inet_server_hostname = $supervisord::params::inet_server_hostname,
|
||||
$inet_server_port = $supervisord::params::inet_server_port,
|
||||
|
||||
$unix_auth = false,
|
||||
$unix_username = undef,
|
||||
@ -47,26 +53,76 @@ class supervisord(
|
||||
$childlogdir = undef,
|
||||
$environment = undef,
|
||||
$env_var = undef,
|
||||
$directory = undef,
|
||||
$strip_ansi = false,
|
||||
$nocleanup = false
|
||||
$nocleanup = false,
|
||||
|
||||
$eventlisteners = {},
|
||||
$fcgi_programs = {},
|
||||
$groups = {},
|
||||
$programs = {}
|
||||
|
||||
) inherits supervisord::params {
|
||||
|
||||
validate_bool($install_pip)
|
||||
validate_bool($install_init)
|
||||
validate_bool($nodaemon)
|
||||
validate_bool($unix_auth)
|
||||
validate_bool($inet_auth)
|
||||
validate_bool($strip_ansi)
|
||||
validate_bool($nocleanup)
|
||||
|
||||
validate_hash($eventlisteners)
|
||||
validate_hash($fcgi_programs)
|
||||
validate_hash($groups)
|
||||
validate_hash($programs)
|
||||
|
||||
validate_absolute_path($config_include)
|
||||
validate_absolute_path($log_path)
|
||||
validate_absolute_path($run_path)
|
||||
if $childlogdir { validate_absolute_path($childlogdir) }
|
||||
if $directory { validate_absolute_path($directory) }
|
||||
|
||||
$log_levels = ['^critical$', '^error$', '^warn$', '^info$', '^debug$', '^trace$', '^blather$']
|
||||
validate_re($log_level, $log_levels, "invalid log_level: ${log_level}")
|
||||
validate_re($umask, '^0[0-7][0-7]$', "invalid umask: ${umask}.")
|
||||
validate_re($unix_socket_mode, '^[0-7][0-7][0-7][0-7]$', "invalid unix_socket_mode: ${unix_socket_mode}")
|
||||
|
||||
if ! is_integer($logfile_backups) { fail("invalid logfile_backups: ${logfile_backups}.")}
|
||||
if ! is_integer($minfds) { fail("invalid minfds: ${minfds}.")}
|
||||
if ! is_integer($minprocs) { fail("invalid minprocs: ${minprocs}.")}
|
||||
if ! is_integer($inet_server_port) { fail("invalid inet_server_port: ${inet_server_port}.")}
|
||||
|
||||
if $env_var {
|
||||
validate_hash($env_var)
|
||||
$env_hash = hiera($env_var)
|
||||
$env_string = hash2csv($env_hash)
|
||||
}
|
||||
elsif $environment {
|
||||
validate_hash($environment)
|
||||
$env_string = hash2csv($environment)
|
||||
}
|
||||
|
||||
if $config_dirs {
|
||||
validate_array($config_dirs)
|
||||
$config_include_string = join($config_dirs, " ")
|
||||
}
|
||||
else {
|
||||
$config_include_string = "${config_include}/*.conf"
|
||||
}
|
||||
|
||||
create_resources('supervisord::eventlistener', $eventlisteners)
|
||||
create_resources('supervisord::fcgi_program', $fcgi_programs)
|
||||
create_resources('supervisord::group', $groups)
|
||||
create_resources('supervisord::program', $programs)
|
||||
|
||||
if $install_pip {
|
||||
include supervisord::pip
|
||||
Class['supervisord::pip'] -> Class['supervisord::install']
|
||||
}
|
||||
|
||||
include supervisord::install, supervisord::config, supervisord::service
|
||||
include supervisord::install, supervisord::config, supervisord::service, supervisord::reload
|
||||
|
||||
Class['supervisord::install'] -> Class['supervisord::config'] ~> Class['supervisord::service']
|
||||
|
||||
Class['supervisord::reload'] -> Supervisord::Supervisorctl <| |>
|
||||
}
|
||||
|
||||
@ -1,6 +1,10 @@
|
||||
# Class supervisord::install
|
||||
#
|
||||
# Installs supervisor package (defaults to using pip)
|
||||
#
|
||||
class supervisord::install inherits supervisord {
|
||||
package { 'supervisor':
|
||||
ensure => $supervisord::package_ensure,
|
||||
provider => 'pip'
|
||||
provider => $supervisord::package_provider
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,13 +1,21 @@
|
||||
# Class: supervisord::params
|
||||
#
|
||||
# Default parameters for supervisord
|
||||
#
|
||||
class supervisord::params {
|
||||
# default supervisord params
|
||||
$package_ensure = 'installed'
|
||||
$package_provider = 'pip'
|
||||
$service_ensure = 'running'
|
||||
$service_name = 'supervisord'
|
||||
$package_name = 'supervisor'
|
||||
$executable = '/usr/local/bin/supervisord'
|
||||
$executable = 'supervisord'
|
||||
$executable_ctl = 'supervisorctl'
|
||||
|
||||
$run_path = '/var/run'
|
||||
$pid_file = "${run_path}/supervisord.pid"
|
||||
$pid_file = 'supervisord.pid'
|
||||
$log_path = '/var/log/supervisor'
|
||||
$log_file = "${log_path}/supervisord.log"
|
||||
$log_file = 'supervisord.log'
|
||||
$logfile_maxbytes = '50MB'
|
||||
$logfile_backups = '10'
|
||||
$log_level = 'info'
|
||||
@ -20,7 +28,7 @@ class supervisord::params {
|
||||
$setuptools_url = 'https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py'
|
||||
|
||||
$unix_socket = true
|
||||
$unix_socket_file = "${run_path}/supervisor.sock"
|
||||
$unix_socket_file = 'supervisor.sock'
|
||||
$unix_socket_mode = '0700'
|
||||
$unix_socket_owner = 'nobody'
|
||||
|
||||
@ -31,17 +39,17 @@ class supervisord::params {
|
||||
|
||||
case $::osfamily {
|
||||
'RedHat': {
|
||||
$init_extras = '/etc/sysconfig/supervisord'
|
||||
$init_defaults = '/etc/sysconfig/supervisord'
|
||||
$unix_socket_group = 'nobody'
|
||||
$install_init = true
|
||||
}
|
||||
'Debian': {
|
||||
$init_extras = '/etc/default/supervisor'
|
||||
$init_defaults = '/etc/default/supervisor'
|
||||
$unix_socket_group = 'nogroup'
|
||||
$install_init = true
|
||||
}
|
||||
default: {
|
||||
$init_extras = false
|
||||
$init_defaults = false
|
||||
$unix_socket_group = 'nogroup'
|
||||
$install_init = false
|
||||
}
|
||||
|
||||
@ -1,8 +1,10 @@
|
||||
# Class: supervisord::pip
|
||||
#
|
||||
# Optional class to install setuptool and pip
|
||||
#
|
||||
class supervisord::pip inherits supervisord {
|
||||
|
||||
Exec {
|
||||
path => '/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin'
|
||||
}
|
||||
Exec { path => [ '/usr/bin/', '/usr/local/bin', '/bin', '/usr/local/sbin', '/usr/sbin', '/sbin' ] }
|
||||
|
||||
exec { 'install_setuptools':
|
||||
command => "curl ${supervisord::setuptools_url} | python",
|
||||
|
||||
@ -1,6 +1,14 @@
|
||||
# Define: supervisord::program
|
||||
#
|
||||
# This define creates an program configuration file
|
||||
#
|
||||
# Documentation on parameters available at:
|
||||
# http://supervisord.org/configuration.html#program-x-section-settings
|
||||
#
|
||||
define supervisord::program(
|
||||
$command,
|
||||
$ensure = present,
|
||||
$ensure_process = 'running',
|
||||
$env_var = undef,
|
||||
$process_name = undef,
|
||||
$numprocs = undef,
|
||||
@ -12,17 +20,17 @@ define supervisord::program(
|
||||
$startretries = undef,
|
||||
$exitcodes = undef,
|
||||
$stopsignal = undef,
|
||||
$stopwaitsec = undef,
|
||||
$stopwaitsecs = undef,
|
||||
$stopasgroup = undef,
|
||||
$killasgroup = undef,
|
||||
$user = undef,
|
||||
$redirect_stderr = undef,
|
||||
$stdout_logfile = "${supervisord::log_path}/program_${name}.log",
|
||||
$stdout_logfile = "program_${name}.log",
|
||||
$stdout_logfile_maxbytes = undef,
|
||||
$stdout_logfile_backups = undef,
|
||||
$stdout_capture_maxbytes = undef,
|
||||
$stdout_events_enabled = undef,
|
||||
$stderr_logfile = "${supervisord::log_path}/program_${name}.error",
|
||||
$stderr_logfile = "program_${name}.error",
|
||||
$stderr_logfile_maxbytes = undef,
|
||||
$stderr_logfile_backups = undef,
|
||||
$stderr_capture_maxbytes = undef,
|
||||
@ -35,11 +43,45 @@ define supervisord::program(
|
||||
|
||||
include supervisord
|
||||
|
||||
# parameter validation
|
||||
validate_string($command)
|
||||
validate_re($ensure_process, ['running', 'stopped', 'removed'])
|
||||
if $process_name { validate_string($process_name) }
|
||||
if $numprocs { validate_re($numprocs, '^\d+')}
|
||||
if $numprocs_start { validate_re($numprocs_start, '^\d+')}
|
||||
if $priority { validate_re($priority, '^\d+') }
|
||||
if $autostart { validate_bool($autostart) }
|
||||
if $autorestart { validate_re($autorestart, ['true', 'false', 'unexpected']) }
|
||||
if $startsecs { validate_re($startsecs, '^\d+')}
|
||||
if $startretries { validate_re($startretries, '^\d+')}
|
||||
if $exitcodes { validate_string($exitcodes)}
|
||||
if $stopsignal { validate_re($stopsignal, ['TERM', 'HUP', 'INT', 'QUIT', 'KILL', 'USR1', 'USR2']) }
|
||||
if $stopwaitsecs { validate_re($stopwaitsecs, '^\d+')}
|
||||
if $stopasgroup { validate_bool($stopasgroup) }
|
||||
if $killasgroup { validate_bool($killasgroup) }
|
||||
if $user { validate_string($user) }
|
||||
if $redirect_stderr { validate_bool($redirect_stderr) }
|
||||
validate_string($stdout_logfile)
|
||||
if $stdout_logfile_maxbytes { validate_string($stdout_logfile_maxbytes) }
|
||||
if $stdout_logfile_backups { validate_re($stdout_logfile_backups, '^\d+')}
|
||||
if $stdout_capture_maxbytes { validate_string($stdout_capture_maxbytes) }
|
||||
if $stdout_events_enabled { validate_bool($stdout_events_enabled) }
|
||||
validate_string($stderr_logfile)
|
||||
if $stderr_logfile_maxbytes { validate_string($stderr_logfile_maxbytes) }
|
||||
if $stderr_logfile_backups { validate_re($stderr_logfile_backups, '^\d+')}
|
||||
if $stderr_capture_maxbytes { validate_string($stderr_capture_maxbytes) }
|
||||
if $stderr_events_enabled { validate_bool($stderr_events_enabled) }
|
||||
if $directory { validate_absolute_path($directory) }
|
||||
if $umask { validate_re($umask, '^[0-7][0-7][0-7]$') }
|
||||
|
||||
# convert environment data into a csv
|
||||
if $env_var {
|
||||
$env_hash = hiera($env_var)
|
||||
$env_hash = hiera_hash($env_var)
|
||||
validate_hash($env_hash)
|
||||
$env_string = hash2csv($env_hash)
|
||||
}
|
||||
elsif $environment {
|
||||
validate_hash($environment)
|
||||
$env_string = hash2csv($environment)
|
||||
}
|
||||
|
||||
@ -50,6 +92,22 @@ define supervisord::program(
|
||||
owner => 'root',
|
||||
mode => '0755',
|
||||
content => template('supervisord/conf/program.erb'),
|
||||
notify => Class['supervisord::service']
|
||||
notify => Class['supervisord::reload']
|
||||
}
|
||||
|
||||
case $ensure_process {
|
||||
'stopped': {
|
||||
supervisord::supervisorctl { "stop_${name}":
|
||||
command => 'stop',
|
||||
process => $name
|
||||
}
|
||||
}
|
||||
'removed': {
|
||||
supervisord::supervisorctl { "remove_${name}":
|
||||
command => 'remove',
|
||||
process => $name
|
||||
}
|
||||
}
|
||||
default: { }
|
||||
}
|
||||
}
|
||||
|
||||
21
dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/reload.pp
vendored
Normal file
21
dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/reload.pp
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
# Class: supervisord::reload
|
||||
#
|
||||
# Class to reread and update supervisord with supervisorctl
|
||||
#
|
||||
class supervisord::reload {
|
||||
|
||||
Exec { path => [ '/usr/bin/', '/usr/local/bin' ] }
|
||||
|
||||
$supervisorctl = $::supervisord::executable_ctl
|
||||
|
||||
exec { 'supervisorctl_reread':
|
||||
command => "${supervisorctl} reread",
|
||||
refreshonly => true,
|
||||
returns => [0, 2],
|
||||
}
|
||||
exec { 'supervisorctl_update':
|
||||
command => "${supervisorctl} update",
|
||||
refreshonly => true,
|
||||
returns => [0, 2],
|
||||
}
|
||||
}
|
||||
@ -1,5 +1,9 @@
|
||||
# Class: supervisord::service
|
||||
#
|
||||
# Class for the supervisord service
|
||||
#
|
||||
class supervisord::service inherits supervisord {
|
||||
service { 'supervisord':
|
||||
service { $supervisord::service_name:
|
||||
ensure => $supervisord::service_ensure,
|
||||
enable => true,
|
||||
hasrestart => true,
|
||||
|
||||
29
dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/supervisorctl.pp
vendored
Normal file
29
dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/manifests/supervisorctl.pp
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
# Define: supervisord:supervisorctl
|
||||
#
|
||||
# This define executes command with the supervisorctl tool
|
||||
#
|
||||
define supervisord::supervisorctl(
|
||||
$command,
|
||||
$process = undef,
|
||||
$refreshonly = false
|
||||
) {
|
||||
|
||||
Exec { path => [ '/usr/bin/', '/usr/local/bin' ] }
|
||||
|
||||
validate_string($command)
|
||||
validate_string($process)
|
||||
|
||||
$supervisorctl = $::supervisord::executable_ctl
|
||||
|
||||
if $process {
|
||||
$cmd = join([$supervisorctl, $command, $process], ' ')
|
||||
}
|
||||
else {
|
||||
$cmd = join([$supervisorctl, $command])
|
||||
}
|
||||
|
||||
exec { "supervisorctl_command_${name}":
|
||||
command => $cmd,
|
||||
refreshonly => $refreshonly
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,10 @@
|
||||
HOSTS:
|
||||
centos-65-i386:
|
||||
roles:
|
||||
- master
|
||||
platform: el-6-i386
|
||||
box : centos-65-i386-virtualbox-nocm
|
||||
box_url : http://puppet-vagrant-boxes.puppetlabs.com/centos-65-i386-virtualbox-nocm.box
|
||||
hypervisor : vagrant
|
||||
CONFIG:
|
||||
type: foss
|
||||
@ -0,0 +1,10 @@
|
||||
HOSTS:
|
||||
centos-65-x64:
|
||||
roles:
|
||||
- master
|
||||
platform: el-6-x86_64
|
||||
box : centos-65-x64-virtualbox-nocm
|
||||
box_url : http://puppet-vagrant-boxes.puppetlabs.com/centos-65-x64-virtualbox-nocm.box
|
||||
hypervisor : vagrant
|
||||
CONFIG:
|
||||
type: foss
|
||||
@ -0,0 +1,10 @@
|
||||
HOSTS:
|
||||
debian-73-i386:
|
||||
roles:
|
||||
- master
|
||||
platform: debian-7-i386
|
||||
box : debian-73-i386-virtualbox-nocm
|
||||
box_url : http://puppet-vagrant-boxes.puppetlabs.com/debian-73-i386-virtualbox-nocm.box
|
||||
hypervisor : vagrant
|
||||
CONFIG:
|
||||
type: foss
|
||||
@ -0,0 +1,10 @@
|
||||
HOSTS:
|
||||
debian-73-x64:
|
||||
roles:
|
||||
- master
|
||||
platform: debian-7-amd64
|
||||
box : debian-73-x64-virtualbox-nocm
|
||||
box_url : http://puppet-vagrant-boxes.puppetlabs.com/debian-73-x64-virtualbox-nocm.box
|
||||
hypervisor : vagrant
|
||||
CONFIG:
|
||||
type: foss
|
||||
10
dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/acceptance/nodesets/default.yml
vendored
Normal file
10
dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/acceptance/nodesets/default.yml
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
HOSTS:
|
||||
debian-73-x64:
|
||||
roles:
|
||||
- master
|
||||
platform: debian-7-amd64
|
||||
box : debian-73-x64-virtualbox-nocm
|
||||
box_url : http://puppet-vagrant-boxes.puppetlabs.com/debian-73-x64-virtualbox-nocm.box
|
||||
hypervisor : vagrant
|
||||
CONFIG:
|
||||
type: foss
|
||||
114
dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/acceptance/supervisord_spec.rb
vendored
Normal file
114
dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/acceptance/supervisord_spec.rb
vendored
Normal file
@ -0,0 +1,114 @@
|
||||
require 'spec_helper_acceptance'
|
||||
|
||||
describe 'supervisord install' do
|
||||
|
||||
context 'default parameters with pip and init install' do
|
||||
it 'should work with no errors' do
|
||||
pp = <<-EOS
|
||||
class { 'supervisord': install_pip => true, install_init => true}
|
||||
EOS
|
||||
|
||||
expect(apply_manifest(pp).exit_code).to_not eq(1)
|
||||
expect(apply_manifest(pp).exit_code).to eq(0)
|
||||
end
|
||||
|
||||
describe service('supervisord') do
|
||||
it { should be_enabled }
|
||||
it { should be_running }
|
||||
it 'should restart successfully' do
|
||||
cmd="service supervisord restart"
|
||||
expect(shell(cmd).exit_code).to_not eq(1)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'supervisord::program' do
|
||||
context 'create a program config' do
|
||||
it 'should install a program file' do
|
||||
|
||||
pp = <<-EOS
|
||||
include supervisord
|
||||
supervisord::program { 'test':
|
||||
command => 'echo',
|
||||
priority => '100',
|
||||
environment => {
|
||||
'HOME' => '/root',
|
||||
'PATH' => '/bin',
|
||||
}
|
||||
}
|
||||
EOS
|
||||
|
||||
expect(apply_manifest(pp).exit_code).to_not eq(1)
|
||||
expect(apply_manifest(pp).exit_code).to eq(0)
|
||||
end
|
||||
|
||||
it 'should contain the correct values' do
|
||||
cmd='grep command=echo /etc/supervisor.d/program_test.conf'
|
||||
expect(shell(cmd).exit_code).to eq(0)
|
||||
cmd='grep priority=100 /etc/supervisor.d/program_test.conf'
|
||||
expect(shell(cmd).exit_code).to eq(0)
|
||||
cmd='grep "environment=" /etc/supervisor.d/program_test.conf'
|
||||
expect(shell(cmd).exit_code).to eq(0)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'supervisord::fcgi-program' do
|
||||
context 'create fcgi-program config' do
|
||||
it 'should install a fcgi-program file' do
|
||||
|
||||
pp = <<-EOS
|
||||
include supervisord
|
||||
supervisord::fcgi_program { 'test':
|
||||
socket => 'tcp://localhost:1000',
|
||||
command => 'echo',
|
||||
priority => '100',
|
||||
environment => {
|
||||
'HOME' => '/root',
|
||||
'PATH' => '/bin',
|
||||
}
|
||||
}
|
||||
EOS
|
||||
|
||||
expect(apply_manifest(pp).exit_code).to_not eq(1)
|
||||
expect(apply_manifest(pp).exit_code).to eq(0)
|
||||
end
|
||||
|
||||
it 'should contain the correct values' do
|
||||
cmd='grep socket=tcp://localhost:1000 /etc/supervisor.d/fcgi-program_test.conf'
|
||||
expect(shell(cmd).exit_code).to eq(0)
|
||||
cmd="grep command=echo /etc/supervisor.d/fcgi-program_test.conf"
|
||||
expect(shell(cmd).exit_code).to eq(0)
|
||||
cmd="grep priority=100 /etc/supervisor.d/fcgi-program_test.conf"
|
||||
expect(shell(cmd).exit_code).to eq(0)
|
||||
cmd='grep "environment=" /etc/supervisor.d/fcgi-program_test.conf'
|
||||
expect(shell(cmd).exit_code).to eq(0)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'supervisord::group' do
|
||||
context 'create group config' do
|
||||
it 'should install a group config' do
|
||||
|
||||
pp = <<-EOS
|
||||
include supervisord
|
||||
supervisord::group { 'test':
|
||||
programs => ['test'],
|
||||
priority => '100',
|
||||
}
|
||||
EOS
|
||||
|
||||
expect(apply_manifest(pp).exit_code).to_not eq(1)
|
||||
expect(apply_manifest(pp).exit_code).to eq(0)
|
||||
end
|
||||
|
||||
it 'should contain the correct values' do
|
||||
cmd='grep "programs=test" /etc/supervisor.d/group_test.conf'
|
||||
expect(shell(cmd).exit_code).to eq(0)
|
||||
cmd="grep priority=100 /etc/supervisor.d/group_test.conf"
|
||||
expect(shell(cmd).exit_code).to eq(0)
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -3,14 +3,26 @@ require 'spec_helper'
|
||||
describe 'supervisord' do
|
||||
|
||||
concatdir = '/var/lib/puppet/concat'
|
||||
configfile = '/etc/supervisord.conf'
|
||||
let(:facts) {{ :concat_basedir => concatdir }}
|
||||
|
||||
it { should contain_class('supervisord') }
|
||||
it { should contain_class('supervisord::install') }
|
||||
it { should contain_class('supervisord::config') }
|
||||
it { should contain_class('supervisord::service') }
|
||||
it { should contain_concat__fragment('supervisord_main').with_content(/logfile/) }
|
||||
it { should contain_class('supervisord::params') }
|
||||
it { should contain_class('supervisord::reload') }
|
||||
it { should contain_package('supervisor') }
|
||||
|
||||
describe '#service_name' do
|
||||
context 'default' do
|
||||
it { should contain_service('supervisord') }
|
||||
end
|
||||
|
||||
context 'specified' do
|
||||
let(:params) {{ :service_name => 'myservicename' }}
|
||||
it { should contain_service('myservicename') }
|
||||
end
|
||||
end
|
||||
|
||||
describe '#install_pip' do
|
||||
context 'default' do
|
||||
@ -18,8 +30,16 @@ describe 'supervisord' do
|
||||
end
|
||||
|
||||
context 'true' do
|
||||
let (:params) {{ :install_pip => true }}
|
||||
let(:params) {{ :install_pip => true }}
|
||||
it { should contain_class('supervisord::pip') }
|
||||
it { should contain_exec('install_setuptools') }
|
||||
it { should contain_exec('install_pip') }
|
||||
end
|
||||
|
||||
context 'true and RedHat' do
|
||||
let(:params) {{ :install_pip => true }}
|
||||
let(:facts) {{ :osfamily => 'RedHat', :concat_basedir => concatdir }}
|
||||
it { should contain_exec('pip_provider_name_fix') }
|
||||
end
|
||||
end
|
||||
|
||||
@ -28,11 +48,6 @@ describe 'supervisord' do
|
||||
it { should contain_class('supervisord').without_env_hash }
|
||||
it { should contain_class('supervisord').without_env_string }
|
||||
end
|
||||
#context 'is specified' do
|
||||
# let(:params) {{ :env_var => 'foovars' }}
|
||||
# let(:hiera_data) {{ :foovars => { 'key1' => 'value1', 'key2' => 'value2' } }}
|
||||
# it { should contain_concat__fragment('supervisord_main').with_content(/environment=key1='value1',key2='value2'/) }
|
||||
#end
|
||||
end
|
||||
|
||||
describe '#environment' do
|
||||
@ -41,7 +56,8 @@ describe 'supervisord' do
|
||||
end
|
||||
context 'is specified' do
|
||||
let(:params) {{ :environment => { 'key1' => 'value1', 'key2' => 'value2' } }}
|
||||
it { should contain_concat__fragment('supervisord_main').with_content(/environment=key1='value1',key2='value2'/) }
|
||||
it { should contain_concat__fragment('supervisord_main')\
|
||||
.with_content(/environment=key1='value1',key2='value2'/) }
|
||||
end
|
||||
end
|
||||
|
||||
@ -54,17 +70,20 @@ describe 'supervisord' do
|
||||
it { should_not contain_file('/etc/init.d/supervisord') }
|
||||
end
|
||||
|
||||
describe 'on supported OS'
|
||||
describe 'on supported OS' do
|
||||
context 'with Debian' do
|
||||
let(:facts) {{ :osfamily => 'Debian', :concat_basedir => concatdir }}
|
||||
it { should contain_file('/etc/init.d/supervisord') }
|
||||
it { should contain_file('/etc/default/supervisor') }
|
||||
end
|
||||
|
||||
context 'with RedHat' do
|
||||
let(:facts) {{ :osfamily => 'RedHat', :concat_basedir => concatdir }}
|
||||
it { should contain_file('/etc/init.d/supervisord') }
|
||||
it { should contain_file('/etc/sysconfig/supervisord') }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#unix_socket' do
|
||||
context 'default' do
|
||||
@ -89,10 +108,192 @@ describe 'supervisord' do
|
||||
describe '#run_path' do
|
||||
context 'default' do
|
||||
it { should_not contain_file('/var/run') }
|
||||
it { should contain_concat__fragment('supervisord_main') \
|
||||
.with_content(/pidfile=\/var\/run\/supervisord.pid$/) }
|
||||
end
|
||||
context 'custom setting' do
|
||||
let(:params) {{ :run_path => '/var/run/supervisord'}}
|
||||
it { should contain_file('/var/run/supervisord') }
|
||||
context 'is specified' do
|
||||
let(:params) {{ :run_path => '/opt/supervisord/run' }}
|
||||
it { should contain_file('/opt/supervisord/run') }
|
||||
it { should contain_concat__fragment('supervisord_main') \
|
||||
.with_content(/pidfile=\/opt\/supervisord\/run\/supervisord.pid$/) }
|
||||
end
|
||||
end
|
||||
|
||||
describe '#log_path' do
|
||||
context 'default' do
|
||||
it { should contain_file('/var/log/supervisor') }
|
||||
it { should contain_concat__fragment('supervisord_main') \
|
||||
.with_content(/logfile=\/var\/log\/supervisor\/supervisord.log$/) }
|
||||
end
|
||||
context 'is specified' do
|
||||
let(:params) {{ :log_path => '/opt/supervisord/logs' }}
|
||||
it { should contain_file('/opt/supervisord/logs')}
|
||||
it { should contain_concat__fragment('supervisord_main') \
|
||||
.with_content(/logfile=\/opt\/supervisord\/logs\/supervisord.log$/) }
|
||||
end
|
||||
end
|
||||
|
||||
describe '#config_include' do
|
||||
context 'default' do
|
||||
it { should contain_file('/etc/supervisor.d') }
|
||||
it { should contain_concat__fragment('supervisord_main') \
|
||||
.with_content(/files=\/etc\/supervisor.d\/\*.conf$/) }
|
||||
end
|
||||
context 'is specified' do
|
||||
let(:params) {{ :config_include => '/opt/supervisord/conf.d' }}
|
||||
it { should contain_file('/opt/supervisord/conf.d') }
|
||||
it { should contain_concat__fragment('supervisord_main') \
|
||||
.with_content(/files=\/opt\/supervisord\/conf.d\/\*.conf$/) }
|
||||
end
|
||||
end
|
||||
|
||||
describe '#config_dirs' do
|
||||
context 'is specified' do
|
||||
let(:params) {{ :config_dirs => ['/etc/supervisor.d/*.conf', '/opt/supervisor.d/*', '/usr/share/supervisor.d/*.config'] }}
|
||||
it { should contain_concat__fragment('supervisord_main') \
|
||||
.with_content(/files=\/etc\/supervisor.d\/\*.conf \/opt\/supervisor.d\/\* \/usr\/share\/supervisor.d\/\*.config$/) }
|
||||
end
|
||||
end
|
||||
|
||||
describe '#config_file' do
|
||||
context 'default' do
|
||||
it { should contain_file('/etc/supervisord.conf') }
|
||||
end
|
||||
context 'is specified' do
|
||||
let(:params) {{ :config_file => '/opt/supervisord/supervisor.conf' }}
|
||||
it { should contain_file('/opt/supervisord/supervisor.conf') }
|
||||
end
|
||||
end
|
||||
|
||||
describe '#nodaemon' do
|
||||
context 'default' do
|
||||
it { should contain_concat__fragment('supervisord_main') \
|
||||
.with_content(/nodaemon=false$/) }
|
||||
end
|
||||
context 'true' do
|
||||
let(:params) {{ :nodaemon => true }}
|
||||
it { should contain_concat__fragment('supervisord_main') \
|
||||
.with_content(/nodaemon=true$/) }
|
||||
end
|
||||
context 'invalid' do
|
||||
let(:params) {{ :nodaemon => 'invalid' }}
|
||||
it { expect { raise_error(Puppet::Error, /is not a boolean/) }}
|
||||
end
|
||||
end
|
||||
|
||||
describe '#minfds' do
|
||||
context 'default' do
|
||||
it { should contain_concat__fragment('supervisord_main') \
|
||||
.with_content(/minfds=1024$/) }
|
||||
end
|
||||
context 'specified' do
|
||||
let(:params) {{ :minfds => 2048 }}
|
||||
it { should contain_concat__fragment('supervisord_main') \
|
||||
.with_content(/minfds=2048$/) }
|
||||
end
|
||||
context 'invalid' do
|
||||
let(:params) {{ :minfds => 'string' }}
|
||||
it { expect { raise_error(Puppet::Error, /invalid minfds/) }}
|
||||
end
|
||||
end
|
||||
|
||||
describe '#minprocs' do
|
||||
context 'default' do
|
||||
it { should contain_concat__fragment('supervisord_main') \
|
||||
.with_content(/minprocs=200$/) }
|
||||
end
|
||||
context 'specified' do
|
||||
let(:params) {{ :minprocs => 300 }}
|
||||
it { should contain_concat__fragment('supervisord_main') \
|
||||
.with_content(/minprocs=300$/) }
|
||||
end
|
||||
context 'invalid' do
|
||||
let(:params) {{ :minfds => 'string' }}
|
||||
it { expect { raise_error(Puppet::Error, /invalid minprocs/) }}
|
||||
end
|
||||
end
|
||||
|
||||
describe '#strip_ansi' do
|
||||
context 'default' do
|
||||
it { should_not contain_concat__fragment('supervisord_main') \
|
||||
.with_content(/strip_ansi$/) }
|
||||
end
|
||||
context 'true' do
|
||||
let(:params) {{ :strip_ansi => true }}
|
||||
it { should contain_concat__fragment('supervisord_main') \
|
||||
.with_content(/strip_ansi=true$/) }
|
||||
end
|
||||
context 'invalid' do
|
||||
let(:params) {{ :strip_ansi => 'string' }}
|
||||
it { expect { raise_error(Puppet::Error, /is not a boolean/) }}
|
||||
end
|
||||
end
|
||||
|
||||
describe '#user' do
|
||||
context 'default' do
|
||||
it { should_not contain_concat__fragment('supervisord_main') \
|
||||
.with_content(/user$/) }
|
||||
end
|
||||
context 'specified' do
|
||||
let(:params) {{ :user => 'myuser' }}
|
||||
it { should contain_concat__fragment('supervisord_main') \
|
||||
.with_content(/user=myuser$/) }
|
||||
end
|
||||
end
|
||||
|
||||
describe '#identifier' do
|
||||
context 'default' do
|
||||
it { should_not contain_concat__fragment('supervisord_main') \
|
||||
.with_content(/identifier$/) }
|
||||
end
|
||||
context 'specified' do
|
||||
let(:params) {{ :identifier => 'myidentifier' }}
|
||||
it { should contain_concat__fragment('supervisord_main') \
|
||||
.with_content(/identifier=myidentifier$/) }
|
||||
end
|
||||
end
|
||||
|
||||
describe '#directory' do
|
||||
context 'default' do
|
||||
it { should_not contain_concat__fragment('supervisord_main') \
|
||||
.with_content(/directory$/) }
|
||||
end
|
||||
context 'specified' do
|
||||
let(:params) {{ :directory => '/opt/supervisord' }}
|
||||
it { should contain_concat__fragment('supervisord_main') \
|
||||
.with_content(/directory=\/opt\/supervisord$/) }
|
||||
end
|
||||
end
|
||||
|
||||
describe '#nocleanup' do
|
||||
context 'default' do
|
||||
it { should_not contain_concat__fragment('supervisord_main') \
|
||||
.with_content(/nocleanup$/) }
|
||||
end
|
||||
context 'true' do
|
||||
let(:params) {{ :nocleanup => true }}
|
||||
it { should contain_concat__fragment('supervisord_main') \
|
||||
.with_content(/nocleanup=true$/) }
|
||||
end
|
||||
context 'invalid' do
|
||||
let(:params) {{ :nocleanup => 'string' }}
|
||||
it { expect { raise_error(Puppet::Error, /is not a boolean/) }}
|
||||
end
|
||||
end
|
||||
|
||||
describe '#childlogdir' do
|
||||
context 'default' do
|
||||
it { should_not contain_concat__fragment('supervisord_main') \
|
||||
.with_content(/childlogdir$/) }
|
||||
end
|
||||
context 'specified' do
|
||||
let(:params) {{ :childlogdir => '/opt/supervisord/logdir' }}
|
||||
it { should contain_concat__fragment('supervisord_main') \
|
||||
.with_content(/childlogdir=\/opt\/supervisord\/logdir$/) }
|
||||
end
|
||||
context 'invalid' do
|
||||
let(:params) {{ :childlogdir => 'not_a_path' }}
|
||||
it { expect { raise_error(Puppet::Error, /is not an absolute path/) }}
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -2,14 +2,85 @@ require 'spec_helper'
|
||||
|
||||
describe 'supervisord::eventlistener', :type => :define do
|
||||
let(:title) {'foo'}
|
||||
let(:default_params) {{ :command => 'bar',
|
||||
:stdout_logfile => '/var/log/supervisor/eventlistener_foo.log',
|
||||
:stderr_logfile => '/var/log/supervisor/eventlistener_foo.error',
|
||||
}}
|
||||
let(:params) { default_params }
|
||||
let(:facts) {{ :concat_basedir => '/var/lib/puppet/concat' }}
|
||||
let(:default_params) do
|
||||
{
|
||||
:command => 'bar',
|
||||
:process_name => '%(process_num)s',
|
||||
:events => ['PROCESS_STATE', 'PROCESS_STATE_STARTING'],
|
||||
:buffer_size => 10,
|
||||
:numprocs => '1',
|
||||
:numprocs_start => '0',
|
||||
:priority => '999',
|
||||
:autostart => true,
|
||||
:autorestart => 'unexpected',
|
||||
:startsecs => '1',
|
||||
:startretries => '3',
|
||||
:exitcodes => '0,2',
|
||||
:stopsignal => 'TERM',
|
||||
:stopwaitsecs => '10',
|
||||
:stopasgroup => true,
|
||||
:killasgroup => true,
|
||||
:user => 'baz',
|
||||
:redirect_stderr => true,
|
||||
:stdout_logfile => 'eventlistener_foo.log',
|
||||
:stdout_logfile_maxbytes => '50MB',
|
||||
:stdout_logfile_backups => '10',
|
||||
:stdout_events_enabled => true,
|
||||
:stderr_logfile => 'eventlistener_foo.error',
|
||||
:stderr_logfile_maxbytes => '50MB',
|
||||
:stderr_logfile_backups => '10',
|
||||
:stderr_events_enabled => true,
|
||||
:environment => { 'env1' => 'value1', 'env2' => 'value2' },
|
||||
:directory => '/opt/supervisord/chroot',
|
||||
:umask => '022',
|
||||
:serverurl => 'AUTO'
|
||||
}
|
||||
end
|
||||
|
||||
it { should contain_supervisord__eventlistener('foo') }
|
||||
it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/command=bar/) }
|
||||
context 'default' do
|
||||
let(:params) { default_params }
|
||||
|
||||
it { should contain_supervisord__eventlistener('foo') }
|
||||
it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/\[eventlistener:foo\]/) }
|
||||
it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/command=bar/) }
|
||||
it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/process_name=\%\(process_num\)s/) }
|
||||
it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/events=PROCESS_STATE,PROCESS_STATE_STARTING/) }
|
||||
it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/buffer_size=10/) }
|
||||
it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/numprocs=1/) }
|
||||
it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/numprocs_start=0/) }
|
||||
it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/priority=999/) }
|
||||
it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/autostart=true/) }
|
||||
it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/startsecs=1/) }
|
||||
it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/startretries=3/) }
|
||||
it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/exitcodes=0,2/) }
|
||||
it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/stopsignal=TERM/) }
|
||||
it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/stopwaitsecs=10/) }
|
||||
it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/stopasgroup=true/) }
|
||||
it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/killasgroup=true/) }
|
||||
it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/user=baz/) }
|
||||
it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/redirect_stderr=true/) }
|
||||
it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/stdout_logfile=\/var\/log\/supervisor\/eventlistener_foo.log/) }
|
||||
it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/stdout_logfile_maxbytes=50MB/) }
|
||||
it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/stdout_logfile_backups=10/) }
|
||||
it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/stdout_events_enabled=true/) }
|
||||
it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/stderr_logfile=\/var\/log\/supervisor\/eventlistener_foo.error/) }
|
||||
it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/stderr_logfile_maxbytes=50MB/) }
|
||||
it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/stderr_logfile_backups=10/) }
|
||||
it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/stderr_events_enabled=true/) }
|
||||
it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/environment=env1='value1',env2='value2'/) }
|
||||
it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/directory=\/opt\/supervisord\/chroot/) }
|
||||
it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/umask=022/) }
|
||||
it { should contain_file('/etc/supervisor.d/eventlistener_foo.conf').with_content(/serverurl=AUTO/) }
|
||||
end
|
||||
|
||||
context 'ensure_process_stopped' do
|
||||
let(:params) { default_params.merge({ :ensure_process => 'stopped' }) }
|
||||
it { should contain_supervisord__supervisorctl('stop_foo') }
|
||||
end
|
||||
|
||||
context 'ensure_process_removed' do
|
||||
let(:params) { default_params.merge({ :ensure_process => 'removed' }) }
|
||||
it { should contain_supervisord__supervisorctl('remove_foo') }
|
||||
end
|
||||
end
|
||||
|
||||
@ -2,21 +2,87 @@ require 'spec_helper'
|
||||
|
||||
describe 'supervisord::fcgi_program', :type => :define do
|
||||
let(:title) {'foo'}
|
||||
let(:default_params) {{ :command => 'bar',
|
||||
:socket => 'tcp://localhost:1000',
|
||||
:stdout_logfile => '/var/log/supervisor/fcgi-program_foo.log',
|
||||
:stderr_logfile => '/var/log/supervisor/fcgi-program_foo.error',
|
||||
:user => 'baz'
|
||||
}}
|
||||
let(:params) { default_params }
|
||||
let(:facts) {{ :concat_basedir => '/var/lib/puppet/concat' }}
|
||||
let(:default_params) do
|
||||
{
|
||||
:command => 'bar',
|
||||
:socket => 'tcp://localhost:1000',
|
||||
:process_name => '%(process_num)s',
|
||||
:numprocs => '1',
|
||||
:numprocs_start => '0',
|
||||
:priority => '999',
|
||||
:autostart => true,
|
||||
:autorestart => 'unexpected',
|
||||
:startsecs => '1',
|
||||
:startretries => '3',
|
||||
:exitcodes => '0,2',
|
||||
:stopsignal => 'TERM',
|
||||
:stopwaitsecs => '10',
|
||||
:stopasgroup => true,
|
||||
:killasgroup => true,
|
||||
:user => 'baz',
|
||||
:redirect_stderr => true,
|
||||
:stdout_logfile => 'fcgi-program_foo.log',
|
||||
:stdout_logfile_maxbytes => '50MB',
|
||||
:stdout_logfile_backups => '10',
|
||||
:stdout_capture_maxbytes => '0',
|
||||
:stdout_events_enabled => true,
|
||||
:stderr_logfile => 'fcgi-program_foo.error',
|
||||
:stderr_logfile_maxbytes => '50MB',
|
||||
:stderr_logfile_backups => '10',
|
||||
:stderr_capture_maxbytes => '0',
|
||||
:stderr_events_enabled => true,
|
||||
:environment => { 'env1' => 'value1', 'env2' => 'value2' },
|
||||
:directory => '/opt/supervisord/chroot',
|
||||
:umask => '022',
|
||||
:serverurl => 'AUTO'
|
||||
}
|
||||
end
|
||||
|
||||
it { should contain_supervisord__fcgi_program('foo') }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/\[fcgi-program:foo\]/) }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/socket=tcp:\/\/localhost:1000/) }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/command=bar/) }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/user=baz/) }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/stdout_logfile=\/var\/log\/supervisor\/fcgi-program_foo.log/) }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/stderr_logfile=\/var\/log\/supervisor\/fcgi-program_foo.error/) }
|
||||
context 'default' do
|
||||
let(:params) { default_params }
|
||||
|
||||
it { should contain_supervisord__fcgi_program('foo') }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/\[fcgi-program:foo\]/) }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/socket=tcp:\/\/localhost:1000/) }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/command=bar/) }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/process_name=\%\(process_num\)s/) }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/numprocs=1/) }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/numprocs_start=0/) }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/priority=999/) }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/autostart=true/) }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/startsecs=1/) }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/startretries=3/) }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/exitcodes=0,2/) }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/stopsignal=TERM/) }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/stopwaitsecs=10/) }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/stopasgroup=true/) }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/killasgroup=true/) }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/user=baz/) }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/redirect_stderr=true/) }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/stdout_logfile=\/var\/log\/supervisor\/fcgi-program_foo.log/) }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/stdout_logfile_maxbytes=50MB/) }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/stdout_logfile_backups=10/) }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/stdout_capture_maxbytes=0/) }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/stdout_events_enabled=true/) }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/stderr_logfile=\/var\/log\/supervisor\/fcgi-program_foo.error/) }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/stderr_logfile_maxbytes=50MB/) }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/stderr_logfile_backups=10/) }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/stderr_capture_maxbytes=0/) }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/stderr_events_enabled=true/) }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/environment=env1='value1',env2='value2'/) }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/directory=\/opt\/supervisord\/chroot/) }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/umask=022/) }
|
||||
it { should contain_file('/etc/supervisor.d/fcgi-program_foo.conf').with_content(/serverurl=AUTO/) }
|
||||
end
|
||||
|
||||
context 'ensure_process_stopped' do
|
||||
let(:params) { default_params.merge({ :ensure_process => 'stopped' }) }
|
||||
it { should contain_supervisord__supervisorctl('stop_foo') }
|
||||
end
|
||||
|
||||
context 'ensure_process_removed' do
|
||||
let(:params) { default_params.merge({ :ensure_process => 'removed' }) }
|
||||
it { should contain_supervisord__supervisorctl('remove_foo') }
|
||||
end
|
||||
end
|
||||
|
||||
@ -2,19 +2,85 @@ require 'spec_helper'
|
||||
|
||||
describe 'supervisord::program', :type => :define do
|
||||
let(:title) {'foo'}
|
||||
let(:default_params) {{ :command => 'bar',
|
||||
:stdout_logfile => '/var/log/supervisor/program_foo.log',
|
||||
:stderr_logfile => '/var/log/supervisor/program_foo.error',
|
||||
:user => 'baz'
|
||||
}}
|
||||
let(:params) { default_params }
|
||||
let(:facts) {{ :concat_basedir => '/var/lib/puppet/concat' }}
|
||||
let(:default_params) do
|
||||
{
|
||||
:command => 'bar',
|
||||
:process_name => '%(process_num)s',
|
||||
:numprocs => '1',
|
||||
:numprocs_start => '0',
|
||||
:priority => '999',
|
||||
:autostart => true,
|
||||
:autorestart => 'unexpected',
|
||||
:startsecs => '1',
|
||||
:startretries => '3',
|
||||
:exitcodes => '0,2',
|
||||
:stopsignal => 'TERM',
|
||||
:stopwaitsecs => '10',
|
||||
:stopasgroup => true,
|
||||
:killasgroup => true,
|
||||
:user => 'baz',
|
||||
:redirect_stderr => true,
|
||||
:stdout_logfile => 'program_foo.log',
|
||||
:stdout_logfile_maxbytes => '50MB',
|
||||
:stdout_logfile_backups => '10',
|
||||
:stdout_capture_maxbytes => '0',
|
||||
:stdout_events_enabled => true,
|
||||
:stderr_logfile => 'program_foo.error',
|
||||
:stderr_logfile_maxbytes => '50MB',
|
||||
:stderr_logfile_backups => '10',
|
||||
:stderr_capture_maxbytes => '0',
|
||||
:stderr_events_enabled => true,
|
||||
:environment => { 'env1' => 'value1', 'env2' => 'value2' },
|
||||
:directory => '/opt/supervisord/chroot',
|
||||
:umask => '022',
|
||||
:serverurl => 'AUTO'
|
||||
}
|
||||
end
|
||||
|
||||
it { should contain_supervisord__program('foo') }
|
||||
it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/\[program:foo\]/) }
|
||||
it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/command=bar/) }
|
||||
it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/user=baz/) }
|
||||
it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/stdout_logfile=\/var\/log\/supervisor\/program_foo.log/) }
|
||||
it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/stderr_logfile=\/var\/log\/supervisor\/program_foo.error/) }
|
||||
context 'default' do
|
||||
let(:params) { default_params }
|
||||
|
||||
it { should contain_supervisord__program('foo') }
|
||||
it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/\[program:foo\]/) }
|
||||
it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/command=bar/) }
|
||||
it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/process_name=\%\(process_num\)s/) }
|
||||
it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/numprocs=1/) }
|
||||
it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/numprocs_start=0/) }
|
||||
it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/priority=999/) }
|
||||
it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/autostart=true/) }
|
||||
it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/startsecs=1/) }
|
||||
it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/startretries=3/) }
|
||||
it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/exitcodes=0,2/) }
|
||||
it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/stopsignal=TERM/) }
|
||||
it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/stopwaitsecs=10/) }
|
||||
it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/stopasgroup=true/) }
|
||||
it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/killasgroup=true/) }
|
||||
it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/user=baz/) }
|
||||
it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/redirect_stderr=true/) }
|
||||
it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/stdout_logfile=\/var\/log\/supervisor\/program_foo.log/) }
|
||||
it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/stdout_logfile_maxbytes=50MB/) }
|
||||
it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/stdout_logfile_backups=10/) }
|
||||
it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/stdout_capture_maxbytes=0/) }
|
||||
it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/stdout_events_enabled=true/) }
|
||||
it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/stderr_logfile=\/var\/log\/supervisor\/program_foo.error/) }
|
||||
it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/stderr_logfile_maxbytes=50MB/) }
|
||||
it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/stderr_logfile_backups=10/) }
|
||||
it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/stderr_capture_maxbytes=0/) }
|
||||
it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/stderr_events_enabled=true/) }
|
||||
it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/environment=env1='value1',env2='value2'/) }
|
||||
it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/directory=\/opt\/supervisord\/chroot/) }
|
||||
it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/umask=022/) }
|
||||
it { should contain_file('/etc/supervisor.d/program_foo.conf').with_content(/serverurl=AUTO/) }
|
||||
end
|
||||
|
||||
context 'ensure_process_stopped' do
|
||||
let(:params) { default_params.merge({ :ensure_process => 'stopped' }) }
|
||||
it { should contain_supervisord__supervisorctl('stop_foo') }
|
||||
end
|
||||
|
||||
context 'ensure_process_removed' do
|
||||
let(:params) { default_params.merge({ :ensure_process => 'removed' }) }
|
||||
it { should contain_supervisord__supervisorctl('remove_foo') }
|
||||
end
|
||||
end
|
||||
|
||||
13
dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/defines/supervisorctl.rb
vendored
Normal file
13
dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/defines/supervisorctl.rb
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe 'supervisord::supervisorctl', :type => :define do
|
||||
let(:title) {'command_foo'}
|
||||
let(:default_params) {{
|
||||
:command => 'command',
|
||||
:process => 'foo'
|
||||
}}
|
||||
let(:params) { default_params }
|
||||
let(:facts) {{ :concat_basedir => '/var/lib/puppet/concat' }}
|
||||
|
||||
it { should contain_supervisord__supervisorctl('command_foo') }
|
||||
end
|
||||
@ -7,3 +7,4 @@ RSpec.configure do |c|
|
||||
c.manifest_dir = File.join(fixture_path, 'manifests')
|
||||
end
|
||||
|
||||
at_exit { RSpec::Puppet::Coverage.report! }
|
||||
|
||||
24
dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/spec_helper_acceptance.rb
vendored
Normal file
24
dev/vagrant/dolibarrdev/puphpet/puppet/modules/supervisord/spec/spec_helper_acceptance.rb
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
require 'beaker-rspec'
|
||||
|
||||
hosts.each do |host|
|
||||
# Install Puppet
|
||||
install_puppet
|
||||
end
|
||||
|
||||
RSpec.configure do |c|
|
||||
# Project root
|
||||
proj_root = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
||||
|
||||
# Readable test descriptions
|
||||
c.formatter = :documentation
|
||||
|
||||
# Configure all nodes in nodeset
|
||||
c.before :suite do
|
||||
# Install module
|
||||
puppet_module_install(:source => proj_root, :module_name => 'supervisord')
|
||||
hosts.each do |host|
|
||||
on host, puppet('module','install','puppetlabs-stdlib'), { :acceptable_exit_codes => [0,1] }
|
||||
on host, puppet('module','install','puppetlabs-concat'), { :acceptable_exit_codes => [0,1] }
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -1,25 +0,0 @@
|
||||
require 'rspec-system/spec_helper'
|
||||
require 'rspec-system-puppet/helpers'
|
||||
|
||||
include RSpecSystemPuppet::Helpers
|
||||
|
||||
RSpec.configure do |c|
|
||||
# Project root
|
||||
proj_root = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
||||
|
||||
# Enable colour
|
||||
c.tty = true
|
||||
|
||||
# This is where we 'setup' the nodes before running our tests
|
||||
c.before :suite do
|
||||
# Install puppet
|
||||
puppet_install
|
||||
puppet_master_install
|
||||
|
||||
# Replace mymodule with your module name
|
||||
puppet_module_install(:source => proj_root, :module_name => 'supervisord')
|
||||
shell('puppet module install puppetlabs/stdlib')
|
||||
shell('puppet module install puppetlabs/concat')
|
||||
|
||||
end
|
||||
end
|
||||
@ -1,120 +0,0 @@
|
||||
require 'spec_helper_system'
|
||||
|
||||
describe 'basic install' do
|
||||
|
||||
it 'class should work with no errors' do
|
||||
pp = <<-EOS
|
||||
class { 'supervisord': install_pip => true, install_init => true}
|
||||
EOS
|
||||
|
||||
puppet_apply(pp) do |r|
|
||||
r.exit_code.should_not == 1
|
||||
r.refresh
|
||||
r.exit_code.should be_zero
|
||||
end
|
||||
|
||||
shell("pgrep supervisord") do |r|
|
||||
r.exit_code.should be_zero
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
describe 'add a program config' do
|
||||
|
||||
it 'supervisord::program should install a program config' do
|
||||
|
||||
pp = <<-EOS
|
||||
include supervisord
|
||||
supervisord::program { 'test':
|
||||
command => 'echo',
|
||||
priority => '100',
|
||||
environment => {
|
||||
'HOME' => '/root',
|
||||
'PATH' => '/bin',
|
||||
}
|
||||
}
|
||||
EOS
|
||||
|
||||
puppet_apply(pp) do |r|
|
||||
r.exit_code.should_not == 1
|
||||
r.refresh
|
||||
r.exit_code.should be_zero
|
||||
end
|
||||
|
||||
shell("grep command=echo /etc/supervisor.d/program_test.conf") do |r|
|
||||
r.exit_code.should be_zero
|
||||
end
|
||||
shell("grep priority=100 /etc/supervisor.d/program_test.conf") do |r|
|
||||
r.exit_code.should be_zero
|
||||
end
|
||||
shell('grep "environment=" /etc/supervisor.d/program_test.conf') do |r|
|
||||
r.exit_code.should be_zero
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'add a fcgi-program config' do
|
||||
|
||||
it 'supervisord::fcgi_program should install a program config' do
|
||||
|
||||
pp = <<-EOS
|
||||
include supervisord
|
||||
supervisord::fcgi_program { 'test':
|
||||
socket => 'tcp://localhost:1000',
|
||||
command => 'echo',
|
||||
priority => '100',
|
||||
environment => {
|
||||
'HOME' => '/root',
|
||||
'PATH' => '/bin',
|
||||
}
|
||||
}
|
||||
EOS
|
||||
|
||||
puppet_apply(pp) do |r|
|
||||
r.exit_code.should_not == 1
|
||||
r.refresh
|
||||
r.exit_code.should be_zero
|
||||
end
|
||||
|
||||
shell("grep socket=tcp://localhost:1000 /etc/supervisor.d/fcgi-program_test.conf") do |r|
|
||||
r.exit_code.should be_zero
|
||||
end
|
||||
shell("grep command=echo /etc/supervisor.d/fcgi-program_test.conf") do |r|
|
||||
r.exit_code.should be_zero
|
||||
end
|
||||
shell("grep priority=100 /etc/supervisor.d/fcgi-program_test.conf") do |r|
|
||||
r.exit_code.should be_zero
|
||||
end
|
||||
shell('grep "environment=" /etc/supervisor.d/fcgi-program_test.conf') do |r|
|
||||
r.exit_code.should be_zero
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'add a group config' do
|
||||
|
||||
it 'supervisord::group should install a program config' do
|
||||
|
||||
pp = <<-EOS
|
||||
include supervisord
|
||||
supervisord::group { 'test':
|
||||
programs => ['program1', 'program2'],
|
||||
priority => '100',
|
||||
}
|
||||
EOS
|
||||
|
||||
puppet_apply(pp) do |r|
|
||||
r.exit_code.should_not == 1
|
||||
r.refresh
|
||||
r.exit_code.should be_zero
|
||||
end
|
||||
|
||||
shell('grep "programs=program1,program2" /etc/supervisor.d/group_test.conf') do |r|
|
||||
r.exit_code.should be_zero
|
||||
end
|
||||
shell("grep priority=100 /etc/supervisor.d/fcgi-program_test.conf") do |r|
|
||||
r.exit_code.should be_zero
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -39,8 +39,8 @@ exitcodes=<%= @exitcodes %>
|
||||
<% if @stopsignal -%>
|
||||
stopsignal=<%= @stopsignal %>
|
||||
<% end -%>
|
||||
<% if @stopwaitsec -%>
|
||||
stopwaitsec=<%= @stopwaitsec %>
|
||||
<% if @stopwaitsecs -%>
|
||||
stopwaitsecs=<%= @stopwaitsecs %>
|
||||
<% end -%>
|
||||
<% if @stopasgroup -%>
|
||||
stopasgroup=<%= @stopasgroup %>
|
||||
@ -54,7 +54,7 @@ user=<%= @user %>
|
||||
<% if @redirect_stderr -%>
|
||||
redirect_stderr=<%= @redirect_stderr %>
|
||||
<% end -%>
|
||||
stdout_logfile=<%= @stdout_logfile %>
|
||||
stdout_logfile=<%= scope.lookupvar('supervisord::log_path') %>/<%= @stdout_logfile %>
|
||||
<% if @stdout_logfile_maxbytes -%>
|
||||
stdout_logfile_maxbytes=<%= @stdout_logfile_maxbytes %>
|
||||
<% end -%>
|
||||
@ -64,7 +64,7 @@ stdout_logfile_backups=<%= @stdout_logfile_backups %>
|
||||
<% if @stdout_events_enabled -%>
|
||||
stdout_events_enabled=<%= @stdout_events_enabled %>
|
||||
<% end -%>
|
||||
stderr_logfile=<%= @stderr_logfile %>
|
||||
stderr_logfile=<%= scope.lookupvar('supervisord::log_path') %>/<%= @stderr_logfile %>
|
||||
<% if @stderr_logfile_maxbytes -%>
|
||||
stderr_logfile_maxbytes=<%= @stderr_logfile_maxbytes %>
|
||||
<% end -%>
|
||||
|
||||
@ -37,8 +37,8 @@ exitcodes=<%= @exitcodes %>
|
||||
<% if @stopsignal -%>
|
||||
stopsignal=<%= @stopsignal %>
|
||||
<% end -%>
|
||||
<% if @stopwaitsec -%>
|
||||
stopwaitsec=<%= @stopwaitsec %>
|
||||
<% if @stopwaitsecs -%>
|
||||
stopwaitsecs=<%= @stopwaitsecs %>
|
||||
<% end -%>
|
||||
<% if @stopasgroup -%>
|
||||
stopasgroup=<%= @stopasgroup %>
|
||||
@ -53,7 +53,7 @@ user=<%= @user %>
|
||||
redirect_stderr=<%= @redirect_stderr %>
|
||||
<% end -%>
|
||||
<% if @stdout_logfile -%>
|
||||
stdout_logfile=<%= @stdout_logfile %>
|
||||
stdout_logfile=<%= scope.lookupvar('supervisord::log_path') %>/<%= @stdout_logfile %>
|
||||
<% end -%>
|
||||
<% if @stdout_logfile_maxbytes -%>
|
||||
stdout_logfile_maxbytes=<%= @stdout_logfile_maxbytes %>
|
||||
@ -68,7 +68,7 @@ stdout_capture_maxbytes=<%= @stdout_capture_maxbytes %>
|
||||
stdout_events_enabled=<%= @stdout_events_enabled %>
|
||||
<% end -%>
|
||||
<% if @stderr_logfile -%>
|
||||
stderr_logfile=<%= @stderr_logfile %>
|
||||
stderr_logfile=<%= scope.lookupvar('supervisord::log_path') %>/<%= @stderr_logfile %>
|
||||
<% end -%>
|
||||
<% if @stderr_logfile_maxbytes -%>
|
||||
stderr_logfile_maxbytes=<%= @stderr_logfile_maxbytes %>
|
||||
|
||||
@ -30,8 +30,8 @@ exitcodes=<%= @exitcodes %>
|
||||
<% if @stopsignal -%>
|
||||
stopsignal=<%= @stopsignal %>
|
||||
<% end -%>
|
||||
<% if @stopwaitsec -%>
|
||||
stopwaitsec=<%= @stopwaitsec %>
|
||||
<% if @stopwaitsecs -%>
|
||||
stopwaitsecs=<%= @stopwaitsecs %>
|
||||
<% end -%>
|
||||
<% if @stopasgroup -%>
|
||||
stopasgroup=<%= @stopasgroup %>
|
||||
@ -46,7 +46,7 @@ user=<%= @user %>
|
||||
redirect_stderr=<%= @redirect_stderr %>
|
||||
<% end -%>
|
||||
<% if @stdout_logfile -%>
|
||||
stdout_logfile=<%= @stdout_logfile %>
|
||||
stdout_logfile=<%= scope.lookupvar('supervisord::log_path') %>/<%= @stdout_logfile %>
|
||||
<% end -%>
|
||||
<% if @stdout_logfile_maxbytes -%>
|
||||
stdout_logfile_maxbytes=<%= @stdout_logfile_maxbytes %>
|
||||
@ -61,7 +61,7 @@ stdout_capture_maxbytes=<%= @stdout_capture_maxbytes %>
|
||||
stdout_events_enabled=<%= @stdout_events_enabled %>
|
||||
<% end -%>
|
||||
<% if @stderr_logfile -%>
|
||||
stderr_logfile=<%= @stderr_logfile %>
|
||||
stderr_logfile=<%= scope.lookupvar('supervisord::log_path') %>/<%= @stderr_logfile %>
|
||||
<% end -%>
|
||||
<% if @stderr_logfile_maxbytes -%>
|
||||
stderr_logfile_maxbytes=<%= @stderr_logfile_maxbytes %>
|
||||
|
||||
@ -19,15 +19,15 @@ DESC=supervisor
|
||||
test -x $DAEMON || exit 0
|
||||
|
||||
LOGDIR=<%= @log_path %>
|
||||
PIDFILE=<%= @pid_file %>
|
||||
PIDFILE=<%= @run_path %>/<%= @pid_file %>
|
||||
DODTIME=5 # Time to wait for the server to die, in seconds
|
||||
# If this value is set too low you might not
|
||||
# let some servers to die gracefully and
|
||||
# 'restart' will not work
|
||||
|
||||
# Include supervisor defaults if available
|
||||
if [ -f /etc/default/supervisor ] ; then
|
||||
. /etc/default/supervisor
|
||||
if [ -f <%= @init_defaults %> ] ; then
|
||||
. <%= @init_defaults %>
|
||||
fi
|
||||
|
||||
set -e
|
||||
@ -5,4 +5,4 @@ set -a
|
||||
|
||||
# should probably put both of these options as runtime arguments
|
||||
OPTIONS="-c <%= @config_file %>"
|
||||
PIDFILE=<%= @pid_file %>
|
||||
PIDFILE=<%= @run_path %><%= @pid_file %>
|
||||
@ -13,18 +13,19 @@
|
||||
# xmlrpc interface as well as a few other nifty features.
|
||||
# processname: supervisord
|
||||
# config: <%= @config_file %>
|
||||
# pidfile: <%= @pid_file %>
|
||||
# pidfile: <%= @run_path %>/<%= @pid_file %>
|
||||
#
|
||||
|
||||
# source function library
|
||||
. /etc/rc.d/init.d/functions
|
||||
|
||||
# source system settings
|
||||
[ -e <%= @init_extras %> ] && . <%= @init_extras %>
|
||||
[ -e <%= @init_defaults %> ] && . <%= @init_defaults %>
|
||||
|
||||
RETVAL=0
|
||||
DAEMON=/usr/bin/supervisord
|
||||
DESC=supervisord
|
||||
PIDFILE=<%= @run_path %>/<%= @pid_file %>
|
||||
|
||||
running_pid()
|
||||
{
|
||||
@ -1,9 +1,9 @@
|
||||
[supervisord]
|
||||
logfile=<%= @log_file %>
|
||||
pidfile=<%= @pid_file %>
|
||||
logfile=<%= @log_path %>/<%= @log_file %>
|
||||
pidfile=<%= @run_path %>/<%= @pid_file %>
|
||||
nodaemon=<%= @nodaemon %>
|
||||
minfds=<%= @minfds %>
|
||||
minfds=<%= @minprocs %>
|
||||
minprocs=<%= @minprocs %>
|
||||
umask=<%= @umask %>
|
||||
<% if @strip_ansi -%>
|
||||
strip_ansi=<%= @strip_ansi %>
|
||||
@ -12,7 +12,7 @@ strip_ansi=<%= @strip_ansi %>
|
||||
user=<%= @user %>
|
||||
<% end -%>
|
||||
<% if @identifier -%>
|
||||
indentifier=<%= @identifier %>
|
||||
identifier=<%= @identifier %>
|
||||
<% end -%>
|
||||
<% if @directory -%>
|
||||
directory=<%= @directory %>
|
||||
@ -31,4 +31,4 @@ environment=<%= @env_string %>
|
||||
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
|
||||
|
||||
[include]
|
||||
files=<%= @config_include %>/*.conf
|
||||
files=<%= @config_include_string %>
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
[unix_http_server]
|
||||
file=<%= @unix_socket_file %>
|
||||
file=<%= @run_path %>/<%= @unix_socket_file %>
|
||||
chmod=<%= @unix_socket_mode %>
|
||||
chown=<%= @unix_socket_owner %>:<%= @unix_socket_group %>
|
||||
<% if @unix_auth -%>
|
||||
@ -8,7 +8,7 @@ password=<%= @unix_socket_password %>
|
||||
<% end -%>
|
||||
|
||||
[supervisorctl]
|
||||
serverurl=unix://<%= @unix_socket_file %>
|
||||
serverurl=unix://<%= @run_path %>/<%= @unix_socket_file %>
|
||||
<% if @unix_auth -%>
|
||||
username=<%= @unix_username %>
|
||||
password=<%= @unix_password %>
|
||||
|
||||
@ -1,9 +1,35 @@
|
||||
supervisord::program { 'myprogram':
|
||||
command => 'command --args',
|
||||
priority => '100',
|
||||
environment => {
|
||||
command => 'command --args',
|
||||
process_name => '%(process_num)s',
|
||||
numprocs => '1',
|
||||
numprocs_start => '0',
|
||||
priority => '999',
|
||||
autostart => true,
|
||||
autorestart => 'unexpected',
|
||||
startsecs => '1',
|
||||
startretries => '3',
|
||||
exitcodes => '0,2',
|
||||
stopsignal => 'TERM',
|
||||
stopwaitsecs => '10',
|
||||
stopasgroup => false,
|
||||
killasgroup => false,
|
||||
redirect_stderr => false,
|
||||
stdout_logfile => 'program_foo.log',
|
||||
stdout_logfile_maxbytes => '50MB',
|
||||
stdout_logfile_backups => '10',
|
||||
stdout_capture_maxbytes => '0',
|
||||
stdout_events_enabled => false,
|
||||
stderr_logfile => 'program_foo.error',
|
||||
stderr_logfile_maxbytes => '50MB',
|
||||
stderr_logfile_backups => '10',
|
||||
stderr_capture_maxbytes => '0',
|
||||
stderr_events_enabled => false,
|
||||
environment => {
|
||||
'HOME' => '/home/myuser',
|
||||
'PATH' => '/bin:/sbin:/usr/bin:/usr/sbin',
|
||||
'SECRET' => 'mysecret'
|
||||
}
|
||||
},
|
||||
directory => undef,
|
||||
umask => '022',
|
||||
serverurl => 'AUTO'
|
||||
}
|
||||
@ -4,17 +4,26 @@ export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
VAGRANT_CORE_FOLDER=$(cat '/.puphpet-stuff/vagrant-core-folder.txt')
|
||||
|
||||
shopt -s nullglob
|
||||
files=("${VAGRANT_CORE_FOLDER}"/files/exec-once/*)
|
||||
EXEC_ONCE_DIR="$1"
|
||||
EXEC_ALWAYS_DIR="$2"
|
||||
|
||||
if [[ ! -f '/.puphpet-stuff/exec-once-ran' && (${#files[@]} -gt 0) ]]; then
|
||||
echo 'Running files in files/exec-once'
|
||||
find "${VAGRANT_CORE_FOLDER}/files/exec-once" -maxdepth 1 -not -path '*/\.*' -type f \( ! -iname "empty" \) -exec chmod +x '{}' \; -exec {} \;
|
||||
echo 'Finished running files in files/exec-once'
|
||||
echo 'To run again, delete file /.puphpet-stuff/exec-once-ran'
|
||||
touch /.puphpet-stuff/exec-once-ran
|
||||
shopt -s nullglob
|
||||
files=("${VAGRANT_CORE_FOLDER}"/files/"${EXEC_ONCE_DIR}"/*)
|
||||
|
||||
if [[ (${#files[@]} -gt 0) ]]; then
|
||||
echo "Running files in files/${EXEC_ONCE_DIR}"
|
||||
|
||||
if [ ! -d "/.puphpet-stuff/${EXEC_ONCE_DIR}-ran" ]; then
|
||||
mkdir "/.puphpet-stuff/${EXEC_ONCE_DIR}-ran"
|
||||
echo "Created directory /.puphpet-stuff/${EXEC_ONCE_DIR}-ran"
|
||||
fi
|
||||
|
||||
find "${VAGRANT_CORE_FOLDER}/files/${EXEC_ONCE_DIR}" -maxdepth 1 -not -path '*/\.*' -type f \( ! -iname "empty" \) -exec cp -n '{}' "/.puphpet-stuff/${EXEC_ONCE_DIR}-ran" \;
|
||||
find "/.puphpet-stuff/${EXEC_ONCE_DIR}-ran" -maxdepth 1 -type f -exec chmod +x '{}' \; -exec {} \; -exec sh -c '>{}' \;
|
||||
echo "Finished running files in files/${EXEC_ONCE_DIR}"
|
||||
echo "To run again, delete file(s) you want rerun in /.puphpet-stuff/${EXEC_ONCE_DIR}-ran or the whole folder to rerun all"
|
||||
fi
|
||||
|
||||
echo 'Running files in files/exec-always'
|
||||
find "${VAGRANT_CORE_FOLDER}/files/exec-always" -maxdepth 1 -not -path '*/\.*' -type f \( ! -iname "empty" \) -exec chmod +x '{}' \; -exec {} \;
|
||||
echo 'Finished running files in files/exec-always'
|
||||
echo "Running files in files/${EXEC_ALWAYS_DIR}"
|
||||
find "${VAGRANT_CORE_FOLDER}/files/${EXEC_ALWAYS_DIR}" -maxdepth 1 -not -path '*/\.*' -type f \( ! -iname "empty" \) -exec chmod +x '{}' \; -exec {} \;
|
||||
echo "Finished running files in files/${EXEC_ALWAYS_DIR}"
|
||||
|
||||
@ -5,37 +5,76 @@ VAGRANT_CORE_FOLDER=$(cat '/.puphpet-stuff/vagrant-core-folder.txt')
|
||||
OS=$(/bin/bash "${VAGRANT_CORE_FOLDER}/shell/os-detect.sh" ID)
|
||||
VAGRANT_SSH_USERNAME=$(echo "$1")
|
||||
|
||||
if [[ ! -f "${VAGRANT_CORE_FOLDER}/files/dot/ssh/id_rsa" ]]; then
|
||||
ssh-keygen -f "${VAGRANT_CORE_FOLDER}/files/dot/ssh/id_rsa" -P ""
|
||||
function create_key()
|
||||
{
|
||||
BASE_KEY_NAME=$(echo "$1")
|
||||
|
||||
if [[ ! -f "${VAGRANT_CORE_FOLDER}/files/dot/ssh/id_rsa.ppk" ]]; then
|
||||
if [ "${OS}" == 'debian' ] || [ "${OS}" == 'ubuntu' ]; then
|
||||
apt-get install -y putty-tools >/dev/null
|
||||
elif [ "${OS}" == 'centos' ]; then
|
||||
yum -y install putty >/dev/null
|
||||
if [[ ! -f "${VAGRANT_CORE_FOLDER}/files/dot/ssh/${BASE_KEY_NAME}" ]]; then
|
||||
ssh-keygen -f "${VAGRANT_CORE_FOLDER}/files/dot/ssh/${BASE_KEY_NAME}" -P ""
|
||||
|
||||
if [[ ! -f "${VAGRANT_CORE_FOLDER}/files/dot/ssh/${BASE_KEY_NAME}.ppk" ]]; then
|
||||
if [ "${OS}" == 'debian' ] || [ "${OS}" == 'ubuntu' ]; then
|
||||
apt-get install -y putty-tools >/dev/null
|
||||
elif [ "${OS}" == 'centos' ]; then
|
||||
yum -y install putty >/dev/null
|
||||
fi
|
||||
|
||||
puttygen "${VAGRANT_CORE_FOLDER}/files/dot/ssh/${BASE_KEY_NAME}" -O private -o "${VAGRANT_CORE_FOLDER}/files/dot/ssh/${BASE_KEY_NAME}.ppk"
|
||||
fi
|
||||
|
||||
puttygen "${VAGRANT_CORE_FOLDER}/files/dot/ssh/id_rsa" -O private -o "${VAGRANT_CORE_FOLDER}/files/dot/ssh/id_rsa.ppk"
|
||||
echo "Your private key for SSH-based authentication has been saved to 'puphpet/files/dot/ssh/${BASE_KEY_NAME}'!"
|
||||
else
|
||||
echo "Pre-existing private key found at 'puphpet/files/dot/ssh/${BASE_KEY_NAME}'"
|
||||
fi
|
||||
}
|
||||
|
||||
echo 'Your private key for SSH-based authentication have been saved to "puphpet/files/dot/ssh/"!'
|
||||
else
|
||||
echo 'Using pre-existing private key at "puphpet/files/dot/ssh/id_rsa"'
|
||||
create_key 'root_id_rsa'
|
||||
create_key 'id_rsa'
|
||||
|
||||
PUBLIC_SSH_KEY=$(cat "${VAGRANT_CORE_FOLDER}/files/dot/ssh/id_rsa.pub")
|
||||
|
||||
echo 'Adding generated key to /root/.ssh/id_rsa'
|
||||
echo 'Adding generated key to /root/.ssh/id_rsa.pub'
|
||||
echo 'Adding generated key to /root/.ssh/authorized_keys'
|
||||
|
||||
mkdir -p /root/.ssh
|
||||
|
||||
cp "${VAGRANT_CORE_FOLDER}/files/dot/ssh/id_rsa" '/root/.ssh/'
|
||||
cp "${VAGRANT_CORE_FOLDER}/files/dot/ssh/id_rsa.pub" '/root/.ssh/'
|
||||
|
||||
if [[ ! -f '/root/.ssh/authorized_keys' ]] || ! grep -q "${PUBLIC_SSH_KEY}" '/root/.ssh/authorized_keys'; then
|
||||
cat "${VAGRANT_CORE_FOLDER}/files/dot/ssh/id_rsa.pub" >> '/root/.ssh/authorized_keys'
|
||||
fi
|
||||
|
||||
echo 'Adding generated key to /root/.ssh/authorized_keys'
|
||||
mkdir -p /root/.ssh
|
||||
cat "${VAGRANT_CORE_FOLDER}/files/dot/ssh/id_rsa.pub" > '/root/.ssh/authorized_keys'
|
||||
chown -R root '/root/.ssh'
|
||||
chgrp -R root '/root/.ssh'
|
||||
chmod 700 '/root/.ssh'
|
||||
chmod 644 '/root/.ssh/id_rsa.pub'
|
||||
chmod 600 '/root/.ssh/id_rsa'
|
||||
chmod 600 '/root/.ssh/authorized_keys'
|
||||
|
||||
if [ "${VAGRANT_SSH_USERNAME}" != 'root' ]; then
|
||||
VAGRANT_SSH_FOLDER="/home/${VAGRANT_SSH_USERNAME}/.ssh";
|
||||
|
||||
echo "Adding generated key to ${VAGRANT_SSH_FOLDER}/authorized_keys"
|
||||
cat "${VAGRANT_CORE_FOLDER}/files/dot/ssh/id_rsa.pub" > "${VAGRANT_SSH_FOLDER}/authorized_keys"
|
||||
chown "${VAGRANT_SSH_USERNAME}" "${VAGRANT_SSH_FOLDER}/authorized_keys"
|
||||
chgrp "${VAGRANT_SSH_USERNAME}" "${VAGRANT_SSH_FOLDER}/authorized_keys"
|
||||
chmod 600 "${VAGRANT_SSH_FOLDER}/authorized_keys"
|
||||
fi
|
||||
mkdir -p "${VAGRANT_SSH_FOLDER}"
|
||||
|
||||
passwd -d vagrant >/dev/null
|
||||
echo "Adding generated key to ${VAGRANT_SSH_FOLDER}/id_rsa"
|
||||
echo "Adding generated key to ${VAGRANT_SSH_FOLDER}/id_rsa.pub"
|
||||
echo "Adding generated key to ${VAGRANT_SSH_FOLDER}/authorized_keys"
|
||||
|
||||
cp "${VAGRANT_CORE_FOLDER}/files/dot/ssh/id_rsa" "${VAGRANT_SSH_FOLDER}/id_rsa"
|
||||
cp "${VAGRANT_CORE_FOLDER}/files/dot/ssh/id_rsa.pub" "${VAGRANT_SSH_FOLDER}/id_rsa.pub"
|
||||
|
||||
if [[ ! -f "${VAGRANT_SSH_FOLDER}/authorized_keys" ]] || ! grep -q "${PUBLIC_SSH_KEY}" "${VAGRANT_SSH_FOLDER}/authorized_keys"; then
|
||||
cat "${VAGRANT_CORE_FOLDER}/files/dot/ssh/id_rsa.pub" >> "${VAGRANT_SSH_FOLDER}/authorized_keys"
|
||||
fi
|
||||
|
||||
chown -R "${VAGRANT_SSH_USERNAME}" "${VAGRANT_SSH_FOLDER}"
|
||||
chgrp -R "${VAGRANT_SSH_USERNAME}" "${VAGRANT_SSH_FOLDER}"
|
||||
chmod 700 "${VAGRANT_SSH_FOLDER}"
|
||||
chmod 644 "${VAGRANT_SSH_FOLDER}/id_rsa.pub"
|
||||
chmod 600 "${VAGRANT_SSH_FOLDER}/id_rsa"
|
||||
chmod 600 "${VAGRANT_SSH_FOLDER}/authorized_keys"
|
||||
|
||||
passwd -d "${VAGRANT_SSH_USERNAME}" >/dev/null
|
||||
fi
|
||||
|
||||
0
htdocs/accountancy/class/index.html
Normal file
0
htdocs/accountancy/class/index.html
Normal file
0
htdocs/accountancy/index.html
Normal file
0
htdocs/accountancy/index.html
Normal file
@ -1 +0,0 @@
|
||||
Url not available
|
||||
@ -68,11 +68,11 @@ if ($action == 'update' || $action == 'add')
|
||||
|
||||
if (! $error)
|
||||
{
|
||||
$mesg = '<div class="ok">'.$langs->trans("SetupSaved").'</div>';
|
||||
setEventMessage($langs->trans("SetupSaved"));
|
||||
}
|
||||
else
|
||||
{
|
||||
$mesg = '<div class="error">'.$langs->trans("Error").'</div>';
|
||||
setEventMessage($langs->trans("Error"), 'errors');
|
||||
}
|
||||
}
|
||||
|
||||
@ -117,10 +117,6 @@ $head = member_admin_prepare_head();
|
||||
|
||||
dol_fiche_head($head, 'general', $langs->trans("Members"), 0, 'user');
|
||||
|
||||
|
||||
dol_htmloutput_mesg($mesg);
|
||||
|
||||
|
||||
print_fiche_titre($langs->trans("MemberMainOptions"),'','');
|
||||
print '<table class="noborder" width="100%">';
|
||||
print '<tr class="liste_titre">';
|
||||
|
||||
@ -60,11 +60,11 @@ if ($action == 'update')
|
||||
|
||||
if (! $error)
|
||||
{
|
||||
$mesg = "<font class=\"ok\">".$langs->trans("SetupSaved")."</font>";
|
||||
setEventMessage($langs->trans("SetupSaved"));
|
||||
}
|
||||
else
|
||||
{
|
||||
$mesg = "<font class=\"error\">".$langs->trans("Error")."</font>";
|
||||
setEventMessage($langs->trans("Error"), 'errors');
|
||||
}
|
||||
}
|
||||
|
||||
@ -86,8 +86,6 @@ $head = member_admin_prepare_head();
|
||||
|
||||
dol_fiche_head($head, 'public', $langs->trans("Members"), 0, 'user');
|
||||
|
||||
dol_htmloutput_mesg($mesg);
|
||||
|
||||
if ($conf->use_javascript_ajax)
|
||||
{
|
||||
print "\n".'<script type="text/javascript" language="javascript">';
|
||||
|
||||
@ -1 +0,0 @@
|
||||
Url not available
|
||||
0
htdocs/adherents/canvas/default/tpl/index.html
Normal file
0
htdocs/adherents/canvas/default/tpl/index.html
Normal file
@ -1 +0,0 @@
|
||||
Url not available
|
||||
0
htdocs/adherents/canvas/index.html
Normal file
0
htdocs/adherents/canvas/index.html
Normal file
@ -1 +0,0 @@
|
||||
Url not available
|
||||
@ -52,7 +52,6 @@ $object = new Adherent($db);
|
||||
$extrafields = new ExtraFields($db);
|
||||
$adht = new AdherentType($db);
|
||||
$errmsg='';
|
||||
$errmsgs=array();
|
||||
|
||||
$defaultdelay=1;
|
||||
$defaultdelayunit='y';
|
||||
@ -108,7 +107,7 @@ if ($action == 'confirm_create_thirdparty' && $confirm == 'yes' && $user->rights
|
||||
{
|
||||
$langs->load("errors");
|
||||
$errmsg=$langs->trans($company->error);
|
||||
$errmsgs=$company->errors;
|
||||
setEventMessage($company->errors, 'errors');
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -129,7 +128,7 @@ if ($action == 'setuserid' && ($user->rights->user->self->creer || $user->rights
|
||||
if ($_POST["userid"] != $user->id && $_POST["userid"] != $object->user_id)
|
||||
{
|
||||
$error++;
|
||||
$mesg='<div class="error">'.$langs->trans("ErrorUserPermissionAllowsToLinksToItselfOnly").'</div>';
|
||||
setEventMessage($langs->trans("ErrorUserPermissionAllowsToLinksToItselfOnly"), 'errors');
|
||||
}
|
||||
}
|
||||
|
||||
@ -165,7 +164,7 @@ if ($action == 'setsocid')
|
||||
$thirdparty=new Societe($db);
|
||||
$thirdparty->fetch(GETPOST('socid','int'));
|
||||
$error++;
|
||||
$mesg='<div class="error">'.$langs->trans("ErrorMemberIsAlreadyLinkedToThisThirdParty",$othermember->getFullName($langs),$othermember->login,$thirdparty->name).'</div>';
|
||||
setEventMessage($langs->trans("ErrorMemberIsAlreadyLinkedToThisThirdParty",$othermember->getFullName($langs),$othermember->login,$thirdparty->name), 'errors');
|
||||
}
|
||||
}
|
||||
|
||||
@ -282,7 +281,7 @@ if ($user->rights->adherent->cotisation->creer && $action == 'cotisation' && ! $
|
||||
{
|
||||
$error++;
|
||||
$errmsg=$object->error;
|
||||
$errmsgs=$object->errors;
|
||||
setEventMessage($object->errors, 'errors');
|
||||
}
|
||||
|
||||
if (! $error)
|
||||
@ -307,7 +306,7 @@ if ($user->rights->adherent->cotisation->creer && $action == 'cotisation' && ! $
|
||||
$sql ="UPDATE ".MAIN_DB_PREFIX."cotisation SET fk_bank=".$insertid;
|
||||
$sql.=" WHERE rowid=".$crowid;
|
||||
|
||||
dol_syslog("card_subscriptions::cotisation sql=".$sql);
|
||||
dol_syslog("card_subscriptions::cotisation", LOG_DEBUG);
|
||||
$resql = $db->query($sql);
|
||||
if (! $resql)
|
||||
{
|
||||
@ -444,7 +443,7 @@ if ($user->rights->adherent->cotisation->creer && $action == 'cotisation' && ! $
|
||||
if (! ($bank_line_id > 0))
|
||||
{
|
||||
$errmsg=$paiement->error;
|
||||
$errmsgs=$paiement->errors;
|
||||
setEventMessage($paiement->errors, 'errors');
|
||||
$error++;
|
||||
}
|
||||
}
|
||||
@ -454,8 +453,8 @@ if ($user->rights->adherent->cotisation->creer && $action == 'cotisation' && ! $
|
||||
// Update fk_bank into subscription table
|
||||
$sql = 'UPDATE '.MAIN_DB_PREFIX.'cotisation SET fk_bank='.$bank_line_id;
|
||||
$sql.= ' WHERE rowid='.$crowid;
|
||||
dol_syslog('sql='.$sql);
|
||||
$result = $db->query($sql);
|
||||
|
||||
$result = $db->query($sql);
|
||||
if (! $result)
|
||||
{
|
||||
$error++;
|
||||
@ -689,7 +688,7 @@ if ($rowid)
|
||||
dol_fiche_end();
|
||||
|
||||
|
||||
dol_htmloutput_errors($errmsg,$errmsgs);
|
||||
dol_htmloutput_errors($errmsg);
|
||||
|
||||
|
||||
/*
|
||||
|
||||
@ -72,7 +72,7 @@ if ((! empty($foruserid) || ! empty($foruserlogin) || ! empty($mode)) && ! $mesg
|
||||
if ($foruserlogin) $sql.=" AND d.login='".$db->escape($foruserlogin)."'";
|
||||
$sql.= " ORDER BY d.rowid ASC";
|
||||
|
||||
dol_syslog("Search members sql=".$sql);
|
||||
dol_syslog("Search members", LOG_DEBUG);
|
||||
$result = $db->query($sql);
|
||||
if ($result)
|
||||
{
|
||||
|
||||
0
htdocs/adherents/cartes/index.html
Normal file
0
htdocs/adherents/cartes/index.html
Normal file
@ -1 +0,0 @@
|
||||
Url not available
|
||||
@ -90,6 +90,7 @@ class Adherent extends CommonObject
|
||||
var $user_login;
|
||||
|
||||
var $fk_soc;
|
||||
var $thirdparty; // Loaded by ->fetch_thirdparty()
|
||||
|
||||
// Fields loaded by fetch_subscriptions()
|
||||
var $first_subscription_date;
|
||||
@ -310,7 +311,7 @@ class Adherent extends CommonObject
|
||||
$sql.= ", ".(! empty($this->import_key) ? "'".$this->import_key."'":"null");
|
||||
$sql.= ")";
|
||||
|
||||
dol_syslog(get_class($this)."::create sql=".$sql);
|
||||
dol_syslog(get_class($this)."::create", LOG_DEBUG);
|
||||
$result = $this->db->query($sql);
|
||||
if ($result)
|
||||
{
|
||||
@ -335,7 +336,7 @@ class Adherent extends CommonObject
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."user SET";
|
||||
$sql.= " fk_member = '".$this->id."'";
|
||||
$sql.= " WHERE rowid = ".$this->user_id;
|
||||
dol_syslog(get_class($this)."::create sql=".$sql);
|
||||
dol_syslog(get_class($this)."::create", LOG_DEBUG);
|
||||
$resql = $this->db->query($sql);
|
||||
if (! $resql)
|
||||
{
|
||||
@ -347,12 +348,10 @@ class Adherent extends CommonObject
|
||||
|
||||
if (! $notrigger)
|
||||
{
|
||||
// Appel des triggers
|
||||
include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
|
||||
$interface=new Interfaces($this->db);
|
||||
$result=$interface->run_triggers('MEMBER_CREATE',$this,$user,$langs,$conf);
|
||||
if ($result < 0) { $error++; $this->errors=$interface->errors; }
|
||||
// Fin appel triggers
|
||||
// Call trigger
|
||||
$result=$this->call_trigger('MEMBER_CREATE',$user);
|
||||
if ($result < 0) { $error++; }
|
||||
// End call triggers
|
||||
}
|
||||
|
||||
if (count($this->errors))
|
||||
@ -378,7 +377,6 @@ class Adherent extends CommonObject
|
||||
else
|
||||
{
|
||||
$this->error=$this->db->error();
|
||||
dol_syslog(get_class($this)."::create ".$this->error, LOG_ERR);
|
||||
$this->db->rollback();
|
||||
return -1;
|
||||
}
|
||||
@ -455,7 +453,7 @@ class Adherent extends CommonObject
|
||||
$sql.= ", fk_user_mod=".($user->id>0?$user->id:'null'); // Can be null because member can be create by a guest
|
||||
$sql.= " WHERE rowid = ".$this->id;
|
||||
|
||||
dol_syslog(get_class($this)."::update update member sql=".$sql);
|
||||
dol_syslog(get_class($this)."::update update member", LOG_DEBUG);
|
||||
$resql = $this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
@ -501,14 +499,14 @@ class Adherent extends CommonObject
|
||||
{
|
||||
dol_syslog(get_class($this)."::update update link to user");
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."user SET fk_member = NULL WHERE fk_member = ".$this->id;
|
||||
dol_syslog(get_class($this)."::update sql=".$sql, LOG_DEBUG);
|
||||
dol_syslog(get_class($this)."::update", LOG_DEBUG);
|
||||
$resql = $this->db->query($sql);
|
||||
if (! $resql) { $this->error=$this->db->error(); $this->db->rollback(); return -5; }
|
||||
// If there is a user linked to this member
|
||||
if ($this->user_id > 0)
|
||||
{
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."user SET fk_member = ".$this->id." WHERE rowid = ".$this->user_id;
|
||||
dol_syslog(get_class($this)."::update sql=".$sql, LOG_DEBUG);
|
||||
dol_syslog(get_class($this)."::update", LOG_DEBUG);
|
||||
$resql = $this->db->query($sql);
|
||||
if (! $resql) { $this->error=$this->db->error(); $this->db->rollback(); return -5; }
|
||||
}
|
||||
@ -599,12 +597,10 @@ class Adherent extends CommonObject
|
||||
|
||||
if (! $error && ! $notrigger)
|
||||
{
|
||||
// Appel des triggers
|
||||
include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
|
||||
$interface=new Interfaces($this->db);
|
||||
$result=$interface->run_triggers('MEMBER_MODIFY',$this,$user,$langs,$conf);
|
||||
if ($result < 0) { $error++; $this->errors=$interface->errors; }
|
||||
// Fin appel triggers
|
||||
// Call trigger
|
||||
$result=$this->call_trigger('MEMBER_MODIFY',$user);
|
||||
if ($result < 0) { $error++; }
|
||||
// End call triggers
|
||||
}
|
||||
}
|
||||
|
||||
@ -623,7 +619,6 @@ class Adherent extends CommonObject
|
||||
{
|
||||
$this->db->rollback();
|
||||
$this->error=$this->db->lasterror();
|
||||
dol_syslog(get_class($this)."::Update ".$this->error,LOG_ERR);
|
||||
return -2;
|
||||
}
|
||||
}
|
||||
@ -650,7 +645,7 @@ class Adherent extends CommonObject
|
||||
$sql.= " WHERE fk_adherent='".$this->id."'";
|
||||
$sql.= " ORDER by dateadh DESC"; // Sort by start subscription date
|
||||
|
||||
dol_syslog(get_class($this)."::update_end_date sql=".$sql);
|
||||
dol_syslog(get_class($this)."::update_end_date", LOG_DEBUG);
|
||||
$resql=$this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
@ -663,7 +658,7 @@ class Adherent extends CommonObject
|
||||
$sql.= " datefin=".($datefin != '' ? "'".$this->db->idate($datefin)."'" : "null");
|
||||
$sql.= " WHERE rowid = ".$this->id;
|
||||
|
||||
dol_syslog(get_class($this)."::update_end_date sql=".$sql);
|
||||
dol_syslog(get_class($this)."::update_end_date", LOG_DEBUG);
|
||||
$resql=$this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
@ -683,7 +678,6 @@ class Adherent extends CommonObject
|
||||
else
|
||||
{
|
||||
$this->error=$this->db->lasterror();
|
||||
dol_syslog(get_class($this)."::update_end_date ".$this->error, LOG_ERR);
|
||||
$this->db->rollback();
|
||||
return -1;
|
||||
}
|
||||
@ -711,14 +705,13 @@ class Adherent extends CommonObject
|
||||
|
||||
// Remove category
|
||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."categorie_member WHERE fk_member = ".$rowid;
|
||||
dol_syslog(get_class($this)."::delete sql=".$sql);
|
||||
dol_syslog(get_class($this)."::delete", LOG_DEBUG);
|
||||
$resql=$this->db->query($sql);
|
||||
if (! $resql)
|
||||
{
|
||||
$error++;
|
||||
$this->error .= $this->db->lasterror();
|
||||
$errorflag=-1;
|
||||
dol_syslog(get_class($this)."::delete erreur ".$errorflag." ".$this->error, LOG_ERR);
|
||||
|
||||
}
|
||||
|
||||
@ -726,14 +719,13 @@ class Adherent extends CommonObject
|
||||
if (! $error)
|
||||
{
|
||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."cotisation WHERE fk_adherent = ".$rowid;
|
||||
dol_syslog(get_class($this)."::delete sql=".$sql);
|
||||
dol_syslog(get_class($this)."::delete", LOG_DEBUG);
|
||||
$resql=$this->db->query($sql);
|
||||
if (! $resql)
|
||||
{
|
||||
$error++;
|
||||
$this->error .= $this->db->lasterror();
|
||||
$errorflag=-2;
|
||||
dol_syslog(get_class($this)."::delete erreur ".$errorflag." ".$this->error, LOG_ERR);
|
||||
}
|
||||
}
|
||||
|
||||
@ -746,7 +738,6 @@ class Adherent extends CommonObject
|
||||
$error++;
|
||||
$this->error .= $this->db->lasterror();
|
||||
$errorflag=-3;
|
||||
dol_syslog(get_class($this)."::delete erreur ".$errorflag." ".$this->error, LOG_ERR);
|
||||
}
|
||||
}
|
||||
|
||||
@ -769,25 +760,22 @@ class Adherent extends CommonObject
|
||||
if (! $error)
|
||||
{
|
||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."adherent WHERE rowid = ".$rowid;
|
||||
dol_syslog(get_class($this)."::delete sql=".$sql);
|
||||
dol_syslog(get_class($this)."::delete", LOG_DEBUG);
|
||||
$resql=$this->db->query($sql);
|
||||
if (! $resql)
|
||||
{
|
||||
$error++;
|
||||
$this->error .= $this->db->lasterror();
|
||||
$errorflag=-5;
|
||||
dol_syslog(get_class($this)."::delete erreur ".$errorflag." ".$this->error, LOG_ERR);
|
||||
}
|
||||
}
|
||||
|
||||
if (! $error)
|
||||
{
|
||||
// Appel des triggers
|
||||
include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
|
||||
$interface=new Interfaces($this->db);
|
||||
$result=$interface->run_triggers('MEMBER_DELETE',$this,$user,$langs,$conf);
|
||||
if ($result < 0) {$error++; $this->errors=$interface->errors;}
|
||||
// Fin appel triggers
|
||||
// Call trigger
|
||||
$result=$this->call_trigger('MEMBER_DELETE',$user);
|
||||
if ($result < 0) { $error++; }
|
||||
// End call triggers
|
||||
}
|
||||
|
||||
|
||||
@ -841,12 +829,14 @@ class Adherent extends CommonObject
|
||||
$password_indatabase = $password;
|
||||
}
|
||||
|
||||
$this->db->begin();
|
||||
|
||||
// Mise a jour
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."adherent SET pass = '".$this->db->escape($password_indatabase)."'";
|
||||
$sql.= " WHERE rowid = ".$this->id;
|
||||
|
||||
//dol_syslog("Adherent::Password sql=hidden");
|
||||
dol_syslog(get_class($this)."::setPassword sql=".$sql);
|
||||
dol_syslog(get_class($this)."::setPassword", LOG_DEBUG);
|
||||
$result = $this->db->query($sql);
|
||||
if ($result)
|
||||
{
|
||||
@ -885,23 +875,24 @@ class Adherent extends CommonObject
|
||||
|
||||
if (! $error && ! $notrigger)
|
||||
{
|
||||
// Appel des triggers
|
||||
include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
|
||||
$interface=new Interfaces($this->db);
|
||||
$result=$interface->run_triggers('MEMBER_NEW_PASSWORD',$this,$user,$langs,$conf);
|
||||
if ($result < 0) { $error++; $this->errors=$interface->errors; }
|
||||
// Fin appel triggers
|
||||
// Call trigger
|
||||
$result=$this->call_trigger('MEMBER_NEW_PASSWORD',$user);
|
||||
if ($result < 0) { $error++; $this->db->rollback(); return -1; }
|
||||
// End call triggers
|
||||
}
|
||||
|
||||
$this->db->commit();
|
||||
return $this->pass;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->db->rollback();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->db->rollback();
|
||||
dol_print_error($this->db);
|
||||
return -1;
|
||||
}
|
||||
@ -922,7 +913,7 @@ class Adherent extends CommonObject
|
||||
|
||||
// If user is linked to this member, remove old link to this member
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."user SET fk_member = NULL WHERE fk_member = ".$this->id;
|
||||
dol_syslog(get_class($this)."::setUserId sql=".$sql, LOG_DEBUG);
|
||||
dol_syslog(get_class($this)."::setUserId", LOG_DEBUG);
|
||||
$resql = $this->db->query($sql);
|
||||
if (! $resql) { $this->error=$this->db->error(); $this->db->rollback(); return -1; }
|
||||
|
||||
@ -931,7 +922,7 @@ class Adherent extends CommonObject
|
||||
{
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."user SET fk_member = ".$this->id;
|
||||
$sql.= " WHERE rowid = ".$userid;
|
||||
dol_syslog(get_class($this)."::setUserId sql=".$sql, LOG_DEBUG);
|
||||
dol_syslog(get_class($this)."::setUserId", LOG_DEBUG);
|
||||
$resql = $this->db->query($sql);
|
||||
if (! $resql) { $this->error=$this->db->error(); $this->db->rollback(); return -2; }
|
||||
}
|
||||
@ -960,7 +951,7 @@ class Adherent extends CommonObject
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."adherent SET fk_soc = null";
|
||||
$sql.= " WHERE fk_soc = '".$thirdpartyid."'";
|
||||
$sql.= " AND entity = ".$conf->entity;
|
||||
dol_syslog(get_class($this)."::setThirdPartyId sql=".$sql);
|
||||
dol_syslog(get_class($this)."::setThirdPartyId", LOG_DEBUG);
|
||||
$resql = $this->db->query($sql);
|
||||
}
|
||||
|
||||
@ -968,7 +959,7 @@ class Adherent extends CommonObject
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."adherent SET fk_soc = ".($thirdpartyid>0 ? $thirdpartyid : 'null');
|
||||
$sql.= " WHERE rowid = ".$this->id;
|
||||
|
||||
dol_syslog(get_class($this)."::setThirdPartyId sql=".$sql);
|
||||
dol_syslog(get_class($this)."::setThirdPartyId", LOG_DEBUG);
|
||||
$resql = $this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
@ -978,7 +969,6 @@ class Adherent extends CommonObject
|
||||
else
|
||||
{
|
||||
$this->error=$this->db->error();
|
||||
dol_syslog(get_class($this)."::setThirdPartyId ".$this->error, LOG_ERR);
|
||||
$this->db->rollback();
|
||||
return -1;
|
||||
}
|
||||
@ -1088,7 +1078,7 @@ class Adherent extends CommonObject
|
||||
$sql.= " AND d.ref_ext='".$this->db->escape($ref_ext)."'";
|
||||
}
|
||||
|
||||
dol_syslog(get_class($this)."::fetch sql=".$sql);
|
||||
dol_syslog(get_class($this)."::fetch", LOG_DEBUG);
|
||||
$resql=$this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
@ -1169,7 +1159,6 @@ class Adherent extends CommonObject
|
||||
else
|
||||
{
|
||||
$this->error=$this->db->lasterror();
|
||||
dol_syslog(get_class($this)."::fetch ".$this->error, LOG_ERR);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
@ -1198,7 +1187,7 @@ class Adherent extends CommonObject
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."cotisation as c";
|
||||
$sql.= " WHERE c.fk_adherent = ".$this->id;
|
||||
$sql.= " ORDER BY c.dateadh";
|
||||
dol_syslog(get_class($this)."::fetch_subscriptions sql=".$sql);
|
||||
dol_syslog(get_class($this)."::fetch_subscriptions", LOG_DEBUG);
|
||||
|
||||
$resql=$this->db->query($sql);
|
||||
if ($resql)
|
||||
@ -1301,12 +1290,10 @@ class Adherent extends CommonObject
|
||||
$this->last_subscription_date_start=$date;
|
||||
$this->last_subscription_date_end=$datefin;
|
||||
|
||||
// Appel des triggers
|
||||
include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
|
||||
$interface=new Interfaces($this->db);
|
||||
$result=$interface->run_triggers('MEMBER_SUBSCRIPTION',$this,$user,$langs,$conf);
|
||||
if ($result < 0) { $error++; $this->errors=$interface->errors; }
|
||||
// Fin appel triggers
|
||||
// Call trigger
|
||||
$result=$this->call_trigger('MEMBER_SUBSCRIPTION',$user);
|
||||
if ($result < 0) { $error++; }
|
||||
// End call triggers
|
||||
}
|
||||
|
||||
if (! $error)
|
||||
@ -1356,18 +1343,16 @@ class Adherent extends CommonObject
|
||||
$sql.= ", fk_user_valid=".$user->id;
|
||||
$sql.= " WHERE rowid = ".$this->id;
|
||||
|
||||
dol_syslog(get_class($this)."::validate sql=".$sql);
|
||||
dol_syslog(get_class($this)."::validate", LOG_DEBUG);
|
||||
$result = $this->db->query($sql);
|
||||
if ($result)
|
||||
{
|
||||
$this->statut=1;
|
||||
|
||||
// Appel des triggers
|
||||
include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
|
||||
$interface=new Interfaces($this->db);
|
||||
$result=$interface->run_triggers('MEMBER_VALIDATE',$this,$user,$langs,$conf);
|
||||
if ($result < 0) { $error++; $this->errors=$interface->errors; }
|
||||
// Fin appel triggers
|
||||
// Call trigger
|
||||
$result=$this->call_trigger('MEMBER_VALIDATE',$user);
|
||||
if ($result < 0) { $error++; $this->db->rollback(); return -1; }
|
||||
// End call triggers
|
||||
|
||||
$this->db->commit();
|
||||
return 1;
|
||||
@ -1412,12 +1397,10 @@ class Adherent extends CommonObject
|
||||
{
|
||||
$this->statut=0;
|
||||
|
||||
// Appel des triggers
|
||||
include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
|
||||
$interface=new Interfaces($this->db);
|
||||
$result=$interface->run_triggers('MEMBER_RESILIATE',$this,$user,$langs,$conf);
|
||||
if ($result < 0) { $error++; $this->errors=$interface->errors; }
|
||||
// Fin appel triggers
|
||||
// Call trigger
|
||||
$result=$this->call_trigger('MEMBER_RESILIATE',$user);
|
||||
if ($result < 0) { $error++; $this->db->rollback(); return -1; }
|
||||
// End call triggers
|
||||
|
||||
$this->db->commit();
|
||||
return 1;
|
||||
@ -1902,7 +1885,7 @@ class Adherent extends CommonObject
|
||||
$sql.= ' FROM '.MAIN_DB_PREFIX.'adherent as a';
|
||||
$sql.= ' WHERE a.rowid = '.$id;
|
||||
|
||||
dol_syslog(get_class($this)."::info sql=".$sql, LOG_DEBUG);
|
||||
dol_syslog(get_class($this)."::info", LOG_DEBUG);
|
||||
$result=$this->db->query($sql);
|
||||
if ($result)
|
||||
{
|
||||
|
||||
@ -76,7 +76,7 @@ class AdherentType extends CommonObject
|
||||
$sql.= ", ".$conf->entity;
|
||||
$sql.= ")";
|
||||
|
||||
dol_syslog("Adherent_type::create sql=".$sql);
|
||||
dol_syslog("Adherent_type::create", LOG_DEBUG);
|
||||
$result = $this->db->query($sql);
|
||||
if ($result)
|
||||
{
|
||||
@ -188,7 +188,7 @@ class AdherentType extends CommonObject
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."adherent_type as d";
|
||||
$sql .= " WHERE d.rowid = ".$rowid;
|
||||
|
||||
dol_syslog("Adherent_type::fetch sql=".$sql);
|
||||
dol_syslog("Adherent_type::fetch", LOG_DEBUG);
|
||||
|
||||
$resql=$this->db->query($sql);
|
||||
if ($resql)
|
||||
@ -211,7 +211,6 @@ class AdherentType extends CommonObject
|
||||
else
|
||||
{
|
||||
$this->error=$this->db->lasterror();
|
||||
dol_syslog("Adherent_type::fetch ".$this->error, LOG_ERR);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
@ -82,7 +82,7 @@ class Cotisation extends CommonObject
|
||||
$sql.= " '".$this->db->idate($this->datef)."',";
|
||||
$sql.= " ".$this->amount.",'".$this->db->escape($this->note)."')";
|
||||
|
||||
dol_syslog(get_class($this)."::create sql=".$sql);
|
||||
dol_syslog(get_class($this)."::create", LOG_DEBUG);
|
||||
$resql = $this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
@ -91,7 +91,6 @@ class Cotisation extends CommonObject
|
||||
else
|
||||
{
|
||||
$this->error=$this->db->error();
|
||||
dol_syslog($this->error, LOG_ERR);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
@ -113,7 +112,7 @@ class Cotisation extends CommonObject
|
||||
$sql.=" FROM ".MAIN_DB_PREFIX."cotisation";
|
||||
$sql.=" WHERE rowid=".$rowid;
|
||||
|
||||
dol_syslog(get_class($this)."::fetch sql=".$sql);
|
||||
dol_syslog(get_class($this)."::fetch", LOG_DEBUG);
|
||||
$resql=$this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
@ -168,7 +167,7 @@ class Cotisation extends CommonObject
|
||||
$sql .= " fk_bank = ".($this->fk_bank ? $this->fk_bank : 'null');
|
||||
$sql .= " WHERE rowid = ".$this->id;
|
||||
|
||||
dol_syslog(get_class($this)."::update sql=".$sql);
|
||||
dol_syslog(get_class($this)."::update", LOG_DEBUG);
|
||||
$resql = $this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
@ -183,7 +182,6 @@ class Cotisation extends CommonObject
|
||||
{
|
||||
$this->db->rollback();
|
||||
$this->error=$this->db->error();
|
||||
dol_syslog(get_class($this)."::update ".$this->error, LOG_ERR);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
@ -207,7 +205,7 @@ class Cotisation extends CommonObject
|
||||
$this->db->begin();
|
||||
|
||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."cotisation WHERE rowid = ".$this->id;
|
||||
dol_syslog(get_class($this)."::delete sql=".$sql);
|
||||
dol_syslog(get_class($this)."::delete", LOG_DEBUG);
|
||||
$resql=$this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
|
||||
0
htdocs/adherents/class/index.html
Normal file
0
htdocs/adherents/class/index.html
Normal file
@ -81,8 +81,6 @@ if (! empty($canvas))
|
||||
// Security check
|
||||
$result=restrictedArea($user,'adherent',$rowid,'','','fk_soc', 'rowid', $objcanvas);
|
||||
|
||||
$errmsg=''; $errmsgs=array();
|
||||
|
||||
if ($rowid > 0)
|
||||
{
|
||||
// Load member
|
||||
@ -128,7 +126,7 @@ if ($action == 'setuserid' && ($user->rights->user->self->creer || $user->rights
|
||||
if ($userid != $user->id && $userid != $object->user_id)
|
||||
{
|
||||
$error++;
|
||||
$mesg='<div class="error">'.$langs->trans("ErrorUserPermissionAllowsToLinksToItselfOnly").'</div>';
|
||||
setEventMessage($langs->trans("ErrorUserPermissionAllowsToLinksToItselfOnly"), 'errors');
|
||||
}
|
||||
}
|
||||
|
||||
@ -164,7 +162,7 @@ if ($action == 'setsocid')
|
||||
$thirdparty=new Societe($db);
|
||||
$thirdparty->fetch($socid);
|
||||
$error++;
|
||||
$errmsg='<div class="error">'.$langs->trans("ErrorMemberIsAlreadyLinkedToThisThirdParty",$othermember->getFullName($langs),$othermember->login,$thirdparty->name).'</div>';
|
||||
setEventMessage($langs->trans("ErrorMemberIsAlreadyLinkedToThisThirdParty",$othermember->getFullName($langs),$othermember->login,$thirdparty->name), 'errors');
|
||||
}
|
||||
}
|
||||
|
||||
@ -190,12 +188,12 @@ if ($action == 'confirm_create_user' && $confirm == 'yes' && $user->rights->user
|
||||
if ($result < 0)
|
||||
{
|
||||
$langs->load("errors");
|
||||
$errmsg=$langs->trans($nuser->error);
|
||||
setEventMessage($langs->trans($nuser->error), 'errors');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$errmsg=$object->error;
|
||||
setEventMessage($object->error, 'errors');
|
||||
}
|
||||
}
|
||||
|
||||
@ -211,13 +209,13 @@ if ($action == 'confirm_create_thirdparty' && $confirm == 'yes' && $user->rights
|
||||
if ($result < 0)
|
||||
{
|
||||
$langs->load("errors");
|
||||
$errmsg=$langs->trans($company->error);
|
||||
$errmsgs=$company->errors;
|
||||
setEventMessage($langs->trans($company->error), 'errors');
|
||||
setEventMessage($company->errors, 'errors');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$errmsg=$object->error;
|
||||
setEventMessage($object->error, 'errors');
|
||||
}
|
||||
}
|
||||
|
||||
@ -231,7 +229,7 @@ if ($action == 'confirm_sendinfo' && $confirm == 'yes')
|
||||
$result=$object->send_an_email($langs->transnoentitiesnoconv("ThisIsContentOfYourCard")."\n\n%INFOS%\n\n",$langs->transnoentitiesnoconv("CardContent"));
|
||||
|
||||
$langs->load("mails");
|
||||
$mesg=$langs->trans("MailSuccessfulySent", $from, $object->email);
|
||||
setEventMessage($langs->trans("MailSuccessfulySent", $from, $object->email));
|
||||
}
|
||||
}
|
||||
|
||||
@ -252,12 +250,12 @@ if ($action == 'update' && ! $_POST["cancel"] && $user->rights->adherent->creer)
|
||||
if ($morphy != 'mor' && empty($lastname)) {
|
||||
$error++;
|
||||
$langs->load("errors");
|
||||
$errmsg .= $langs->trans("ErrorFieldRequired",$langs->transnoentities("Lastname"))."<br>\n";
|
||||
setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("Lastname")), 'errors');
|
||||
}
|
||||
if ($morphy != 'mor' && (!isset($firstname) || $firstname=='')) {
|
||||
$error++;
|
||||
$langs->load("errors");
|
||||
$errmsg .= $langs->trans("ErrorFieldRequired",$langs->transnoentities("Firstname"))."<br>\n";
|
||||
setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("Firstname")), 'errors');
|
||||
}
|
||||
|
||||
// Create new object
|
||||
@ -343,7 +341,7 @@ if ($action == 'update' && ! $_POST["cancel"] && $user->rights->adherent->creer)
|
||||
$newfile=$dir.'/'.dol_sanitizeFileName($_FILES['photo']['name']);
|
||||
if (! dol_move_uploaded_file($_FILES['photo']['tmp_name'],$newfile,1,0,$_FILES['photo']['error']) > 0)
|
||||
{
|
||||
$message .= '<div class="error">'.$langs->trans("ErrorFailedToSaveFile").'</div>';
|
||||
setEventMessage($langs->trans("ErrorFailedToSaveFile"), 'errors');
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -359,7 +357,7 @@ if ($action == 'update' && ! $_POST["cancel"] && $user->rights->adherent->creer)
|
||||
}
|
||||
else
|
||||
{
|
||||
$errmsgs[] = "ErrorBadImageFormat";
|
||||
setEventMessage("ErrorBadImageFormat", 'errors');
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -387,8 +385,11 @@ if ($action == 'update' && ! $_POST["cancel"] && $user->rights->adherent->creer)
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($object->error) $errmsg=$object->error;
|
||||
else $errmsgs=$object->errors;
|
||||
if ($object->error) {
|
||||
setEventMessage($object->error, 'errors');
|
||||
} else {
|
||||
setEventMessage($object->errors, 'errors');
|
||||
}
|
||||
$action='';
|
||||
}
|
||||
}
|
||||
@ -472,14 +473,14 @@ if ($action == 'add' && $user->rights->adherent->creer)
|
||||
// Check parameters
|
||||
if (empty($morphy) || $morphy == "-1") {
|
||||
$error++;
|
||||
$errmsg .= $langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Nature"))."<br>\n";
|
||||
setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Nature")), 'errors');
|
||||
}
|
||||
// Test si le login existe deja
|
||||
if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED))
|
||||
{
|
||||
if (empty($login)) {
|
||||
$error++;
|
||||
$errmsg .= $langs->trans("ErrorFieldRequired",$langs->trans("Login"))."<br>\n";
|
||||
setEventMessage($langs->trans("ErrorFieldRequired",$langs->trans("Login")), 'errors');
|
||||
}
|
||||
else {
|
||||
$sql = "SELECT login FROM ".MAIN_DB_PREFIX."adherent WHERE login='".$db->escape($login)."'";
|
||||
@ -490,32 +491,32 @@ if ($action == 'add' && $user->rights->adherent->creer)
|
||||
if ($num) {
|
||||
$error++;
|
||||
$langs->load("errors");
|
||||
$errmsg .= $langs->trans("ErrorLoginAlreadyExists",$login)."<br>\n";
|
||||
setEventMessage($langs->trans("ErrorLoginAlreadyExists",$login), 'errors');
|
||||
}
|
||||
}
|
||||
if (empty($pass)) {
|
||||
$error++;
|
||||
$errmsg .= $langs->trans("ErrorFieldRequired",$langs->transnoentities("Password"))."<br>\n";
|
||||
setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("Password")), 'errors');
|
||||
}
|
||||
}
|
||||
if ($morphy != 'mor' && empty($lastname)) {
|
||||
$error++;
|
||||
$langs->load("errors");
|
||||
$errmsg .= $langs->trans("ErrorFieldRequired",$langs->transnoentities("Lastname"))."<br>\n";
|
||||
setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("Lastname")), 'errors');
|
||||
}
|
||||
if ($morphy != 'mor' && (!isset($firstname) || $firstname=='')) {
|
||||
$error++;
|
||||
$langs->load("errors");
|
||||
$errmsg .= $langs->trans("ErrorFieldRequired",$langs->transnoentities("Firstname"))."<br>\n";
|
||||
setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentities("Firstname")), 'errors');
|
||||
}
|
||||
if (! ($typeid > 0)) { // Keep () before !
|
||||
$error++;
|
||||
$errmsg .= $langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Type"))."<br>\n";
|
||||
setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Type")), 'errors');
|
||||
}
|
||||
if ($conf->global->ADHERENT_MAIL_REQUIRED && ! isValidEMail($email)) {
|
||||
$error++;
|
||||
$langs->load("errors");
|
||||
$errmsg .= $langs->trans("ErrorBadEMail",$email)."<br>\n";
|
||||
setEventMessage($langs->trans("ErrorBadEMail",$email), 'errors');
|
||||
}
|
||||
$public=0;
|
||||
if (isset($public)) $public=1;
|
||||
@ -536,8 +537,11 @@ if ($action == 'add' && $user->rights->adherent->creer)
|
||||
{
|
||||
$db->rollback();
|
||||
|
||||
if ($object->error) $errmsg=$object->error;
|
||||
else $errmsgs=$object->errors;
|
||||
if ($object->error) {
|
||||
setEventMessage($object->error, 'errors');
|
||||
} else {
|
||||
setEventMessage($object->errors, 'errors');
|
||||
}
|
||||
|
||||
$action = 'create';
|
||||
}
|
||||
@ -589,15 +593,18 @@ if ($user->rights->adherent->creer && $action == 'confirm_valid' && $confirm ==
|
||||
if ($result < 0)
|
||||
{
|
||||
$error++;
|
||||
$errmsg.=$object->error;
|
||||
setEventMessage($object->error, 'errors');
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$error++;
|
||||
if ($object->error) $errmsg=$object->error;
|
||||
else $errmsgs=$object->errors;
|
||||
if ($object->error) {
|
||||
setEventMessage($object->error, 'errors');
|
||||
} else {
|
||||
setEventMessage($object->errors, 'errors');
|
||||
}
|
||||
}
|
||||
|
||||
if (! $error)
|
||||
@ -613,6 +620,8 @@ if ($user->rights->adherent->creer && $action == 'confirm_valid' && $confirm ==
|
||||
|
||||
if ($user->rights->adherent->supprimer && $action == 'confirm_resign')
|
||||
{
|
||||
$error = 0;
|
||||
|
||||
if ($confirm == 'yes')
|
||||
{
|
||||
$adht = new AdherentType($db);
|
||||
@ -628,17 +637,23 @@ if ($user->rights->adherent->supprimer && $action == 'confirm_resign')
|
||||
}
|
||||
if ($result < 0)
|
||||
{
|
||||
$errmsg.=$object->error;
|
||||
$error++;
|
||||
setEventMessage($object->error, 'errors');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($object->error) $errmsg=$object->error;
|
||||
else $errmsgs=$object->errors;
|
||||
$error++;
|
||||
|
||||
if ($object->error) {
|
||||
setEventMessage($object->error, 'errors');
|
||||
} else {
|
||||
setEventMessage($object->errors, 'errors');
|
||||
}
|
||||
$action='';
|
||||
}
|
||||
}
|
||||
if (! empty($backtopage) && ! $errmsg)
|
||||
if (! empty($backtopage) && ! $error)
|
||||
{
|
||||
header("Location: ".$backtopage);
|
||||
exit;
|
||||
@ -652,7 +667,7 @@ if ($user->rights->adherent->supprimer && $action == 'confirm_del_spip' && $conf
|
||||
{
|
||||
if (!$mailmanspip->del_to_spip($object))
|
||||
{
|
||||
$errmsg.= $langs->trans('DeleteIntoSpipError').': '.$mailmanspip->error."<BR>\n";
|
||||
setEventMessage($langs->trans('DeleteIntoSpipError').': '.$mailmanspip->error, 'errors');
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -663,7 +678,7 @@ if ($user->rights->adherent->creer && $action == 'confirm_add_spip' && $confirm
|
||||
{
|
||||
if (!$mailmanspip->add_to_spip($object))
|
||||
{
|
||||
$errmsg.= $langs->trans('AddIntoSpipError').': '.$mailmanspip->error."<BR>\n";
|
||||
setEventMessage($langs->trans('AddIntoSpipError').': '.$mailmanspip->error, 'errors');
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -725,9 +740,6 @@ else
|
||||
|
||||
print_fiche_titre($langs->trans("NewMember"));
|
||||
|
||||
dol_htmloutput_mesg($errmsg,$errmsgs,'error');
|
||||
dol_htmloutput_mesg($mesg,$mesgs);
|
||||
|
||||
if ($conf->use_javascript_ajax)
|
||||
{
|
||||
print "\n".'<script type="text/javascript" language="javascript">';
|
||||
@ -952,9 +964,6 @@ else
|
||||
|
||||
dol_fiche_head($head, 'general', $langs->trans("Member"), 0, 'user');
|
||||
|
||||
dol_htmloutput_errors($errmsg,$errmsgs);
|
||||
dol_htmloutput_mesg($mesg);
|
||||
|
||||
if ($conf->use_javascript_ajax)
|
||||
{
|
||||
print "\n".'<script type="text/javascript" language="javascript">';
|
||||
@ -1168,8 +1177,6 @@ else
|
||||
|
||||
if ($rowid && $action != 'edit')
|
||||
{
|
||||
dol_htmloutput_mesg($mesg);
|
||||
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* Mode affichage */
|
||||
@ -1199,8 +1206,6 @@ else
|
||||
|
||||
dol_fiche_head($head, 'general', $langs->trans("Member"), 0, 'user');
|
||||
|
||||
dol_htmloutput_errors($errmsg,$errmsgs);
|
||||
|
||||
// Confirm create user
|
||||
if ($action == 'create_user')
|
||||
{
|
||||
|
||||
@ -282,8 +282,6 @@ if ($rowid && $action != 'edit')
|
||||
|
||||
dol_fiche_head($head, 'general', $langs->trans("Subscription"), '', 'payment');
|
||||
|
||||
if ($msg) print '<div class="error">'.$msg.'</div>';
|
||||
|
||||
// Confirmation to delete subscription
|
||||
if ($action == 'delete')
|
||||
{
|
||||
|
||||
@ -68,7 +68,7 @@ $sql.= " AND d.entity IN (".getEntity().")";
|
||||
$sql.= " WHERE t.entity IN (".getEntity().")";
|
||||
$sql.= " GROUP BY t.rowid, t.libelle, t.cotisation, d.statut";
|
||||
|
||||
dol_syslog("index.php::select nb of members by type sql=".$sql, LOG_DEBUG);
|
||||
dol_syslog("index.php::select nb of members by type", LOG_DEBUG);
|
||||
$result = $db->query($sql);
|
||||
if ($result)
|
||||
{
|
||||
@ -106,7 +106,7 @@ $sql.= " AND d.statut = 1 AND d.datefin >= '".$db->idate($now)."'";
|
||||
$sql.= " AND t.rowid = d.fk_adherent_type";
|
||||
$sql.= " GROUP BY d.fk_adherent_type";
|
||||
|
||||
dol_syslog("index.php::select nb of uptodate members by type sql=".$sql, LOG_DEBUG);
|
||||
dol_syslog("index.php::select nb of uptodate members by type", LOG_DEBUG);
|
||||
$result = $db->query($sql);
|
||||
if ($result)
|
||||
{
|
||||
@ -137,15 +137,15 @@ print "</tr>\n";
|
||||
$var=false;
|
||||
print "<tr ".$bc[$var].">";
|
||||
print '<td>';
|
||||
print $langs->trans("Ref").':</td><td><input type="text" name="search_ref" class="flat" size="16">';
|
||||
print '<label for="search_ref">'.$langs->trans("Ref").'</label>:</td><td><input type="text" name="search_ref" id="search_ref" class="flat" size="16">';
|
||||
print '</td><td rowspan="3"><input class="button" type="submit" value="'.$langs->trans("Search").'"></td></tr>';
|
||||
print "<tr ".$bc[$var].">";
|
||||
print '<td>';
|
||||
print $langs->trans("Name").':</td><td><input type="text" name="search_lastname" class="flat" size="16">';
|
||||
print '<label for="search_lastname">'.$langs->trans("Name").'</label>:</td><td><input type="text" name="search_lastname" id="search_lastname" class="flat" size="16">';
|
||||
print '</td></tr>';
|
||||
print "<tr ".$bc[$var].">";
|
||||
print '<td>';
|
||||
print $langs->trans("Other").':</td><td><input type="text" name="sall" class="flat" size="16">';
|
||||
print '<label for="sall">'.$langs->trans("Other").'</label>:</td><td><input type="text" name="sall" id="sall" class="flat" size="16">';
|
||||
print '</td></tr>';
|
||||
print "</table></form>";
|
||||
|
||||
|
||||
@ -60,8 +60,6 @@ if (! $result)
|
||||
|
||||
if ($action == 'dolibarr2ldap')
|
||||
{
|
||||
$message="";
|
||||
|
||||
$db->begin();
|
||||
|
||||
$ldap=new Ldap();
|
||||
@ -75,12 +73,12 @@ if ($action == 'dolibarr2ldap')
|
||||
|
||||
if ($result >= 0)
|
||||
{
|
||||
$message.='<div class="ok">'.$langs->trans("MemberSynchronized").'</div>';
|
||||
setEventMessage($langs->trans("MemberSynchronized"));
|
||||
$db->commit();
|
||||
}
|
||||
else
|
||||
{
|
||||
$message.='<div class="error">'.$ldap->error.'</div>';
|
||||
setEventMessage($ldap->error, 'errors');
|
||||
$db->rollback();
|
||||
}
|
||||
}
|
||||
@ -157,10 +155,6 @@ print '</table>';
|
||||
|
||||
print '</div>';
|
||||
|
||||
|
||||
dol_htmloutput_mesg($message);
|
||||
|
||||
|
||||
/*
|
||||
* Barre d'actions
|
||||
*/
|
||||
|
||||
@ -95,21 +95,22 @@ $sql.= " FROM ".MAIN_DB_PREFIX."adherent as d";
|
||||
if (! empty($search_categ) || ! empty($catid)) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX."categorie_member as cm ON d.rowid = cm.fk_member"; // We need this table joined to the select in order to filter by categ
|
||||
$sql.= ", ".MAIN_DB_PREFIX."adherent_type as t";
|
||||
$sql.= " WHERE d.fk_adherent_type = t.rowid ";
|
||||
if ($catid > 0) $sql.= " AND cm.fk_categorie = ".$catid;
|
||||
if ($catid > 0) $sql.= " AND cm.fk_categorie = ".$db->escape($catid);
|
||||
if ($catid == -2) $sql.= " AND cm.fk_categorie IS NULL";
|
||||
if ($search_categ > 0) $sql.= " AND cm.fk_categorie = ".$search_categ;
|
||||
if ($search_categ > 0) $sql.= " AND cm.fk_categorie = ".$db->escape($search_categ);
|
||||
if ($search_categ == -2) $sql.= " AND cm.fk_categorie IS NULL";
|
||||
$sql.= " AND d.entity = ".$conf->entity;
|
||||
if ($sall)
|
||||
{
|
||||
// For natural search
|
||||
$scrit = explode(' ', $sall);
|
||||
foreach ($scrit as $crit) {
|
||||
foreach ($scrit as $crit)
|
||||
{
|
||||
$sql.=" AND (";
|
||||
if (is_numeric($sall)) $sql.= "d.rowid = ".$sall." OR ";
|
||||
$sql.=" d.firstname LIKE '%".$sall."%' OR d.lastname LIKE '%".$sall."%' OR d.societe LIKE '%".$sall."%'";
|
||||
$sql.=" OR d.email LIKE '%".$sall."%' OR d.login LIKE '%".$sall."%' OR d.address LIKE '%".$sall."%'";
|
||||
$sql.=" OR d.town LIKE '%".$sall."%' OR d.note LIKE '%".$sall."%')";
|
||||
$sql.=" d.firstname LIKE '%".$db->escape($sall)."%' OR d.lastname LIKE '%".$db->escape($sall)."%' OR d.societe LIKE '%".$db->escape($sall)."%'";
|
||||
$sql.=" OR d.email LIKE '%".$db->escape($sall)."%' OR d.login LIKE '%".$db->escape($sall)."%' OR d.address LIKE '%".$db->escape($sall)."%'";
|
||||
$sql.=" OR d.town LIKE '%".$db->escape($sall)."%' OR d.note LIKE '%".$db->escape($sall)."%')";
|
||||
}
|
||||
}
|
||||
if ($type > 0)
|
||||
@ -118,24 +119,24 @@ if ($type > 0)
|
||||
}
|
||||
if (isset($_GET["statut"]) || isset($_POST["statut"]))
|
||||
{
|
||||
$sql.=" AND d.statut in (".$statut.")"; // Peut valoir un nombre ou liste de nombre separes par virgules
|
||||
$sql.=" AND d.statut in (".$db->escape($statut).")"; // Peut valoir un nombre ou liste de nombre separes par virgules
|
||||
}
|
||||
if ($search_ref)
|
||||
{
|
||||
if (is_numeric($search_ref)) $sql.= " AND (d.rowid = ".$search_ref.")";
|
||||
if (is_numeric($search_ref)) $sql.= " AND (d.rowid = ".$db->escape($search_ref).")";
|
||||
else $sql.=" AND 1 = 2"; // Always wrong
|
||||
}
|
||||
if ($search_lastname)
|
||||
{
|
||||
$sql.= " AND (d.firstname LIKE '%".$search_lastname."%' OR d.lastname LIKE '%".$search_lastname."%')";
|
||||
$sql.= " AND (d.firstname LIKE '%".$db->escape($search_lastname)."%' OR d.lastname LIKE '%".$db->escape($search_lastname)."%' OR d.societe LIKE '%".$db->escape($search_lastname)."%')";
|
||||
}
|
||||
if ($search_login)
|
||||
{
|
||||
$sql.= " AND d.login LIKE '%".$search_login."%'";
|
||||
$sql.= " AND d.login LIKE '%".$db->escape($search_login)."%'";
|
||||
}
|
||||
if ($search_email)
|
||||
{
|
||||
$sql.= " AND (d.email LIKE '%".$search_email."%')";
|
||||
$sql.= " AND (d.email LIKE '%".$db->escape($search_email)."%')";
|
||||
}
|
||||
if ($filter == 'uptodate')
|
||||
{
|
||||
@ -158,7 +159,7 @@ if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST))
|
||||
$sql.= $db->order($sortfield,$sortorder);
|
||||
$sql.= $db->plimit($conf->liste_limit+1, $offset);
|
||||
|
||||
dol_syslog("get list sql=".$sql);
|
||||
dol_syslog("get list", LOG_DEBUG);
|
||||
$resql = $db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
|
||||
@ -74,7 +74,7 @@ $sql.=" GROUP BY d.morphy";
|
||||
$foundphy=$foundmor=0;
|
||||
|
||||
// Define $data array
|
||||
dol_syslog("Count member sql=".$sql);
|
||||
dol_syslog("Count member", LOG_DEBUG);
|
||||
$resql=$db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
|
||||
@ -138,7 +138,7 @@ if ($mode)
|
||||
//print $langsen->trans("Country"."FI");exit;
|
||||
|
||||
// Define $data array
|
||||
dol_syslog("Count member sql=".$sql);
|
||||
dol_syslog("Count member", LOG_DEBUG);
|
||||
$resql=$db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
|
||||
@ -237,8 +237,6 @@ if ($action == 'create')
|
||||
|
||||
print_fiche_titre($langs->trans("NewMemberType"));
|
||||
|
||||
if ($mesg) print '<div class="error">'.$mesg.'</div>';
|
||||
|
||||
print '<form action="'.$_SERVER['PHP_SELF'].'" method="POST">';
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
print '<table class="border" width="100%">';
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user