4
4
from twisted.web.xmlrpc import Proxy
6
6
from ensemble.errors import (
7
MachineNotFound, ProviderError, ProviderInteractionError)
7
MachinesNotFound, ProviderError, ProviderInteractionError)
8
8
from ensemble.lib.testing import TestCase
9
9
from ensemble.providers.orchestra.cobbler import CobblerCaller, CobblerClient
226
226
{"power": "on", "systems": ["some-name"]}, "")
227
227
self.mocker.result(result)
229
def mock_get_systems(self, result):
230
self.proxy_m.callRemote("get_systems")
231
self.mocker.result(result)
229
233
def call_cobbler_method(self, method_name, *args, **kwargs):
230
234
cobbler = CobblerClient(_CONFIG)
231
235
method = getattr(cobbler, method_name)
232
236
return method(*args, **kwargs)
238
def check_not_found(self, d, uids=["some-uid"]):
239
self.assertFailure(d, MachinesNotFound)
242
self.assertEquals(error.instance_ids, uids)
243
d.addCallback(verify)
246
def check_bad_call(self, d, method):
247
self.assertFailure(d, ProviderError)
250
self.assertIn("Bad result from call to %s" % method, str(error))
251
d.addCallback(verify)
234
254
def check_get_name_failure(self, method_name, *args, **kwargs):
235
255
self.setup_mock()
236
256
self.mock_get_name(succeed([]))
237
257
self.mocker.replay()
238
258
d = self.call_cobbler_method(method_name, *args, **kwargs)
239
self.assertFailure(d, MachineNotFound)
259
return self.check_not_found(d)
242
261
def check_get_name_insane(self, method_name, *args, **kwargs):
243
262
self.setup_mock()
678
686
self.mocker.replay()
679
687
d = self.call_cobbler_method("start_system", "some-uid")
690
def test_describe_systems_error(self):
692
self.mock_get_systems(fail(SomeError()))
694
d = self.call_cobbler_method("describe_systems")
695
self.assertFailure(d, SomeError)
698
def test_describe_systems_failure(self):
700
self.mock_get_systems(succeed([
701
{"uid": "something-else", "mgmt_classes": "acquired"}]))
703
d = self.call_cobbler_method("describe_systems", "something")
704
return self.check_not_found(d, ["something"])
706
def test_describe_systems_success_all(self):
708
self.mock_get_systems(succeed([
709
{"uid": "bar", "mgmt_classes": ["acquired"]},
710
{"uid": "baz", "mgmt_classes": ["other"]},
711
{"uid": "foo", "mgmt_classes": ["acquired"]}]))
713
d = self.call_cobbler_method("describe_systems")
716
expect = [{"uid": "bar", "mgmt_classes": ["acquired"]},
717
{"uid": "foo", "mgmt_classes": ["acquired"]}]
718
self.assertEquals(result, expect)
719
d.addCallback(verify)
722
def test_describe_systems_not_acquired_some(self):
724
self.mock_get_systems(succeed([
725
{"uid": "bar", "mgmt_classes": ["irrelevant"]},
726
{"uid": "baz", "mgmt_classes": ["acquired"]},
727
{"uid": "foo", "mgmt_classes": ["omg-b0rken"]}]))
729
d = self.call_cobbler_method("describe_systems", "foo", "baz")
730
return self.check_not_found(d, ["foo"])
732
def test_describe_systems_success_some(self):
734
self.mock_get_systems(succeed([
735
{"uid": "bar", "mgmt_classes": ["ignored"]},
736
{"uid": "baz", "mgmt_classes": ["acquired"]},
737
{"uid": "foo", "mgmt_classes": ["acquired"]}]))
739
d = self.call_cobbler_method("describe_systems", "foo", "baz")
742
expect = [{"uid": "foo", "mgmt_classes": ["acquired"]},
743
{"uid": "baz", "mgmt_classes": ["acquired"]}]
744
self.assertEquals(result, expect)
745
d.addCallback(verify)
748
def test_describe_systems_success_none(self):
750
self.mock_get_systems(succeed([]))
752
d = self.call_cobbler_method("describe_systems")
755
self.assertEquals(result, [])
756
d.addCallback(verify)