Merge "Add wait functions to orchestration proxy"
This commit is contained in:
commit
73d4ec42c0
openstack
@ -20,6 +20,7 @@ from openstack.orchestration.v1 import stack_files as _stack_files
|
||||
from openstack.orchestration.v1 import stack_template as _stack_template
|
||||
from openstack.orchestration.v1 import template as _template
|
||||
from openstack import proxy
|
||||
from openstack import resource
|
||||
|
||||
|
||||
class Proxy(proxy.Proxy):
|
||||
@ -360,3 +361,44 @@ class Proxy(proxy.Proxy):
|
||||
return tmpl.validate(self, template, environment=environment,
|
||||
template_url=template_url,
|
||||
ignore_errors=ignore_errors)
|
||||
|
||||
def wait_for_status(self, res, status='ACTIVE', failures=None,
|
||||
interval=2, wait=120):
|
||||
"""Wait for a resource to be in a particular status.
|
||||
|
||||
:param res: The resource to wait on to reach the specified status.
|
||||
The resource must have a ``status`` attribute.
|
||||
:type resource: A :class:`~openstack.resource.Resource` object.
|
||||
:param status: Desired status.
|
||||
:param failures: Statuses that would be interpreted as failures.
|
||||
:type failures: :py:class:`list`
|
||||
:param interval: Number of seconds to wait before to consecutive
|
||||
checks. Default to 2.
|
||||
:param wait: Maximum number of seconds to wait before the change.
|
||||
Default to 120.
|
||||
:returns: The resource is returned on success.
|
||||
:raises: :class:`~openstack.exceptions.ResourceTimeout` if transition
|
||||
to the desired status failed to occur in specified seconds.
|
||||
:raises: :class:`~openstack.exceptions.ResourceFailure` if the resource
|
||||
has transited to one of the failure statuses.
|
||||
:raises: :class:`~AttributeError` if the resource does not have a
|
||||
``status`` attribute.
|
||||
"""
|
||||
failures = [] if failures is None else failures
|
||||
return resource.wait_for_status(
|
||||
self, res, status, failures, interval, wait)
|
||||
|
||||
def wait_for_delete(self, res, interval=2, wait=120):
|
||||
"""Wait for a resource to be deleted.
|
||||
|
||||
:param res: The resource to wait on to be deleted.
|
||||
:type resource: A :class:`~openstack.resource.Resource` object.
|
||||
:param interval: Number of seconds to wait before to consecutive
|
||||
checks. Default to 2.
|
||||
:param wait: Maximum number of seconds to wait before the change.
|
||||
Default to 120.
|
||||
:returns: The resource is returned on success.
|
||||
:raises: :class:`~openstack.exceptions.ResourceTimeout` if transition
|
||||
to delete failed to occur in the specified seconds.
|
||||
"""
|
||||
return resource.wait_for_delete(self, res, interval, wait)
|
||||
|
@ -10,6 +10,8 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import yaml
|
||||
|
||||
from openstack import exceptions
|
||||
from openstack.orchestration.v1 import stack
|
||||
from openstack.tests.functional import base
|
||||
@ -26,9 +28,6 @@ class TestStack(base.BaseFunctionalTest):
|
||||
|
||||
def setUp(self):
|
||||
super(TestStack, self).setUp()
|
||||
self.skipTest(
|
||||
'Orchestration functional tests disabled:'
|
||||
' https://storyboard.openstack.org/#!/story/1525005')
|
||||
self.require_service('orchestration')
|
||||
|
||||
if self.conn.compute.find_keypair(self.NAME) is None:
|
||||
@ -36,7 +35,10 @@ class TestStack(base.BaseFunctionalTest):
|
||||
image = next(self.conn.image.images())
|
||||
tname = "openstack/tests/functional/orchestration/v1/hello_world.yaml"
|
||||
with open(tname) as f:
|
||||
template = f.read()
|
||||
template = yaml.safe_load(f)
|
||||
# TODO(mordred) Fix the need for this. We have better support in
|
||||
# the shade layer.
|
||||
template['heat_template_version'] = '2013-05-23'
|
||||
self.network, self.subnet = test_network.create_network(
|
||||
self.conn,
|
||||
self.NAME,
|
||||
|
Loading…
x
Reference in New Issue
Block a user