예제 #1
0
    def __load(self, config_path):
        item_name = self.__chassis_name
        logger_config = self.get_logger(item_name)

        try:
            with open(config_path, 'r') as fp:
                chassis_info = YAMLLoader(fp).get_data()
        except IOError:
            logger_config.exception(
                "Cannot find config {}".format(config_path))
            raise InfraSimError("Cannot find config {}".format(config_path))

        if not isinstance(chassis_info, dict):
            logger_config.exception(
                "Config {} is an invalid yaml file.".format(config_path))
            raise InfraSimError(
                "Config {} is an invalid yaml file.".format(config_path))

        nodes = chassis_info.get("nodes")
        if not nodes:
            raise InfraSimError(
                "Config {} has no [nodes].".format(chassis_info))
        for node in nodes:
            if not node.get('name'):
                node['name'] = "{}_node_{}".format(item_name,
                                                   nodes.index(node))
        return chassis_info
예제 #2
0
    def _get_map_manager(self, name, config_file=None):
        is_chassis = False
        has_node = nm.in_map_folder(name)
        has_chassis = cm.in_map_folder(name)

        if config_file:
            with open(config_file, 'r') as fp:
                info = YAMLLoader(fp).get_data()
            if info.get("nodes"):
                is_chassis = True

            if (is_chassis and has_node) or (is_chassis is False and has_chassis):
                    raise InfraSimError("Type from config file is not match with name")
        else:
            is_chassis = has_chassis

        return cm if is_chassis else nm
예제 #3
0
    def __load(self, config_path):
        item_name = self.__chassis_name
        logger_config = self.get_logger(item_name)

        try:
            with open(config_path, 'r') as fp:
                chassis_info = YAMLLoader(fp).get_data()
        except IOError:
            logger_config.exception("Cannot find config {}".format(config_path))
            raise InfraSimError("Cannot find config {}".format(config_path))

        if not isinstance(chassis_info, dict):
            logger_config.exception("Config {} is an invalid yaml file.".format(config_path))
            raise InfraSimError("Config {} is an invalid yaml file.".format(config_path))

        nodes = chassis_info.get("nodes")
        if not nodes:
            raise InfraSimError("Config {} has no [nodes].".format(chassis_info))
        for node in nodes:
            if not node.get('name'):
                node['name'] = "{}_node_{}".format(item_name, nodes.index(node))
        return chassis_info