Browse code

Merge "systemd: Always create the systemd unit files"

Jenkins authored on 2017/06/14 16:50:37
Showing 2 changed files
... ...
@@ -125,6 +125,13 @@ if [[ -n "$SCREEN_LOGDIR" ]] && [[ -d "$SCREEN_LOGDIR" ]]; then
125 125
     sudo rm -rf $SCREEN_LOGDIR
126 126
 fi
127 127
 
128
+# Clean out the sytemd user unit files if systemd was used.
129
+if [[ "$USE_SYSTEMD" = "True" ]]; then
130
+    sudo find $SYSTEMD_DIR -type f -name '*devstack@*service' -delete
131
+    # Make systemd aware of the deletion.
132
+    $SYSTEMCTL daemon-reload
133
+fi
134
+
128 135
 # Clean up venvs
129 136
 DIRS_TO_CLEAN="$WHEELHOUSE ${PROJECT_VENV[@]} .config/openstack"
130 137
 rm -rf $DIRS_TO_CLEAN
... ...
@@ -1508,8 +1508,13 @@ EOF
1508 1508
 
1509 1509
 }
1510 1510
 
1511
-# Helper function to build a basic unit file and run it under systemd.
1512
-function _run_under_systemd {
1511
+# Defines a systemd service which can be enabled and started later on.
1512
+# arg1: The openstack service name ('n-cpu', 'c-sch', ...).
1513
+# arg2: The command to start (e.g. path to service binary + config files).
1514
+# arg3: The group which owns the process.
1515
+# arg4: The user which owns the process.
1516
+# Returns: The systemd service name which got defined.
1517
+function _define_systemd_service {
1513 1518
     local service=$1
1514 1519
     local command="$2"
1515 1520
     local cmd=$command
... ...
@@ -1524,9 +1529,7 @@ function _run_under_systemd {
1524 1524
     else
1525 1525
         write_user_unit_file $systemd_service "$cmd" "$group" "$user"
1526 1526
     fi
1527
-
1528
-    $SYSTEMCTL enable $systemd_service
1529
-    $SYSTEMCTL start $systemd_service
1527
+    echo $systemd_service
1530 1528
 }
1531 1529
 
1532 1530
 # Helper to remove the ``*.failure`` files under ``$SERVICE_DIR/$SCREEN_NAME``.
... ...
@@ -1567,11 +1570,19 @@ function run_process {
1567 1567
     local user=$4
1568 1568
 
1569 1569
     local name=$service
1570
+    local systemd_service
1570 1571
 
1571 1572
     time_start "run_process"
1573
+    # Note we deliberately make all service files, even if the service
1574
+    # isn't enabled, so it can be enabled by a dev manually on command
1575
+    # line.
1576
+    if [[ "$USE_SYSTEMD" = "True" ]]; then
1577
+        systemd_service=$(_define_systemd_service "$name" "$command" "$group" "$user")
1578
+    fi
1572 1579
     if is_service_enabled $service; then
1573 1580
         if [[ "$USE_SYSTEMD" = "True" ]]; then
1574
-            _run_under_systemd "$name" "$command" "$group" "$user"
1581
+            $SYSTEMCTL enable $systemd_service
1582
+            $SYSTEMCTL start $systemd_service
1575 1583
         elif [[ "$USE_SCREEN" = "True" ]]; then
1576 1584
             if [[ "$user" == "root" ]]; then
1577 1585
                 command="sudo $command"