cinder/releasenotes/notes/windows-multiple-backends-9aa83631ad3d42f2.yaml
Lucian Petrut 3510f38604 Windows: allow multiple c-vol backends per service
This change will allow enabling multiple backends within a single
Cinder Volume service on Windows.

We cannot leverage the oslo_service process launcher as it has some
Windows compatibility issues:
- it forks
- it uses eventlet GreenPipe (not available on Windows)
- child processes receive the service objects that should be
launched. Those are not serializable, for which reason we're not
able to pass them without fork support.

For this reason, we'll use the following alternate approach on Windows:
- we're adding another cli argument called 'backend_name', which allows
requesting a certain backend.
- we're adding a Windows process launcher that will just use
subprocess.Popen for each backend, using the above mentioned argument
to request a specific backend. Thus, for each backend, we'll invoke a
command such as the following:
    cinder-volume.exe --backend_name=<backend_name> --config-file=<conf>
- the process launcher will wait for all the subprocesses to exit. In
order to ensure that all subprocesses are killed when the parent dies
unexpectedly, we're associating Win32 job objects to the child processes,
requesting them to be killed when all the job handles are closed. Those
handles are kept by the parent process, being closed when the process
dies.

Depends-On: #Icc2bbe9191e6db685c0fd294abc1d0eb24bc420c

Closes-Bug: #1734334
Change-Id: I80fa111fabd46c7802b89fd6136edd8fa8652d47
2018-01-11 13:11:39 +02:00

6 lines
160 B
YAML

---
fixes:
- |
Multiple backends may now be enabled within the same Cinder Volume service
on Windows by using the ``enabled_backends`` config option.