Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix(enter): start default services before executing subcommand
The --run option in the enter command should ensure that the default services have all started before executing the subcommand, as specified in the help info. This, however, does not seem to be the case as the current implementation only sends a request to the API to start the default services and immediately afterwards, executes the subcommand. This can have undesired behavior. For example, the following fails: $ pebble enter --run stop srv1 2023-06-01T09:52:52.516Z [pebble] Started daemon. 2023-06-01T09:52:52.546Z [pebble] POST /v1/services 29.059682ms 202 2023-06-01T09:52:52.546Z [pebble] Started default services with change 386. 2023-06-01T09:52:52.565Z [pebble] Service "srv1" starting: <cmd..> 2023-06-01T09:52:52.584Z [pebble] POST /v1/services 37.51026ms 202 error: cannot perform the following tasks: - Stop service "srv1" (cannot stop service while starting) It may also happen that the stop subcommand is executed, before the service hasn't even been initiated/started. $ pebble enter --run stop srv99 2023-06-22T05:46:02.604Z [pebble] Started daemon. 2023-06-22T05:46:02.619Z [pebble] Service "srv55" starting: <cmd..> 2023-06-22T05:46:02.629Z [pebble] POST /v1/services 23.863368ms 202 2023-06-22T05:46:02.630Z [pebble] Started default services with change 9. 2023-06-22T05:46:02.637Z [pebble] Service "srv1" starting: <cmd..> 2023-06-22T05:46:02.646Z [pebble] POST /v1/services 14.761043ms 202 2023-06-22T11:46:02+06:00 INFO Service "srv99" has never been started. This commit should ensure that the default services have all started, before executing the subcommand. It does so by ensuring the "change" made by the "autostart" request is ready, before running the subcommand. The status of the "change" can be "Error" once it's ready; the subcommand will still be executed after.
- Loading branch information