def test_invalid_group(self):
        group_rules = """
        group_by:
            - some_group
        """

        self.make_group_file(group_rules)
        group = grouping.Grouping(FAKE_CONFIG, FILE_NAME, 'src')

        with self.assertRaisesRegexp(RuntimeError, 'no such grouping option'):
            group.group()
    def test_group_by_network(self):
        group_rules = """
        group_by:
            - network
        """

        self.make_group_file(group_rules)
        group = grouping.Grouping(FAKE_CONFIG, FILE_NAME, 'src')
        group.compute.get_instances_list.return_value = [self.fake_instance1,
                                                         self.fake_instance2,
                                                         self.fake_instance3]
        group.group()

        expected_result = {'net1_id': ['s1', 's3'], 'net3_id': ['s2']}

        result = utils.read_yaml_file(RESULT_FILE)
        self.assertEquals(expected_result, result)
Esempio n. 3
0
def get_groups(name_config=None,
               group_file=None,
               cloud_id='src',
               validate_users_group=False,
               debug=None):
    """
    Function to group VMs by any of those dependencies (f.e. tenants,
    networks, etc.).

    :param name_config: name of config ini-file, example 'config.ini',
    :param group_file: name of groups defined yaml-file, example 'groups.yaml',
    :param validate_users_group: Remove duplicate IDs and check if valid
           VM id specified. Takes more time because of nova API multiple calls
    :return: yaml-file with tree-based groups defined based on grouping rules.
    """
    init(name_config, debug)
    group = grouping.Grouping(cfglib.CONF, group_file, cloud_id)
    group.group(validate_users_group)