Stopping of new containers during the upgrade
leads to a lot of errors and raise conditions.
At the same time containers should be run under
supervisor because we need to store logs.
Rewrote upgrade flow:
* stop old containers
* upload the images
* generate supervisor config with autostart False,
it allows to prevent supervisor to run containers
* run containers in method `create_and_start_new_containers`
one by one in right order
* regenerate configs for supervisor with autostart
True, to start all of the containers after supervisor
restart
* verify containers
How it helps:
* there was race condition when we were running
services via supervisor and iptables cleaning
at the same time, supervisor not always was
able to start all containers, as result we
could get nat rules with the same port but
different ip addresses
* containers stopping could interrupt non-atomic
actions, like db migration in keystone container
* since we run container one by one, we will not
be able to get problem with ip duplication,
during the upgrade
Related-bug: #1357357
Related-bug: #1364087
Closes-bug: #1364054
Change-Id: I86accb8b2c2fc5a15425e32838a58c9b45022d8d