From 08360e466730598e9ca5f270798cb3a510a5c9ee Mon Sep 17 00:00:00 2001
From: mandreou <marios@redhat.com>
Date: Fri, 04 May 2018 17:30:11 +0300
Subject: [PATCH] Add .deployment.v1.deploy_on_servers to ffwd-upgrade prepare

Before we update the heat stack for the ffwd-upgrade prepare we
can use this to run any required commands on the overcloud.

The current use case is removal of the
/usr/libexec/os-apply-config/templates/etc/os-net-config/config.json
Otherwise after the upgrade prepare is executed, overcloud nodes
will have empty config.json for os-net-config (also discussed [0])

The current implementation of .deployment.v1.deploy_on_servers assumes
all servers are managed by nova. This is OK for N..Q ffu but we will
need to revisit in future, see [1] for more info.

[0]: https://bugzilla.redhat.com/show_bug.cgi?id=1561255
[1]: https://bugs.launchpad.net/tripleo/+bug/1770356
Related-Bug: 1758161
Related:
    tripleo-common Ic138c4925c5c96d1cf718af7ae59bcf5f0ba96dc
Change-Id: I77fdc9deab97c785725f09b8529c512950753f86
---

diff --git a/tripleoclient/constants.py b/tripleoclient/constants.py
index 6c1f8c3..4cd4e91 100644
--- a/tripleoclient/constants.py
+++ b/tripleoclient/constants.py
@@ -62,6 +62,9 @@
 UPGRADE_CONVERGE_ENV = "environments/lifecycle/upgrade-converge.yaml"
 FFWD_UPGRADE_PREPARE_ENV = "environments/lifecycle/ffwd-upgrade-prepare.yaml"
 FFWD_UPGRADE_CONVERGE_ENV = "environments/lifecycle/ffwd-upgrade-converge.yaml"
+FFWD_UPGRADE_PREPARE_SCRIPT = ("#!/bin/bash \n"
+                               "rm -f /usr/libexec/os-apply-config/templates/"
+                               "etc/os-net-config/config.json || true \n")
 CEPH_UPGRADE_PREPARE_ENV = "environments/lifecycle/ceph-upgrade-prepare.yaml"
 
 ENABLE_SSH_ADMIN_TIMEOUT = 300
diff --git a/tripleoclient/tests/v1/overcloud_ffwd_upgrade/fakes.py b/tripleoclient/tests/v1/overcloud_ffwd_upgrade/fakes.py
index bfd5f1d..df61e1a 100644
--- a/tripleoclient/tests/v1/overcloud_ffwd_upgrade/fakes.py
+++ b/tripleoclient/tests/v1/overcloud_ffwd_upgrade/fakes.py
@@ -25,7 +25,7 @@
         self._instance = mock.Mock()
         self.object_store = FakeObjectClient()
 
-    def messaging_websocket(self):
+    def messaging_websocket(self, queue="tripleo"):
         return fakes.FakeWebSocket()
 
 
diff --git a/tripleoclient/v1/overcloud_ffwd_upgrade.py b/tripleoclient/v1/overcloud_ffwd_upgrade.py
index ae7a896..7ed9509 100644
--- a/tripleoclient/v1/overcloud_ffwd_upgrade.py
+++ b/tripleoclient/v1/overcloud_ffwd_upgrade.py
@@ -68,6 +68,14 @@
                                    parsed_args.stack)
 
         stack_name = stack.stack_name
+
+        # ffwd-upgrade "init" run command on overcloud nodes
+        package_update.run_on_nodes(
+            clients, server_name='all',
+            config_name='ffwd-upgrade-prepare',
+            config=constants.FFWD_UPGRADE_PREPARE_SCRIPT, group='script',
+            queue_name=constants.FFWD_UPGRADE_QUEUE)
+
         registry = oooutils.load_container_registry(
             self.log, parsed_args.container_registry_file)
         ceph_ansible_playbook = parsed_args.ceph_ansible_playbook
diff --git a/tripleoclient/workflows/package_update.py b/tripleoclient/workflows/package_update.py
index 1324612..a5ff63c 100644
--- a/tripleoclient/workflows/package_update.py
+++ b/tripleoclient/workflows/package_update.py
@@ -169,3 +169,24 @@
         print('Success')
     else:
         raise RuntimeError('ffwd upgrade converge failed: {}'.format(payload))
+
+
+def run_on_nodes(clients, **workflow_input):
+    workflow_client = clients.workflow_engine
+    tripleoclients = clients.tripleoclient
+
+    with tripleoclients.messaging_websocket(
+            workflow_input['queue_name']) as ws:
+        execution = base.start_workflow(
+            workflow_client,
+            'tripleo.deployment.v1.deploy_on_servers',
+            workflow_input=workflow_input
+        )
+
+        for payload in base.wait_for_messages(workflow_client, ws, execution):
+            assert payload['status'] == "SUCCESS", pprint.pformat(payload)
+
+    if payload['status'] == "SUCCESS":
+        print('Success')
+    else:
+        raise RuntimeError('run on nodes failed: {}'.format(payload))
