Ejemplo n.º 1
0
    def test_match_device_ignore_index(self):
        """test match_device() does not try to match index property"""
        model = Model()
        model.parse("""fs_name: nids
nid_map: nodes=foo[7] nids=foo[7]@tcp
ost: node=foo7 index=0""")
        candidate = [{'node': 'foo7', 'dev': '/dev/sda'}]
        matched = model.get('ost')[0].match_device(candidate)
        self.assertEqual(len(matched), 1)
        self.assertEqual(matched[0].get('dev'), '/dev/sda')
Ejemplo n.º 2
0
    def test_several_spaces(self):
        model = Model()
        model.parse("""fs_name:  spaces 
nid_map:  nodes=foo[7]  nids=foo[7]@tcp
mgt:  node=foo7 """)
        self.assertEqual(model.get('fs_name'), 'spaces')
        self.assertEqual(len(model.elements('nid_map')), 1)
        self.assertEqual(
            model.elements('nid_map')[0].as_dict(), {
                'nodes': 'foo[7]',
                'nids': 'foo[7]@tcp'
            })
Ejemplo n.º 3
0
    def test_match_device_list_values(self):
        """check various list content do not match in match_device()"""
        # Different value count
        candidate = [{'node': 'foo7', 'ha_node': ['foo8'], 'dev': '/dev/sda'}]
        model = Model()
        model.parse(
            textwrap.dedent("""fs_name: nids
            nid_map: nodes=foo[7-10] nids=foo[7-10]@tcp
            mgt: node=foo7 ha_node=foo8 ha_node=foo9"""))
        self.assertEqual(len(model.get('mgt')[0].match_device(candidate)), 0)

        # Different list values
        candidate = [{
            'node': 'foo7',
            'ha_node': ['foo7', 'foo8'],
            'dev': '/dev/sda'
        }]
        model = Model()
        model.parse(
            textwrap.dedent("""fs_name: nids
            nid_map: nodes=foo[7-10] nids=foo[7-10]@tcp
            mgt: node=foo7 ha_node=foo8 ha_node=foo9"""))
        self.assertEqual(len(model.get('mgt')[0].match_device(candidate)), 0)
Ejemplo n.º 4
0
    def __init__(self, filename):

        self.backend = None
        self.xmf_path = None
        self.model = Model()

        try:
            self.model.load(filename)
        except IOError:
            raise ModelFileIOError("Could not read %s" % filename)

        # Set nodes to nids mapping using the NidMap helper class
        self.nid_map = NidMap.fromlist(self.get('nid_map'))

        # Initialize the tuning model to None if no special tuning configuration
        # is provided
        self.tuning_model = TuningModel()
Ejemplo n.º 5
0
 def test_2_nid_map_diff_pattern(self):
     """Model with nid_map with several ranges"""
     model = Model()
     model.parse(
         textwrap.dedent("""fs_name: nids
         nid_map: nodes=foo[1-2] nids=foo[1-2]@tcp
         nid_map: nodes=bar[1-9] nids=bar[1-9]@tcp"""))
     self.assertEqual(len(model.elements('nid_map')), 11)
     self.assertEqual(
         model.elements('nid_map')[0].as_dict(), {
             'nodes': 'foo1',
             'nids': 'foo1@tcp'
         })
     self.assertEqual(
         model.elements('nid_map')[10].as_dict(), {
             'nodes': 'bar9',
             'nids': 'bar9@tcp'
         })
Ejemplo n.º 6
0
 def test_folding(self):
     """config lines are grouped when possible"""
     model = Model()
     model.parse(
         textwrap.dedent("""
         fs_name: fold
         nid_map: nodes=foo[1-2] nids=foo[1-2]@tcp2
         client: node=foo1
         client: node=foo2
         router: node=foo1
         router: node=foo2"""))
     self.assertEqual(
         str(model),
         textwrap.dedent("""
         fs_name:fold
         client:node=foo[1-2]
         router:node=foo[1-2]
         nid_map:nids=foo[1-2]@tcp2 nodes=foo[1-2]""").lstrip())
Ejemplo n.º 7
0
    def __init__(self, filename):

        self.backend = None
        self.xmf_path = None
        self.model = Model()

        try:
            self.model.load(filename)
        except IOError:
            raise ModelFileIOError("Could not read %s" % filename)

        # Model expands nid_map automatically, just iterate other them
        self.nid_map = {}
        for elem in self.get('nid_map'):
            self.nid_map.setdefault(elem['nodes'], []).append(elem['nids'])

        # Initialize the tuning model to None if no special tuning configuration
        # is provided
        self.tuning_model = TuningModel()
Ejemplo n.º 8
0
    def test_several_nid_map(self):
        """Model with several nid_map lines."""
        model = Model()
        model.parse("""fs_name: nids
nid_map: nodes=foo[1-2] nids=foo[1-2]@tcp
nid_map: nodes=foo[7] nids=foo[7]@tcp""")
        self.assertEqual(len(model.elements('nid_map')), 3)
        self.assertEqual(
            model.elements('nid_map')[0].as_dict(), {
                'nodes': 'foo1',
                'nids': 'foo1@tcp'
            })
        self.assertEqual(
            model.elements('nid_map')[1].as_dict(), {
                'nodes': 'foo2',
                'nids': 'foo2@tcp'
            })
        self.assertEqual(
            model.elements('nid_map')[2].as_dict(), {
                'nodes': 'foo7',
                'nids': 'foo7@tcp'
            })
Ejemplo n.º 9
0
 def testTooLongFSName(self):
     """Model with a too long fsname"""
     testfile = makeTempFile("""fs_name: too_long_name""")
     model = Model()
     self.assertRaises(ModelFileValueError, model.load, testfile.name)
Ejemplo n.º 10
0
 def testLoadExample(self):
     """Load example.lmf and checks it."""
     m = Model()
     m.load('../conf/models/example.lmf')
     self.assertEqual(len(m), 15)
Ejemplo n.º 11
0
 def testDefaultValues(self):
     """test defaults values"""
     m = Model()
     self.assertEqual(m.get('stripe_size'), 1048576)
     self.assertEqual(m.get('stripe_count'), 1)
     self.assertEqual(m.get('quota_type'), 'ug')
Ejemplo n.º 12
0
 def makeTempModel(self, txt):
     """helper method for creating a temp file and loading it as Model"""
     self._testfile = makeTempFile(txt)
     model = Model()
     model.load(self._testfile.name)
     return model
Ejemplo n.º 13
0
 def test_multi_pattern_nid_map(self):
     """multiple patterns in nid_map is detected"""
     model = Model()
     txt = textwrap.dedent("""fs_name: nids
         nid_map: nodes=foo[1-2],bar[1-2] nids=foo[1-2]@tcp,bar[1-2]@tcp""")
     self.assertRaises(ModelFileValueError, model.parse, txt)
Ejemplo n.º 14
0
 def test_unbalanced_nid_map(self):
     """size mismatch in nid_map raises an exception"""
     model = Model()
     txt = textwrap.dedent("""fs_name: nids
         nid_map: nodes=foo[1-2] nids=foo[1-9]@tcp""")
     self.assertRaises(ModelFileValueError, model.parse, txt)