Size: a a a

Сообщество Python Программистов

2020 December 19

VA

Vadim Apenko in Сообщество Python Программистов
Я даже POC написал. Получается, что JENKINS тратит кучу ресурсов просто на ответы мне во время поллинга каждые 30 секунд.
источник

VA

Vadim Apenko in Сообщество Python Программистов
Alexander T
доступ к дебильному апи облегчается только аггрегатором на входе и кешированием на выходе)
Вот это второй вариант, но возникоает вопрос пересечения доступов и безопасности.
источник

AT

Alexander T in Сообщество Python Программистов
разграничение доступа это уже не к дженкинсу, в общем-то
источник

VA

Vadim Apenko in Сообщество Python Программистов
Alexander T
разграничение доступа это уже не к дженкинсу, в общем-то
Да, это вопрос к этому АПИ. Сейчас бот хранит креденшелы каждого пользователя, который в боте прошёл регистрацию. Но если я между ботом и апи сделаю какую-то прослойку оптимизации, том определенно будет пересечение креденшелов. Я почти сразу отбросил эту идею, так как даже логически не смог эффективно выстроить логику работы
источник

AT

Alexander T in Сообщество Python Программистов
разные юзеры могут отслеживать одинаковые задачи, в этом суть?
источник

AT

Alexander T in Сообщество Python Программистов
в таком случае креденшиалы можно не пересекать, аггрегировать пул задач на входе, и на выходе по каждому юзеру фильтровать
источник

VA

Vadim Apenko in Сообщество Python Программистов
Alexander T
разные юзеры могут отслеживать одинаковые задачи, в этом суть?
Да. Это прям очевидное решение на первый взгляд. У 8 юзеров пересекаются отслеживаемые задачи почти на 100%, значит логично запросить инфу по каждой из задач и отдать юзерам инфу о запуске, если он на это подписан. Но всё равно это сотни запросов при каждой итерации.
источник

AT

Alexander T in Сообщество Python Программистов
ну если сотня задач, то ты не уменьшишь количество запросов.
а там есть данные о прогрессе по задаче? можно интерполировать оставшееся время и таким образом делать запросы реже
источник

VA

Vadim Apenko in Сообщество Python Программистов
Alexander T
в таком случае креденшиалы можно не пересекать, аггрегировать пул задач на входе, и на выходе по каждому юзеру фильтровать
От чьего имени пуллить все задачи? От имени какого-то конкретного юзера?
С точки зрени безопасности бот сам по себе доступа к Jenkins не имеет. Он берет креденшелы того, кто запрости мониторинг и с ними лезет в Дженкинс.
источник

VA

Vadim Apenko in Сообщество Python Программистов
Alexander T
ну если сотня задач, то ты не уменьшишь количество запросов.
а там есть данные о прогрессе по задаче? можно интерполировать оставшееся время и таким образом делать запросы реже
Десятки задач. Десятки билдов в каждой. Сотни билдов в общем
источник

AT

Alexander T in Сообщество Python Программистов
Vadim Apenko
От чьего имени пуллить все задачи? От имени какого-то конкретного юзера?
С точки зрени безопасности бот сам по себе доступа к Jenkins не имеет. Он берет креденшелы того, кто запрости мониторинг и с ними лезет в Дженкинс.
есть список юзеров с его задачами. собираешь задачи в сет, потом аггрегируешь его в {юзер: [задачи]}
источник

AT

Alexander T in Сообщество Python Программистов
т.е. у тебя задачи не будут дублироваться, но каждая будет привязана к подходящим креденшиалам
источник

AT

Alexander T in Сообщество Python Программистов
и если таски пересекаются по юзерам то будет меньше авторизаций как минимум
источник

AT

Alexander T in Сообщество Python Программистов
а сделать вообще отдельного юзера для бота не вариант?
источник

VA

Vadim Apenko in Сообщество Python Программистов
Alexander T
т.е. у тебя задачи не будут дублироваться, но каждая будет привязана к подходящим креденшиалам
Вопрос оптимизации опять же.

2 юзера решили следать за 3 задачами.
например
Вася следит за 1, 2
Петя следит за 2, 3

Есть общий сет задач 1, 2, 3
По логике оптимизации задача 2 должна быть запрошена один раз. Но от чьего имени? Например вдруг у Пети нет доступа к 2, но в общий сет будет записана задача 2 с креденшелами Васи.
источник

VA

Vadim Apenko in Сообщество Python Программистов
Alexander T
а сделать вообще отдельного юзера для бота не вариант?
Не вариант.
источник

AT

Alexander T in Сообщество Python Программистов
Vadim Apenko
Вопрос оптимизации опять же.

2 юзера решили следать за 3 задачами.
например
Вася следит за 1, 2
Петя следит за 2, 3

Есть общий сет задач 1, 2, 3
По логике оптимизации задача 2 должна быть запрошена один раз. Но от чьего имени? Например вдруг у Пети нет доступа к 2, но в общий сет будет записана задача 2 с креденшелами Васи.
неправильно, что он следит за задачей, к которой у него нет доступа
источник

AT

Alexander T in Сообщество Python Программистов
ну и если есть данные о том, у кого к чему есть доступ, то оптимизация решаемая
источник

VA

Vadim Apenko in Сообщество Python Программистов
Alexander T
ну и если есть данные о том, у кого к чему есть доступ, то оптимизация решаемая
Можно запросить задачу и посмотреть ответ. Если дженкинс сказал, что такого нет - то нет доступа. И всё равно даже в такой логике запросов на каждой итерации оч много. Сейчас выворачиваю API Дженкинса наизнанку, пытаясь получить запущенные билды. По идее он должен вернуть только билды тех задач, к которым у юзера есть доступ.
Но пока успеха не добился
источник

AT

Alexander T in Сообщество Python Программистов
напоминает апи к powerbi, вот я там настрадался
источник