There are a couple of issues that have ended up being hit by devstack
plugin authors which we can detect and error in a much nicer way
instead of them having a cryptic systemd failure.
Change-Id: I45e4ac363aeefb4503015f9e1b57c58f79b58f40
| ... | ... |
@@ -1480,10 +1480,41 @@ function write_uwsgi_user_unit_file {
|
| 1480 | 1480 |
$SYSTEMCTL daemon-reload |
| 1481 | 1481 |
} |
| 1482 | 1482 |
|
| 1483 |
+function _common_systemd_pitfalls {
|
|
| 1484 |
+ local cmd=$1 |
|
| 1485 |
+ # do some sanity checks on $cmd to see things we don't expect to work |
|
| 1486 |
+ |
|
| 1487 |
+ if [[ "$cmd" =~ "sudo" ]]; then |
|
| 1488 |
+ local msg=<<EOF |
|
| 1489 |
+You are trying to use run_process with sudo, this is not going to work under systemd. |
|
| 1490 |
+ |
|
| 1491 |
+If you need to run a service as a user other than $STACK_USER call it with: |
|
| 1492 |
+ |
|
| 1493 |
+ run_process \$name \$cmd \$group \$user |
|
| 1494 |
+EOF |
|
| 1495 |
+ die $LINENO $msg |
|
| 1496 |
+ fi |
|
| 1497 |
+ |
|
| 1498 |
+ if [[ ! "$cmd" =~ ^/ ]]; then |
|
| 1499 |
+ local msg=<<EOF |
|
| 1500 |
+The cmd="$cmd" does not start with an absolute path. It will fail to |
|
| 1501 |
+start under systemd. |
|
| 1502 |
+ |
|
| 1503 |
+Please update your run_process stanza to have an absolute path. |
|
| 1504 |
+EOF |
|
| 1505 |
+ die $LINENO $msg |
|
| 1506 |
+ fi |
|
| 1507 |
+ |
|
| 1508 |
+} |
|
| 1509 |
+ |
|
| 1510 |
+# Helper function to build a basic unit file and run it under systemd. |
|
| 1483 | 1511 |
function _run_under_systemd {
|
| 1484 | 1512 |
local service=$1 |
| 1485 | 1513 |
local command="$2" |
| 1486 | 1514 |
local cmd=$command |
| 1515 |
+ # sanity check the command |
|
| 1516 |
+ _common_systemd_pitfalls "$cmd" |
|
| 1517 |
+ |
|
| 1487 | 1518 |
local systemd_service="devstack@$service.service" |
| 1488 | 1519 |
local group=$3 |
| 1489 | 1520 |
local user=${4:-$STACK_USER}
|
| ... | ... |
@@ -1527,7 +1558,7 @@ function is_running {
|
| 1527 | 1527 |
# If an optional group is provided sg will be used to run the |
| 1528 | 1528 |
# command as that group. |
| 1529 | 1529 |
# Uses globals ``USE_SCREEN`` |
| 1530 |
-# run_process service "command-line" [group] |
|
| 1530 |
+# run_process service "command-line" [group] [user] |
|
| 1531 | 1531 |
function run_process {
|
| 1532 | 1532 |
local service=$1 |
| 1533 | 1533 |
local command="$2" |