コード例 #1
0
 def testFromListConstructor(self):
     """test RangeSet.fromlist() constructor"""
     rgs = RangeSet.fromlist([ "3", "5-8", "1" ])
     self.assertEqual(str(rgs), "1,3,5-8")
     self.assertEqual(len(rgs), 6)
     rgs = RangeSet.fromlist([ RangeSet("3"), RangeSet("5-8"), RangeSet("1") ])
     self.assertEqual(str(rgs), "1,3,5-8")
     self.assertEqual(len(rgs), 6)
     rgs = RangeSet.fromlist([set([3,5,6,7,8,1])])
     self.assertEqual(str(rgs), "1,3,5-8")
     self.assertEqual(len(rgs), 6)
コード例 #2
0
ファイル: RangeSetTest.py プロジェクト: zhuohenglv/ohpc
 def testFromListConstructor(self):
     """test RangeSet.fromlist() constructor"""
     rgs = RangeSet.fromlist(["3", "5-8", "1"])
     self.assertEqual(str(rgs), "1,3,5-8")
     self.assertEqual(len(rgs), 6)
     rgs = RangeSet.fromlist(
         [RangeSet("3"), RangeSet("5-8"),
          RangeSet("1")])
     self.assertEqual(str(rgs), "1,3,5-8")
     self.assertEqual(len(rgs), 6)
     rgs = RangeSet.fromlist([set([3, 5, 6, 7, 8, 1])])
     self.assertEqual(str(rgs), "1,3,5-8")
     self.assertEqual(len(rgs), 6)
コード例 #3
0
ファイル: RangeSetTest.py プロジェクト: zhuohenglv/ohpc
 def testStringIterator(self):
     """test RangeSet string iterator striter()"""
     matches = [1, 3, 4, 5, 6, 7, 8, 11]
     rgs = RangeSet.fromlist(["11", "3", "5-8", "1", "4"])
     cnt = 0
     for rg in rgs.striter():
         self.assertEqual(rg, str(matches[cnt]))
         cnt += 1
     self.assertEqual(cnt, len(matches))
     # with padding
     rgs = RangeSet.fromlist(["011", "003", "005-008", "001", "004"])
     cnt = 0
     for rg in rgs.striter():
         self.assertTrue(type(rg) is str)
         self.assertEqual(rg, "%0*d" % (3, matches[cnt]))
         cnt += 1
     self.assertEqual(cnt, len(matches))
コード例 #4
0
ファイル: RangeSetTest.py プロジェクト: zhuohenglv/ohpc
 def testIterator(self):
     """test RangeSet iterator"""
     matches = [1, 3, 4, 5, 6, 7, 8, 11]
     rgs = RangeSet.fromlist(["11", "3", "5-8", "1", "4"])
     cnt = 0
     for rg in rgs:
         self.assertEqual(rg, matches[cnt])
         cnt += 1
     self.assertEqual(cnt, len(matches))
     # with padding
     rgs = RangeSet.fromlist(["011", "003", "005-008", "001", "004"])
     cnt = 0
     for rg in rgs:
         self.assertTrue(type(rg) is int)
         self.assertEqual(rg, matches[cnt])
         cnt += 1
     self.assertEqual(cnt, len(matches))
コード例 #5
0
 def testStringIterator(self):
     """test RangeSet string iterator striter()"""
     matches = [ 1, 3, 4, 5, 6, 7, 8, 11 ]
     rgs = RangeSet.fromlist([ "11", "3", "5-8", "1", "4" ])
     cnt = 0
     for rg in rgs.striter():
         self.assertEqual(rg, str(matches[cnt]))
         cnt += 1
     self.assertEqual(cnt, len(matches))
     # with padding
     rgs = RangeSet.fromlist([ "011", "003", "005-008", "001", "004" ])
     cnt = 0
     for rg in rgs.striter():
         self.assertTrue(type(rg) is str)
         self.assertEqual(rg, "%0*d" % (3, matches[cnt]))
         cnt += 1
     self.assertEqual(cnt, len(matches))
コード例 #6
0
 def testIterator(self):
     """test RangeSet iterator"""
     matches = [ 1, 3, 4, 5, 6, 7, 8, 11 ]
     rgs = RangeSet.fromlist([ "11", "3", "5-8", "1", "4" ])
     cnt = 0
     for rg in rgs:
         self.assertEqual(rg, matches[cnt])
         cnt += 1
     self.assertEqual(cnt, len(matches))
     # with padding
     rgs = RangeSet.fromlist([ "011", "003", "005-008", "001", "004" ])
     cnt = 0
     for rg in rgs:
         self.assertTrue(type(rg) is int)
         self.assertEqual(rg, matches[cnt])
         cnt += 1
     self.assertEqual(cnt, len(matches))
コード例 #7
0
    def select_nodes(self, profil, name, nb_nodes, host):
        '''Select nodes to spawn'''
        # 1: recover available nodelist
        # 2: select nb_nodes among availables nodes
        # 3: return the list of nodes
        err = ""
        nodes = []
        if host is None:
            err = "Error: No host available\n"
            _LOGGER.error(err)
            self.rep_sock.send(msgpack.packb(('', [err])))
            return nodes
        if not vc.VirtualCluster.valid_clustername(name):
            err = "Error: clustername '{}' is not a valid name\n".format(name)
            _LOGGER.error(err)
            self.rep_sock.send(msgpack.packb(('', [err])))
            return nodes
        if profil not in self.profiles:
            err = "Error: Profil '{}' not found in configuration file\n".format(
                profil)
            _LOGGER.error(err)
            self.rep_sock.send(msgpack.packb(('', [err])))
            return nodes

        nodelist = self.list_nodes(byhost=False)
        nodeset = NodeSet.fromlist([node.name for node in nodelist])
        idx_min = 0
        idx_max = nb_nodes - 1
        base_range = RangeSet("%d-%d" % (idx_min, idx_max))
        base_nodeset = NodeSetBase(name + '%s', base_range)
        ndset_inter = nodeset.intersection(base_nodeset)
        while len(ndset_inter) != 0:
            indexes = [
                clustdock.VirtualNode.split_name(node)[1]
                for node in ndset_inter
            ]
            for idx in indexes:
                _LOGGER.debug("Removing %d from rangeset %s", idx, base_range)
                base_range.remove(idx)
            base_nodeset.difference_update(ndset_inter)
            _LOGGER.debug("Nodeset becomes '%s' after removing", base_nodeset)
            idx_min = max(indexes + list(base_range)) + 1
            idx_max = idx_min + max([len(indexes), nb_nodes - len(base_range)])
            base_range.add_range(idx_min, idx_max)
            _LOGGER.debug("New rangeset: %s", base_range)
            base_nodeset.update(
                NodeSetBase(name + '%s',
                            RangeSet.fromlist([range(idx_min, idx_max)])))
            _LOGGER.debug("New nodeset: %s", base_nodeset)
            ndset_inter = nodeset.intersection(base_nodeset)

        final_range = base_range
        _LOGGER.debug("final rangeset/nodeset: %s / %s", base_range,
                      base_nodeset)

        cluster = vc.VirtualCluster(name, profil, self.profiles[profil])
        nodes = []
        for idx in final_range:
            node = cluster.add_node(idx, host)
            nodes.append(node)
        return nodes