4
from twisted.internet.defer import fail, succeed
4
from twisted.internet.defer import fail, succeed, inlineCallbacks
6
6
from juju.errors import EnvironmentNotFound, ProviderError
7
7
from juju.lib.testing import TestCase
8
from juju.machine.tests.test_constraints import dummy_cs
8
9
from juju.providers.common.base import MachineProviderBase
9
10
from juju.providers.dummy import DummyMachine, FileStorage
28
29
class DummyProvider(MachineProviderBase):
30
def __init__(self, file_storage, zookeeper):
31
provider_type = "dummy"
32
config = {"default-series": "splendid"}
34
def __init__(self, test, file_storage, zookeeper):
31
36
self._file_storage = file_storage
32
37
self._zookeeper = zookeeper
41
46
return succeed([self._zookeeper])
42
47
return fail(EnvironmentNotFound())
44
def start_machine(self, machine_id, master=False):
49
def start_machine(self, machine_data, master=False):
50
self._test.assertTrue(master)
51
self._test.assertEquals(machine_data["machine-id"], "0")
52
constraints = machine_data["constraints"]
53
self._test.assertEquals(constraints["provider-type"], "dummy")
54
self._test.assertEquals(constraints["ubuntu-series"], "splendid")
55
self._test.assertEquals(constraints["arch"], "arm")
46
56
return [DummyMachine("i-keepzoos")]
49
59
class BootstrapTest(TestCase):
63
yield super(BootstrapTest, self).setUp()
64
self.constraints = dummy_cs.parse(["arch=arm"]).with_series("splendid")
51
66
def test_unknown_error(self):
52
provider = DummyProvider(None, SomeError())
53
d = provider.bootstrap()
67
provider = DummyProvider(self, None, SomeError())
68
d = provider.bootstrap(self.constraints)
54
69
self.assertFailure(d, SomeError)
57
72
def test_zookeeper_exists(self):
58
73
log = self.capture_logging("juju.common", level=logging.DEBUG)
59
74
provider = DummyProvider(
60
WorkingFileStorage(), DummyMachine("i-alreadykeepzoos"))
61
d = provider.bootstrap()
75
self, WorkingFileStorage(), DummyMachine("i-alreadykeepzoos"))
76
d = provider.bootstrap(self.constraints)
63
78
def verify(machines):
64
79
(machine,) = machines
75
90
def test_bad_storage(self):
76
provider = DummyProvider(UnwritableFileStorage(), None)
77
d = provider.bootstrap()
91
provider = DummyProvider(self, UnwritableFileStorage(), None)
92
d = provider.bootstrap(self.constraints)
78
93
self.assertFailure(d, ProviderError)
88
103
def test_create_zookeeper(self):
89
104
log = self.capture_logging("juju.common", level=logging.DEBUG)
90
provider = DummyProvider(WorkingFileStorage(), None)
91
d = provider.bootstrap()
105
provider = DummyProvider(self, WorkingFileStorage(), None)
106
d = provider.bootstrap(self.constraints)
93
108
def verify(machines):
94
109
(machine,) = machines