Split the action logic from the run method
Split the action logic from the run method

This makes it easier to re-use this code externally as we don't need to
construct a Mistral context. We can instead pass in the Python clients.

Related-Bug: #1835230
Change-Id: Ia81fadfbca97cf887f857ef196af013747f4ce43

openstack/tripleo-common,openstack/tripleo-common