~hazmat/pyjuju/peers-from-hurd

« back to all changes in this revision

Viewing changes to juju/providers/orchestra/tests/test_shutdown.py

  • Committer: Kapil Thangavelu
  • Author(s): Kapil Thangavelu
  • Date: 2013-02-01 18:24:47 UTC
  • mfrom: (611.2.1 drop-orchestra)
  • Revision ID: kapil.foss@gmail.com-20130201182447-a3qsgpgwqyeudikc
Drop orchestra provider support

The orchestra provider is dead upstream, and represents
a significant support burden on the code base. Given
hardware deployments are directed towards MaaS and no
current users, its better to drop this now.

R=
CC=
https://codereview.appspot.com/7225084

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
from twisted.internet.defer import succeed
2
 
 
3
 
from juju.errors import MachinesNotFound
4
 
from juju.lib.testing import TestCase
5
 
from juju.providers.orchestra.machine import OrchestraMachine
6
 
 
7
 
from .common import OrchestraTestMixin
8
 
 
9
 
 
10
 
class SomeError(Exception):
11
 
    pass
12
 
 
13
 
 
14
 
class ShutdownTest(OrchestraTestMixin, TestCase):
15
 
 
16
 
    def assert_machine(self, machine, uid, name):
17
 
        self.assertTrue(isinstance(machine, OrchestraMachine))
18
 
        self.assertEquals(machine.instance_id, uid)
19
 
        self.assertEquals(machine.dns_name, name)
20
 
 
21
 
    def assert_missing(self, d, instance_ids):
22
 
        self.assertFailure(d, MachinesNotFound)
23
 
 
24
 
        def verify(error):
25
 
            self.assertEquals(error.instance_ids, instance_ids)
26
 
        d.addCallback(verify)
27
 
        return d
28
 
 
29
 
    def mock_get_systems(self, *systems):
30
 
        self.proxy_m.callRemote("get_systems")
31
 
        # skip an expected ks_meta key, to verify we can handle situations
32
 
        # where we never managed to start it properly in the first place
33
 
        self.mocker.result(succeed([
34
 
            {"uid": uid, "name": name, "mgmt_classes": ["keep", cls],
35
 
            "netboot_enabled": True,
36
 
            "ks_meta": {"MACHINE_ID": "123", "PRESERVE": "blob"}}
37
 
            for (uid, name, cls) in systems]))
38
 
 
39
 
    def mock_shutdown_release(self, uid, name):
40
 
        self.mock_get_systems((uid, name, "acquired"))
41
 
        self.proxy_m.callRemote("find_system", {"uid": uid})
42
 
        self.mocker.result(succeed([name]))
43
 
        self.proxy_m.callRemote("get_system_handle", name, "")
44
 
        self.mocker.result(succeed("some-handle"))
45
 
        self.proxy_m.callRemote(
46
 
            "modify_system", "some-handle", "ks_meta", {"PRESERVE": "blob"},
47
 
            "")
48
 
        self.mocker.result(succeed(True))
49
 
        self.proxy_m.callRemote(
50
 
            "modify_system", "some-handle",
51
 
            "mgmt_classes", ["keep", "available"], "")
52
 
        self.mocker.result(succeed(True))
53
 
        self.proxy_m.callRemote(
54
 
            "modify_system", "some-handle", "netboot_enabled", True, "")
55
 
        self.mocker.result(succeed(True))
56
 
        self.proxy_m.callRemote("save_system", "some-handle", "")
57
 
        self.mocker.result(succeed(True))
58
 
        self.proxy_m.callRemote(
59
 
            "background_power_system", {"power": "off", "systems": [name]}, "")
60
 
        self.mocker.result(succeed("ignored"))
61
 
 
62
 
    def check_shutdown_all(self, method_name):
63
 
        self.mock_get_systems(
64
 
            ("i-amok", "ok", "acquired"),
65
 
            ("i-amalien", "alien", "available"),
66
 
            ("i-amoktoo", "oktoo", "acquired"))
67
 
        self.mock_get_systems(
68
 
            ("i-amok", "ok", "acquired"),
69
 
            ("i-amalien", "alien", "available"),
70
 
            ("i-amoktoo", "oktoo", "acquired"))
71
 
        self.mock_shutdown_release("i-amok", "ok")
72
 
        self.mock_shutdown_release("i-amoktoo", "oktoo")
73
 
        self.mocker.replay()
74
 
 
75
 
        provider = self.get_provider()
76
 
        method = getattr(provider, method_name)
77
 
        d = method()
78
 
 
79
 
        def verify(machines):
80
 
            (ok, oktoo) = machines
81
 
            self.assert_machine(ok, "i-amok", "ok")
82
 
            self.assert_machine(oktoo, "i-amoktoo", "oktoo")
83
 
        d.addCallback(verify)
84
 
        return d
85
 
 
86
 
    def test_shutdown_machine(self):
87
 
        self.setup_mocks()
88
 
        self.mock_get_systems(("i-amhere", "blah", "acquired"))
89
 
        self.mock_shutdown_release("i-amhere", "blah")
90
 
        self.mocker.replay()
91
 
 
92
 
        provider = self.get_provider()
93
 
        d = provider.shutdown_machine(OrchestraMachine("i-amhere"))
94
 
        d.addCallback(self.assert_machine, "i-amhere", "blah")
95
 
        return d
96
 
 
97
 
    def test_shutdown_machine_missing(self):
98
 
        self.setup_mocks()
99
 
        self.mock_get_systems(("i-amirrelevant", "blah", "acquired"))
100
 
        self.mocker.replay()
101
 
 
102
 
        provider = self.get_provider()
103
 
        d = provider.shutdown_machine(OrchestraMachine("i-ammissing"))
104
 
        return self.assert_missing(d, ["i-ammissing"])
105
 
 
106
 
    def test_shutdown_machine_unowned(self):
107
 
        self.setup_mocks()
108
 
        self.mock_get_systems(("i-amalien", "blah", "available"))
109
 
        self.mocker.replay()
110
 
 
111
 
        provider = self.get_provider()
112
 
        d = provider.shutdown_machine(OrchestraMachine("i-amalien"))
113
 
        return self.assert_missing(d, ["i-amalien"])
114
 
 
115
 
    def test_shutdown_machines_none(self):
116
 
        self.mocker.replay()
117
 
        provider = self.get_provider()
118
 
        d = provider.shutdown_machines([])
119
 
        d.addCallback(self.assertEquals, [])
120
 
        return d
121
 
 
122
 
    def test_shutdown_machines_some_good(self):
123
 
        self.setup_mocks()
124
 
        self.mock_get_systems(
125
 
            ("i-amok", "ok", "acquired"),
126
 
            ("i-amalien", "alien", "available"),
127
 
            ("i-amoktoo", "oktoo", "acquired"))
128
 
        self.mock_shutdown_release("i-amok", "ok")
129
 
        self.mock_shutdown_release("i-amoktoo", "oktoo")
130
 
        self.mocker.replay()
131
 
 
132
 
        provider = self.get_provider()
133
 
        d = provider.shutdown_machines([
134
 
            OrchestraMachine("i-amok"),
135
 
            OrchestraMachine("i-amoktoo")])
136
 
 
137
 
        def verify(machines):
138
 
            (ok, oktoo) = machines
139
 
            self.assert_machine(ok, "i-amok", "ok")
140
 
            self.assert_machine(oktoo, "i-amoktoo", "oktoo")
141
 
        d.addCallback(verify)
142
 
        return d
143
 
 
144
 
    def test_shutdown_machines_some_missing(self):
145
 
        self.setup_mocks()
146
 
        self.mock_get_systems(
147
 
            ("i-amok", "ok", "acquired"),
148
 
            ("i-amalien", "alien", "available"),
149
 
            ("i-amoktoo", "oktoo", "acquired"))
150
 
        self.mocker.replay()
151
 
 
152
 
        provider = self.get_provider()
153
 
        d = provider.shutdown_machines([
154
 
            OrchestraMachine("i-amok"),
155
 
            OrchestraMachine("i-ammissing")])
156
 
        return self.assert_missing(d, ["i-ammissing"])
157
 
 
158
 
    def test_shutdown_machines_some_unowned(self):
159
 
        self.setup_mocks()
160
 
        self.mock_get_systems(
161
 
            ("i-amok", "ok", "acquired"),
162
 
            ("i-amalien", "alien", "available"),
163
 
            ("i-amoktoo", "oktoo", "acquired"))
164
 
        self.mocker.replay()
165
 
 
166
 
        provider = self.get_provider()
167
 
        d = provider.shutdown_machines([
168
 
            OrchestraMachine("i-amok"),
169
 
            OrchestraMachine("i-amalien")])
170
 
        return self.assert_missing(d, ["i-amalien"])
171
 
 
172
 
    def test_destroy_environment(self):
173
 
        self.setup_mocks()
174
 
        self.mock_fs_put("http://somewhe.re/webdav/provider-state", "{}\n")
175
 
        return self.check_shutdown_all("destroy_environment")
176
 
 
177
 
    def test_destroy_environment_no_machines(self):
178
 
        self.setup_mocks()
179
 
        self.mock_fs_put("http://somewhe.re/webdav/provider-state", "{}\n")
180
 
        self.mock_get_systems()
181
 
        self.mocker.replay()
182
 
 
183
 
        provider = self.get_provider()
184
 
        d = provider.destroy_environment()
185
 
        d.addCallback(self.assertEquals, [])
186
 
        return d
187
 
 
188
 
    def test_destroy_environment_unwritable(self):
189
 
        self.setup_mocks()
190
 
        self.mock_fs_put(
191
 
            "http://somewhe.re/webdav/provider-state", "{}\n", 500)
192
 
        return self.check_shutdown_all("destroy_environment")