from telebot.types import InlineKeyboardMarkup, InlineKeyboardButton

def create_groups_keyboard(groups, region_id):
    """
    Формирует InlineKeyboardMarkup для выбора группы хостов.

    :param groups: список словарей с группами, у каждой есть 'name' и 'groupid'
    :param region_id: id региона, нужен для callback_data кнопки "Все группы региона"
    :return: telebot.types.InlineKeyboardMarkup
    """
    markup = InlineKeyboardMarkup()
    for group in groups:
        markup.add(InlineKeyboardButton(
            text=group['name'],
            callback_data=f"group_{group['groupid']}"
        ))
    markup.add(InlineKeyboardButton(
        text="Все группы региона\n(Долгое выполнение)",
        callback_data=f"all_groups_{region_id}"
    ))
    cancel_button = InlineKeyboardButton("Отмена", callback_data="cancel_input")
    markup.add(cancel_button)
    return markup
