EnQuotaModule » Cronologia » Versione 1
Amministratore Truelite, 10-06-2010 17:05
| 1 | 1 | Amministratore Truelite | == Module quota == |
|---|---|---|---|
| 2 | |||
| 3 | This is a simple wrapper for the {{{quotactl}}} system call, allowing getting and setting quota directly from python (no need to call an external program and parse its output). |
||
| 4 | |||
| 5 | It's still extremely primordial, providing limited functionality and working only with Linux quota version 2. It has been tested on Debian Etch and Lenny. As my first attempt to write a module it is also very far from elegance (and no pythonic at all). |
||
| 6 | |||
| 7 | === Installation === |
||
| 8 | |||
| 9 | To install the module you need the following steps (provided you have standard development tools installed): |
||
| 10 | {{{ |
||
| 11 | svn co https://labs.truelite.it/svn/cyrcus/quotamodule |
||
| 12 | cd quotamodule/ |
||
| 13 | python setup.py build |
||
| 14 | }}} |
||
| 15 | then you can copy the {{{quota.so}}} module at its destination (if you want to just check it with python you can use your current working directory). |
||
| 16 | |||
| 17 | === Use === |
||
| 18 | |||
| 19 | The module provides the following functions (interface is preliminar, it will be probably changed in future releases): |
||
| 20 | |||
| 21 | ||'''Function'''||'''Arguments'''||'''Description'''|| |
||
| 22 | ||{{{get_user_quota}}}||{{{uid}}} (integer), {{{device}}} (string)|| get user quota|| |
||
| 23 | ||{{{get_group_quota}}}||{{{gid}}} (integer), {{{device}}} (string)|| get group quota|| |
||
| 24 | ||{{{set_user_block_quota}}}||{{{uid}}} (integer), {{{device}}} (string), {{{(soft,hard)}}} *tuple of two int || set block user quota|| |
||
| 25 | ||{{{set_user_inode_quota}}}||{{{uid}}} (integer), {{{device}}} (string), {{{(soft,hard)}}} *tuple of two int || set inode user quota|| |
||
| 26 | ||{{{set_group_block_quota}}}||{{{gid}}} (integer), {{{device}}} (string), {{{(soft,hard)}}} *tuple of two int || set block group quota|| |
||
| 27 | ||{{{set_group_inode_quota}}}||{{{gid}}} (integer), {{{device}}} (string), {{{(soft,hard)}}} *tuple of two int || set inode group quota|| |
||
| 28 | |||
| 29 | User or group can be only specified by numeric ID (uid or gid). The {{{device}}} string must be the device pathname for the filesystem on which we want to operate. |
||
| 30 | |||
| 31 | When setting quotas they must be provided as a tuple of two integer values (first for soft limit, second for hard limit). They will be applied to inode/block, user/group according to the chosen function. |
||
| 32 | |||
| 33 | Reading quota will give back a tuple of two dictionaries. First dictionary is for block quota data, second for inode quota data. Both dictionaries will have the same string keys according to the following table: |
||
| 34 | |||
| 35 | ||'''Key'''||'''Desctiption'''|| |
||
| 36 | ||used|| integer with the actual usage of the resource (blocks are in byte, inodes is the number)|| |
||
| 37 | ||quota|| a two integers tuple with the current value of the quota (soft limit, hard limit) || |
||
| 38 | ||grace|| an integer with the time_t value of the grace expiration (if active)|| |
||
| 39 | |||
| 40 | === Error handling === |
||
| 41 | |||
| 42 | All error in calling the {{{quotactl}}} function will raise a {{{OSError}}} exception passing the error value in {{{errno}}}. |