This patch updates our Popen calls to enable universal newlines for
calls that we parse or consume the output for. Without
univeral_newlines=True, the output is treated as bytes under python3
which leads to issues later where we are using it as strings.
This is a simple patch to display properly the
warning text for operators when running the FFWD.
Also, rephrases the warning message as FFWD are
now fully tested.
Currently the container image registry references are passed with
--container-registry-file in prepare but as -e in converge for
the upgrade/update/ffwd-upgrade/ceph-upgrade clis.
There is no special handling of the file, and it is ultimately
included as any other environment file .
This removes the --container-registry-file parameter from
openstack overcloud [upgrade|update|ffwd-upgrade|ceph-upgrade]
The related tripleo-common review is for removal of the parameter
from the mistral workflow and action
The related tripleo-docs patch is for updating the operator
instructions to include the container image registry references
using -e as any other environment file.
 2c83dc964b/tripleo_common/actions/package_update.py (L60)
Related: https://review.openstack.org/570903 tripleo-docs
Co-Authored-By: Jiri Stransky <email@example.com>
enable_ssh_admin was not using the user specified ssh key when removing
the generated tmp key. This could result in a permission denied error.
Currently, the preflight checks are run without any output.
This can be misleading, especially if we get an error on one
of the checks - no real way to know WHAT failed in the current
This easy log output helps the operator to know what's going on.
When upgrading the heat-based undercloud a security
question is asked to stop the upgrade if a undercloud
backup was not performed. This patch handles the case
when a negative or wrong answer is provided,
raising a new UndercloudUpradeNotConfirmed exception
which is then captured and displays an informative
log notifying that the upgrade didn't take place.
Also, removing the format call when the undercloud
upgrades fails  as the called string message
doesn't need parametrization.
 - 03254c84f6/tripleoclient/v1/undercloud.py (L158)
Enable disk space check on the undercloud in order to ensure we have
at least the minimal at disposal.
The check itself comes from the tripleo-validations repository in order
to avoid inconsistencies and do a first step toward ansible-driven
A recent patch  removed the usage of the extra resource for TLS
enablement, and now relies solely on ansible which is ran on the HAProxy
service template. We therefore no longer need to use this for the
containerized undercloud (which was causing an issue).
It doesn't help our operators since they have to hack in undercloud.conf
to avoid HTTPS errors. Let's revert this patch so the default are good
and we'll configure the insecure registries on the ip of undercloud by
This reverts commit b1a31a70fd.
I99ce8abde838f16cabefe641b107e55b508c2cf9 updated the failure message to
not actually be a template, however the undercloud was attempting to use
self.heat_launch when formatting the failure message. The heat_launch
code only exists in the TripleoDeploy so this leads to a misleading
error message during failures.
This new function allows to run ansible playbooks
in a convenient way, taking advantage of already existing
run_command_and_log - that latter method has been modified so
that we can get the process full state instead of just the exit
It implements some checks in order to ensure the playbook exists,
and allows to set a temporary ansible configuration file in order
to avoid unwanted behaviors (like retry file creation, callback for
output, and so on).
The parameter was necessary before we inherited the update/upgrade
prepare commands from the deploy command. Nowadays this is not
necessary and can be achieved by 2 different means: either via the
*-prepare.yaml files setting CephAnsiblePlaybook parameter, or via
external_update_tasks and external_upgrade_tasks.
After switching from Heat workflow resources to external_deploy_tasks,
the `ceph-upgrade run` command no longer works and can be
dropped. Instead we'll be using `external-update run` and
`external-upgrade run` commands.
New `openstack overcloud external-update run` and `openstack overcloud
external-upgrade run` commands are defined. These are meant to perform
updates and upgrades for services deployed via
external_deploy_tasks. A separate command is used because external
installers don't fit well within the --nodes and --roles selection
pattern we've established for the normal `update run` and `upgrade
Extend the tripleo client Command class to fetch heat roles data
from a role file. That new class method is shared by many derived
classes afterwards and used for containers images preparations,
containerized overcloud, undercloud and standalone deployments.
Apply normalization to the roles_file in plan management and
preflight checks as well.
Signed-off-by: Bogdan Dobrelya <firstname.lastname@example.org>
Now that the undercloud is containerized, the following command will
sometimes need to be run before the undercloud is installed:
openstack tripleo container image prepare default --local-push-destination
Doing this currently results in push_destination:localhost:8787
because the required network interface doesn't yet exist for the
registry detection logic.
This change will make push_destination be set to True, so that the
registry address is detected at upload time, which is late enough in
the undercloud install to actually work.
Always log the traceback for unexpected exceptions. It's very difficult
to tell where the error came from without the traceback.
It seems this was the intent with
traceback.format_exception doesn't actually print/log anything, it
returns a list of strings, which are just lost if not actually
Instead use traceback.print_exc in the main handler to show the
As an exception can occur before ansible_dir is ever defined, we
shouldn't assume it exists in the main finally clause, otherwise an
Undefined exception could be thrown.
Instead, save ansbie_dir as a class variable and default it to None,
that way we can first check if it's been set before trying to use it in