Example #1
0
    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()
Example #2
0
    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)
Example #3
0
    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)
Example #4
0
    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')
Example #5
0
    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')
Example #6
0
    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)
Example #7
0
    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])
Example #8
0
    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])
Example #9
0
    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)
Example #10
0
    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)
Example #11
0
    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')
Example #12
0
    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, [])
Example #13
0
        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
Example #14
0
    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')
Example #15
0
    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)
Example #16
0
        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
Example #17
0
        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
Example #18
0
    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')])
Example #19
0
        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
Example #20
0
    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)
Example #21
0
    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)
Example #22
0
 def data(self):
     s1 = BasicServer('bs1', model='7000', manufacturer='ibm')
     s2 = BasicServer('bs2', model='ab1200', manufacturer='sun')
Example #23
0
    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])))
Example #24
0
    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)