| [appendix] |
| |
| [[ap-lsb]] |
| == Init Script LSB Compliance == |
| |
| The relevant part of the |
| http://refspecs.linuxfoundation.org/lsb.shtml[LSB specifications] |
| includes a description of all the return codes listed here. |
| |
| Assuming `some_service` is configured correctly and currently |
| inactive, the following sequence will help you determine if it is |
| LSB-compatible: |
| |
| . Start (stopped): |
| + |
| ---- |
| # /etc/init.d/some_service start ; echo "result: $?" |
| ---- |
| + |
| .. Did the service start? |
| .. Did the command print *result: 0* (in addition to its usual output)? |
| + |
| . Status (running): |
| + |
| ---- |
| # /etc/init.d/some_service status ; echo "result: $?" |
| ---- |
| + |
| .. Did the script accept the command? |
| .. Did the script indicate the service was running? |
| .. Did the command print *result: 0* (in addition to its usual output)? |
| + |
| . Start (running): |
| + |
| ---- |
| # /etc/init.d/some_service start ; echo "result: $?" |
| ---- |
| + |
| .. Is the service still running? |
| .. Did the command print *result: 0* (in addition to its usual output)? |
| + |
| . Stop (running): |
| + |
| ---- |
| # /etc/init.d/some_service stop ; echo "result: $?" |
| ---- |
| + |
| .. Was the service stopped? |
| .. Did the command print *result: 0* (in addition to its usual output)? |
| + |
| . Status (stopped): |
| + |
| ---- |
| # /etc/init.d/some_service status ; echo "result: $?" |
| ---- |
| + |
| .. Did the script accept the command? |
| .. Did the script indicate the service was not running? |
| .. Did the command print *result: 3* (in addition to its usual output)? |
| + |
| . Stop (stopped): |
| + |
| ---- |
| # /etc/init.d/some_service stop ; echo "result: $?" |
| ---- |
| + |
| .. Is the service still stopped? |
| .. Did the command print *result: 0* (in addition to its usual output)? |
| + |
| . Status (failed): |
| + |
| .. This step is not readily testable and relies on manual inspection of the script. |
| + |
| The script can use one of the error codes (other than 3) listed in the |
| LSB spec to indicate that it is active but failed. This tells the |
| cluster that before moving the resource to another node, it needs to |
| stop it on the existing one first. |
| |
| If the answer to any of the above questions is no, then the script is |
| not LSB-compliant. Your options are then to either fix the script or |
| write an OCF agent based on the existing script. |