def testMaxRackPosition(self): r1 = clusto.get_by_name('r1') self.assertRaises(TypeError, r1.insert, BasicServer('s1'), 400) self.assertRaises(TypeError, r1.insert, BasicServer('s2'), -13) clusto.flush()
def testCanOnlyAddToOneRack(self): """ A device should only be able to get added to a single rack """ r1, r2 = [clusto.get_by_name(r) for r in ['r1', 'r2']] s1 = BasicServer('s1') s2 = BasicServer('s2') r1.insert(s1, 13) self.assertRaises(Exception, r2.insert, s1, 1)
def testAddingAndRemovingHosts(self): s1 = clusto.get_by_name('s1') s2 = clusto.get_by_name('s2') s3 = BasicServer('s3') s3.set_attr('system', subkey='memory', value=16000) s3.set_attr('system', subkey='disk', value=2500) s3.set_attr('system', subkey='cpucount', value=2) vmm = clusto.get_by_name('vmm') vs1 = BasicVirtualServer('vs1') vs1.set_attr('system', subkey='memory', value=1000) vs1.set_attr('system', subkey='disk', value=50) vs1.set_attr('system', subkey='cpucount', value=2) self.assertRaises(ResourceException, vmm.allocate, vs1, s3) vmm.allocate(vs1, s1) self.assertRaises(ResourceException, vmm.remove, s1) vmm.deallocate(vs1) vmm.remove(s1) vmm.insert(s3) vmm.allocate(vs1, s3)
def testAddingToRack(self): r1 = clusto.get_by_name('r1') s1 = BasicServer('s1') r1.insert(s1, 1) rt = clusto.get_by_name('r1') st = clusto.get_by_name('s1') self.assertEqual(len(r1.contents(subkey='ru')), 1) self.assertEqual(r1.contents(subkey='ru')[0].name, 's1') self.assertEqual(s1.parents(clusto_drivers=[BasicRack])[0].name, 'r1')
def testAddingAndRemovingHosts(self): s1 = clusto.get_by_name("s1") s2 = clusto.get_by_name("s2") s3 = BasicServer("s3") s3.set_attr("system", subkey="memory", value=16000) s3.set_attr("system", subkey="disk", value=2500) s3.set_attr("system", subkey="cpucount", value=2) vmm = clusto.get_by_name("vmm") vs1 = BasicVirtualServer("vs1") vs1.set_attr("system", subkey="memory", value=1000) vs1.set_attr("system", subkey="disk", value=50) vs1.set_attr("system", subkey="cpucount", value=2) self.assertRaises(ResourceException, vmm.allocate, vs1, s3) vmm.allocate(vs1, s1) self.assertRaises(ResourceException, vmm.remove, s1) vmm.deallocate(vs1) vmm.remove(s1) vmm.insert(s3) vmm.allocate(vs1, s3)
def testAddingToDoubleDigitLocationThenSingleDigitLocation(self): r1, r2 = [clusto.get_by_name(r) for r in ['r1', 'r2']] s1 = BasicServer('s1') s2 = BasicServer('s2') r1.insert(s1, 11) r1.insert(s2, 1) clusto.flush() s = clusto.get_by_name('s1') self.assertEqual(sorted(BasicRack.get_rack_and_u(s)['RU']), [11]) self.assertEqual(sorted(BasicRack.get_rack_and_u(s2)['RU']), [1])
def testCanAddADeviceToMultipleAdjacentUs(self): """ you should be able to add a device to multiple adjacent RUs """ r1, r2 = [clusto.get_by_name(r) for r in ['r1', 'r2']] s1 = BasicServer('s1') s2 = BasicServer('s2') r1.insert(s1, [1, 2, 3]) clusto.flush() s = clusto.get_by_name('s1') self.assertEqual(sorted(BasicRack.get_rack_and_u(s)['RU']), [1, 2, 3]) self.assertRaises(TypeError, r1.insert, s2, [1, 2, 4])
def testGettingRackAndU(self): r1, r2 = [clusto.get_by_name(r) for r in ['r1', 'r2']] s = BasicServer('s1') clusto.flush() r1.insert(s, 13) clusto.flush() s = clusto.get_by_name('s1') res = BasicRack.get_rack_and_u(s) self.assertEqual(res['rack'].name, 'r1') self.assertEqual(res['RU'], [13]) res2 = BasicRack.get_rack_and_u(BasicServer('s2')) self.assertEqual(res2, None)
def testGet(self): s1 = BasicServer('s1') s2 = BasicServer('s2') s3 = BasicServer('s3') ipm = IPManager('testnet', baseip='10.0.0.0', netmask='255.255.255.0') s1.set_attr(key='system', subkey='serial', value='P0000000000') s2.set_port_attr('nic-eth', 1, 'mac', '00:11:22:33:44:55') s3.bind_ip_to_osport('10.0.0.1', 'eth0') self.assertEqual(clusto.get('s1')[0], s1) self.assertEqual(clusto.get('00:11:22:33:44:55')[0], s2) self.assertEqual(clusto.get('10.0.0.1')[0], s3) self.assertEqual(clusto.get('P0000000000')[0], s1) self.assertEqual(clusto.get('foo'), None) self.assertRaises(ValueError, clusto.get, None)
def testGettingThingInRack(self): r1 = clusto.get_by_name('r1') r1.insert(BasicServer('s1'), 40) clusto.flush() s1 = r1.get_device_in(40) self.assertEqual(s1.name, 's1')
def testAttributeOldVersionsInGetEntities(self): sl = [BasicServer('s' + str(x)) for x in range(10)] for n, s in enumerate(sl): s.add_attr(key='old', value="val") s.del_attrs(key='old') s.add_attr(key='new', value='foo') l = clusto.get_entities(attrs=[{'key': 'old', 'value': 'val'}]) self.assertEqual(l, [])
def createRack(datacenter, rackprefix): try: clusto.begin_transaction() r = APCRack(rackprefix) pwr = PowerTowerXM(rackprefix + '-pwr1', withslave=True) sw = Cisco4948(rackprefix + '-sw1') sw.connect_ports('nic-eth', 48, pwr, 1) pwr.connect_ports('pwr-nema-5', 'aa8', sw, 1) r.insert(pwr, [1, 2, 3, 4]) r.insert(sw, [5]) for i in range(20): s = BasicServer(rackprefix + '-s' + '%02d' % i) r.insert(s, [6 + i]) s.connect_ports('nic-eth', 1, sw, i + 1) s.connect_ports( 'pwr-nema-5', 1, pwr, 'ab'[i / 10 % 2] + 'ab'[i / 5 % 2] + str(i % 5 + 1)) clusto.commit() except Exception, x: clusto.rollback_transaction() raise x
def data(self): ip1 = IPManager('a1', gateway='192.168.1.1', netmask='255.255.255.0', baseip='192.168.1.0') ip2 = IPManager('b1', gateway='10.0.128.1', netmask='255.255.252.0', baseip='10.0.128.0') s = BasicServer('s1')
def data(self): r1 = BasicRack('r1') sw1 = BasicNetworkSwitch('sw1') s1 = BasicServer('s1') p1 = PowerTowerXM('p1') r1.insert(p1, (10, 11)) r1.insert(sw1, 12) r1.insert(s1, 1)
def createRack(datacenter, rackprefix): try: clusto.begin_transaction() r = BasicRack(rackprefix) pwr = BasicPowerStrip(rackprefix+'-pwr1', withslave=True) sw = BasicNetworkSwitch(rackprefix+'-sw1') sw.connect_ports('nic-eth', 48, pwr, 1) pwr.connect_ports('pwr-nema-5', 1, sw, 1) r.insert(pwr, [1,2,3,4]) r.insert(sw, [5]) for i in range(20): s=BasicServer(rackprefix+'-s'+'%02d'%i) r.insert(s, [6+i]) s.connect_ports('nic-eth', 1, sw, i+1) s.connect_ports('pwr-nema-5', 1, pwr, i+2) clusto.commit() except Exception, x: clusto.rollback_transaction() raise x
def createRack(datacenter, rackprefix): try: clusto.begin_transaction() r = APCRack(rackprefix) pwr = PowerTowerXM(rackprefix+'-pwr1', withslave=True) sw = Cisco4948(rackprefix+'-sw1') sw.connect_ports('nic-eth', 48, pwr, 1) pwr.connect_ports('pwr-nema-5', 'aa8', sw, 1) r.insert(pwr, [1,2,3,4]) r.insert(sw, [5]) for i in range(20): s=BasicServer(rackprefix+'-s'+'%02d'%i) r.insert(s, [6+i]) s.connect_ports('nic-eth', 1, sw, i+1) s.connect_ports('pwr-nema-5', 1, pwr, 'ab'[i/10%2] + 'ab'[i/5%2] + str(i%5 + 1)) clusto.commit() except Exception, x: clusto.rollback_transaction() raise x
def testVMAllocateToSpecificHost(self): vs1 = BasicVirtualServer('vs1') vs1.set_attr('system', subkey='memory', value=1000) vs1.set_attr('system', subkey='disk', value=50) vs1.set_attr('system', subkey='cpucount', value=2) vs2 = BasicVirtualServer('vs2') vs2.set_attr('system', subkey='memory', value=5000) vs2.set_attr('system', subkey='disk', value=50) vs2.set_attr('system', subkey='cpucount', value=2) vs3 = BasicVirtualServer('vs3') vs3.set_attr('system', subkey='memory', value=1000) vs3.set_attr('system', subkey='disk', value=50) vs3.set_attr('system', subkey='cpucount', value=1) s1 = clusto.get_by_name('s1') s2 = clusto.get_by_name('s2') s3 = BasicServer('s3') vmm = clusto.get_by_name('vmm') vmm.allocate(vs1, s1) self.assertRaises(ResourceException, vmm.allocate, vs2, s3) self.assertRaises(ResourceException, vmm.allocate, vs1, s1) self.assertRaises(ResourceException, vmm.allocate, vs1, s2) self.assertEqual([r.value for r in vmm.resources(vs1)], [clusto.get_by_name('s1')]) self.assertRaises(ResourceException, vmm.allocate, vs2, s1) self.assertEqual([r.value for r in vmm.resources(vs2)], []) vmm.allocate(vs2, s1, force=True) self.assertEqual([r.value for r in vmm.resources(vs2)], [clusto.get_by_name('s1')])
def createRack(datacenter, rackprefix): try: clusto.begin_transaction() r = BasicRack(rackprefix) pwr = BasicPowerStrip(rackprefix + '-pwr1', withslave=True) sw = BasicNetworkSwitch(rackprefix + '-sw1') sw.connect_ports('nic-eth', 48, pwr, 1) pwr.connect_ports('pwr-nema-5', 1, sw, 1) r.insert(pwr, [1, 2, 3, 4]) r.insert(sw, [5]) for i in range(20): s = BasicServer(rackprefix + '-s' + '%02d' % i) r.insert(s, [6 + i]) s.connect_ports('nic-eth', 1, sw, i + 1) s.connect_ports('pwr-nema-5', 1, pwr, i + 2) clusto.commit() except Exception, x: clusto.rollback_transaction() raise x
def data(self): vmm = VMManager('vmm') s1 = BasicServer('s1') s1.set_attr('system', subkey='memory', value=1000) s1.set_attr('system', subkey='disk', value=5000) s1.set_attr('system', subkey='cpucount', value=2) s2 = BasicServer('s2') s2.set_attr('system', subkey='memory', value=16000) s2.set_attr('system', subkey='disk', value=2500) s2.set_attr('system', subkey='cpucount', value=2) vmm.insert(s1) vmm.insert(s2)
def data(self): vmm = VMManager("vmm") s1 = BasicServer("s1") s1.set_attr("system", subkey="memory", value=1000) s1.set_attr("system", subkey="disk", value=5000) s1.set_attr("system", subkey="cpucount", value=2) s2 = BasicServer("s2") s2.set_attr("system", subkey="memory", value=16000) s2.set_attr("system", subkey="disk", value=2500) s2.set_attr("system", subkey="cpucount", value=2) vmm.insert(s1) vmm.insert(s2)
def data(self): s1 = BasicServer('bs1', model='7000', manufacturer='ibm') s2 = BasicServer('bs2', model='ab1200', manufacturer='sun')
def testGetEntities(self): d1 = Driver('d1') dv1 = Device('dv1') Location('l1') BasicDatacenter('dc1') namelist = ['e1', 'e2', 'dv1'] self.assertEqual( sorted([n.name for n in clusto.get_entities(names=namelist)]), sorted(namelist)) dl = [Driver] self.assertEqual( sorted([n.name for n in clusto.get_entities(clusto_drivers=dl)]), sorted(['d1', 'e1', 'e2', 'e3'])) tl = [Location, BasicDatacenter] self.assertEqual( sorted([n.name for n in clusto.get_entities(clusto_types=tl)]), sorted(['l1', 'dc1'])) p1 = Pool('p1') p2 = Pool('p2') p3 = Pool('p3') p4 = Pool('p4') s1 = BasicServer('s1') s2 = BasicServer('s2') s3 = BasicServer('s3') p1.insert(s1) p1.insert(s2) p2.insert(s2) p2.insert(s3) p2.insert(d1) p3.insert(s3) p3.insert(d1) p3.insert(s1) p4.insert(p3) self.assertEqual( sorted([s2, s3]), sorted( clusto.get_from_pools(pools=[p2], clusto_types=[BasicServer]))) self.assertEqual( sorted([s2]), sorted( clusto.get_from_pools(pools=[p2, 'p1'], clusto_types=[BasicServer]))) self.assertEqual( sorted([s3]), sorted( clusto.get_from_pools(pools=['p2', 'p3'], clusto_types=[BasicServer]))) self.assertEqual( sorted([s1]), sorted( clusto.get_from_pools(pools=['p4', 'p1'], clusto_types=[BasicServer])))