Beispiel #1
0
 def test_multiple_vars(self):
     specs = [
         ('disk', 'vda', 'size', '8'),
         ('disk', 'vdb', 'size', '16'),
         ]
     specs2 = [
         ('disk', 'vda', 'size', '8'),
         ('disk', 'vdb', 'size', '8'),
         ]
     lines = [
         ('disk', 'vda', 'size', '8'),
         ('disk', 'vdb', 'size', '8'),
         ]
     arr = {}
     self.assert_(not matcher.match_all(lines, specs, arr, {}))
     self.assert_(matcher.match_all(lines, specs2, arr, {}), lines)
Beispiel #2
0
 def test_in2(self):
     specs = [('disk', '$disk=in("vda", "vdb")', 'size', '20')]
     lines = [
         ('disk', 'vda', 'size', '20'),
         ]
     arr = {}
     self.assert_(matcher.match_all(lines, specs, arr, {}))
     self.assertEqual(arr['disk'], 'vda')
Beispiel #3
0
 def test_in(self):
     specs = [('disk', '$disk', 'size', 'in(10, 20, 30)')]
     lines = [
         ('disk', 'vda', 'size', '20'),
         ]
     arr = {}
     self.assert_(matcher.match_all(lines, specs, arr, {}))
     self.assertEqual(arr['disk'], 'vda')
Beispiel #4
0
 def test_le(self):
     specs = [('disk', '$disk', 'size', 'le(20)')]
     lines = [
         ('disk', 'vda', 'size', '20'),
         ]
     arr = {}
     self.assertTrue(matcher.match_all(lines, specs, arr, {}))
     self.assertEqual(arr['disk'], 'vda')
Beispiel #5
0
 def test_le(self):
     specs = [('disk', '$disk', 'size', 'le(20)')]
     lines = [
         ('disk', 'vda', 'size', '20'),
     ]
     arr = {}
     self.assertTrue(matcher.match_all(lines, specs, arr, {}))
     self.assertEqual(arr['disk'], 'vda')
Beispiel #6
0
 def test_network(self):
     specs = [('network', '$eth', 'ipv4', 'network(192.168.2.0/24)')]
     lines = [
         ('network', 'eth0', 'ipv4', '192.168.2.2'),
         ]
     arr = {}
     if matcher._HAS_IPADDR:
         self.assert_(matcher.match_all(lines, specs, arr, {}))
         self.assertEqual(arr['eth'], 'eth0')
Beispiel #7
0
 def test_2vars(self):
     specs = [
         ('disk', '$disk', 'size', '$size'),
         ]
     lines = [
         ('disk', 'vda', 'size', '8'),
         ]
     arr = {}
     self.assert_(matcher.match_all(lines, specs, arr, {}))
     self.assertEqual(arr,
                      {'size': '8',
                       'disk': 'vda',
                       })
Beispiel #8
0
 def test_backtrack3(self):
     specs = [
         ('disk', '$disk', 'size', '8'),
         ('disk', '$disk', 'type', 'c'),
         ('disk', '$disk2', 'size', '8'),
     ]
     lines = [
         ('disk', 'vda', 'size', '8'),
         ('disk', 'vda', 'type', 'a'),
         ('disk', 'vdb', 'size', '8'),
         ('disk', 'vdb', 'type', 'b'),
     ]
     arr = {}
     self.assertFalse(matcher.match_all(lines, specs, arr, {}))
Beispiel #9
0
 def test_backtrack(self):
     specs = [
         ('disk', '$disk', 'size', '8'),
         ('disk', '$disk', 'type', 'b'),
     ]
     lines = [
         ('disk', 'vda', 'size', '8'),
         ('disk', 'vda', 'type', 'a'),
         ('disk', 'vdb', 'size', '8'),
         ('disk', 'vdb', 'type', 'b'),
     ]
     arr = {}
     self.assertTrue(matcher.match_all(lines, specs, arr, {}))
     self.assertEqual(arr['disk'], 'vdb', arr)
Beispiel #10
0
 def test_backtrack3(self):
     specs = [
         ('disk', '$disk', 'size', '8'),
         ('disk', '$disk', 'type', 'c'),
         ('disk', '$disk2', 'size', '8'),
         ]
     lines = [
         ('disk', 'vda', 'size', '8'),
         ('disk', 'vda', 'type', 'a'),
         ('disk', 'vdb', 'size', '8'),
         ('disk', 'vdb', 'type', 'b'),
         ]
     arr = {}
     self.assertFalse(matcher.match_all(lines, specs, arr, {}))
Beispiel #11
0
 def test_backtrack(self):
     specs = [
         ('disk', '$disk', 'size', '8'),
         ('disk', '$disk', 'type', 'b'),
         ]
     lines = [
         ('disk', 'vda', 'size', '8'),
         ('disk', 'vda', 'type', 'a'),
         ('disk', 'vdb', 'size', '8'),
         ('disk', 'vdb', 'type', 'b'),
         ]
     arr = {}
     self.assertTrue(matcher.match_all(lines, specs, arr, {}))
     self.assertEqual(arr['disk'], 'vdb', arr)
Beispiel #12
0
 def test_vars(self):
     lines = [
         ('system', 'product', 'serial', 'CZJ31402CD'),
         ('disk', '1I:1:1', 'size', '1000GB'),
         ('disk', '1I:1:1', 'type', 'SATA'),
         ('disk', '1I:1:1', 'control', 'hpa'),
         ('disk', '1I:1:2', 'size', '1000GB'),
         ('disk', '1I:1:2', 'type', 'SATA'),
         ('disk', '1I:1:2', 'control', 'hpa'),
         ('disk', '1I:1:3', 'size', '1000GB'),
         ('disk', '1I:1:3', 'type', 'SATA'),
         ('disk', '1I:1:3', 'control', 'hpa'),
         ('disk', '1I:1:4', 'size', '1000GB'),
         ('disk', '1I:1:4', 'type', 'SATA'),
         ('disk', '1I:1:4', 'control', 'hpa'),
         ('disk', '2I:1:5', 'size', '1000GB'),
         ('disk', '2I:1:5', 'type', 'SATA'),
         ('disk', '2I:1:5', 'control', 'hpa'),
         ('disk', '2I:1:6', 'size', '1000GB'),
         ('disk', '2I:1:6', 'type', 'SATA'),
         ('disk', '2I:1:6', 'control', 'hpa'),
         ('disk', '2I:1:7', 'size', '100GB'),
         ('disk', '2I:1:7', 'type', 'SSDSATA'),
         ('disk', '2I:1:7', 'control', 'hpa'),
         ('disk', '2I:1:8', 'size', '100GB'),
         ('disk', '2I:1:8', 'type', 'SSDSATA'),
         ('disk', '2I:1:8', 'control', 'hpa'),
         ]
     specs = [('system', 'product', 'serial', 'CZJ31402CD'),
              ('disk', '$disk1', 'size', '100GB'),
              ('disk', '$disk2', 'size', '100GB'),
              ('disk', '$disk3', 'size', '1000GB'),
              ('disk', '$disk4', 'size', '1000GB'),
              ('disk', '$disk5', 'size', '1000GB'),
              ('disk', '$disk6', 'size', '1000GB'),
              ('disk', '$disk7', 'size', '1000GB'),
              ('disk', '$disk8', 'size', '1000GB')]
     arr = {}
     self.assert_(matcher.match_all(lines, specs, arr, {}))
     self.assertEqual(arr,
                      {'disk1': '2I:1:7',
                       'disk2': '2I:1:8',
                       'disk3': '1I:1:1',
                       'disk4': '1I:1:2',
                       'disk5': '1I:1:3',
                       'disk6': '1I:1:4',
                       'disk7': '2I:1:5',
                       'disk8': '2I:1:6',
                       }
                      )
Beispiel #13
0
 def test_order(self):
     specs = [
         ('disk', '$disk1', 'size', '100'),
         ('disk', '$disk1', 'slot', '$slot1'),
         ('disk', '$disk2', 'size', '1000'),
         ('disk', '$disk2', 'slot', '$slot2'),
         ]
     lines = [
         ('disk', '1I:1:1', 'size', '1000'),
         ('disk', '1I:1:1', 'control', 'hpa'),
         ('disk', '1I:1:1', 'slot', '2'),
         ('disk', '2I:1:8', 'size', '100'),
         ('disk', '2I:1:8', 'control', 'hpa'),
         ('disk', '2I:1:8', 'slot', '2'),
         ]
     arr = {}
     self.assert_(matcher.match_all(lines, specs, arr, {}))
Beispiel #14
0
 def test_2dollars(self):
     specs = [
         ('disk', '$$disk', 'size', '$size'),
     ]
     lines = [
         ('disk', 'vda', 'size', '8'),
     ]
     arr = {}
     arr2 = {}
     self.assertTrue(matcher.match_all(lines, specs, arr, arr2))
     self.assertEqual(arr, {
         'size': '8',
         'disk': 'vda',
     })
     self.assertEqual(arr2, {
         'disk': 'vda',
     })
Beispiel #15
0
 def test_2dollars(self):
     specs = [
         ('disk', '$$disk', 'size', '$size'),
         ]
     lines = [
         ('disk', 'vda', 'size', '8'),
         ]
     arr = {}
     arr2 = {}
     self.assertTrue(matcher.match_all(lines, specs, arr, arr2))
     self.assertEqual(arr,
                      {'size': '8',
                       'disk': 'vda',
                       })
     self.assertEqual(arr2,
                      {'disk': 'vda',
                       })
Beispiel #16
0
 def test_already_bound(self):
     lines = [
         ('disk', '1I:1:2', 'size', '100GB'),
         ('disk', '1I:1:1', 'size', '1000GB'),
         ('disk', '1I:1:1', 'control', 'hpa'),
         ('disk', '1I:1:2', 'control', 'hpa'),
         ]
     specs = [
         ('disk', '$disk1', 'size', '100GB'),
         ('disk', '$disk1', 'control', 'hpa'),
         ('disk', '$disk2', 'size', '1000GB'),
         ]
     arr = {}
     self.assert_(matcher.match_all(lines, specs, arr, {}))
     self.assertEqual(arr,
                      {'disk1': '1I:1:2',
                       'disk2': '1I:1:1',
                       })
Beispiel #17
0
    names = eval(open(state_filename).read(-1))

    idx = 0
    times = '*'
    name = None
    valid_roles = ""
    for name, times in names:
        if times == '*' or int(times) > 0:
            if len(valid_roles) == 0:
                valid_roles += " %s" % (name)
            else:
                valid_roles += ", %s" % (name)
            specs = eval(open(cfg_dir + name + '.specs', 'r').read(-1))
            var = {}
            var2 = {}
            if matcher.match_all(hw_items, specs, var, var2):
                break
        idx += 1
    else:
        fatal_error('Unable to match requirements on the following roles : %s' % valid_roles)

    forced = (var2 != {})

    if var2 == {}:
        var2 = var

    if times != '*':
        names[idx] = (name, int(times) - 1)

    cmdb = load_cmdb(cfg_dir, name)
    if cmdb:
Beispiel #18
0
                        pprint.pprint(names, stream=state_file)
                    break
            idx += 1
        sys.exit(0)

    idx = 0
    times = '*'
    name = None
    valid_roles = []
    for name, times in names:
        if times == '*' or int(times) > 0:
            valid_roles.append(name)
            specs = eval(open(cfg_dir + name + '.specs', 'r').read(-1))
            var = {}
            var2 = {}
            if matcher.match_all(hw_items, specs, var, var2):
                log('Specs %s matches' % name)

                forced = (var2 != {})

                if var2 == {}:
                    var2 = var

                if times != '*':
                    names[idx] = (name, int(times) - 1)
                    log('Decrementing %s to %d' % (name, int(times) - 1))

                cmdb = load_cmdb(cfg_dir, name)
                if cmdb:
                    if update_cmdb(cmdb, var, var2, forced):
                        save_cmdb(cfg_dir, name, cmdb)