1
from twisted.internet.defer import fail, succeed
3
from juju.errors import MachinesNotFound
4
from juju.lib.testing import TestCase
5
from juju.providers.orchestra.machine import OrchestraMachine
7
from .common import OrchestraTestMixin
10
class SomeError(Exception):
14
class GetMachinesTest(TestCase, OrchestraTestMixin):
16
def assert_not_found(self, d, instance_ids):
17
self.assertFailure(d, MachinesNotFound)
20
self.assertEquals(error.instance_ids, instance_ids)
24
def assert_machine(self, machine, uid, name):
25
self.assertTrue(isinstance(machine, OrchestraMachine))
26
self.assertEquals(machine.instance_id, uid)
27
self.assertEquals(machine.dns_name, name)
29
def _system(self, uid, name, mgmt_classes):
32
"mgmt_classes": mgmt_classes,
33
"netboot_enabled": True}
35
def mock_get_systems_success(self):
36
self.proxy_m.callRemote("get_systems")
37
self.mocker.result(succeed([
38
self._system("foo", "irrelevant", ["bad"]),
39
self._system("bar", "barrr", ["acquired"]),
40
self._system("baz", "bazzz", ["acquired"])]))
42
def test_multiple_success(self):
44
self.mock_get_systems_success()
47
provider = self.get_provider()
48
d = provider.get_machines()
52
self.assert_machine(bar, "bar", "barrr")
53
self.assert_machine(baz, "baz", "bazzz")
57
def test_multiple_failure(self):
59
self.mock_get_systems_success()
62
provider = self.get_provider()
63
d = provider.get_machines(["foo", "bar"])
64
return self.assert_not_found(d, ["foo"])
66
def test_multiple_error(self):
68
self.proxy_m.callRemote("get_systems")
69
self.mocker.result(fail(SomeError()))
72
provider = self.get_provider()
73
d = provider.get_machines(["foo", "bar"])
74
self.assertFailure(d, SomeError)
77
def test_one_success(self):
79
self.mock_get_systems_success()
82
provider = self.get_provider()
83
d = provider.get_machine("bar")
84
d.addCallback(self.assert_machine, "bar", "barrr")
87
def test_one_failure(self):
89
self.mock_get_systems_success()
92
provider = self.get_provider()
93
d = provider.get_machine("foo")
94
return self.assert_not_found(d, ["foo"])
96
def test_one_error(self):
98
self.proxy_m.callRemote("get_systems")
99
self.mocker.result(fail(SomeError()))
102
provider = self.get_provider()
103
d = provider.get_machine("foo")
104
self.assertFailure(d, SomeError)