Как мне настроить клиент / сервер Python ODCS для работы с Fedora ODCS Server для создания контейнеров docker с помощью Cekit? - PullRequest
0 голосов
/ 30 мая 2020

Приношу свои извинения, если это неправильная сеть обмена стеками. Я пытаюсь создать образ построителя s2i из исходного кода. Образ компоновщика позволит мне создавать работающие Java образы для Openshift.

Образы компоновщика имеют открытый исходный код и доступны в следующем репозитории:

Openshift JDK Builder Images

Я установил cekit и использую docker Builder Engine. Вот моя команда сборки:

cekit -v build --overrides-file ubi8-openjdk-8.yaml docker

По умолчанию образ cekit будет использовать проверку подлинности Kerberos, но я решил переключиться на проверку подлинности OpenID C для простоты, отредактировав следующий файл и изменив конструктор ODCS как таковой. .

Файл находится по адресу: ~ / Library / Python / 3.7 / lib / python / site-packages / cekit / generator / base.py

Я изменил auth odcs на следующий . Это работает с действующим токеном, так как я не получаю ошибку 401. Если я ввожу неверный токен, я получаю 401.

odcs = ODCS(odcs_url,
            auth_mech=AuthMech.OpenIDC,
            openidc_token="tokenvalue")

К сожалению, вывод команды cekit приводит к следующему:

{"error":"Forbidden","message":"User KennyBartMan is not in role allowed_clients.","status":403}
2020-05-29 23:03:22,718 cekit        ERROR    ('Could not create ODCS compose', HTTPError('403 Client Error: FORBIDDEN for url: https://odcs.fedoraproject.org/api/1/composes/'))

Я попытался добавить себя в список allowed_clients в следующем файле:

/Library/Python/3.7/lib/python/site-packages/etc/odcs/config.py
ALLOWED_CLIENTS = {
    'groups': {},
     'users': {
          'KennyBartMan':{},
     }
}

Чтобы создать токен openid c, я использую предоставленный сценарий:

import openidc_client

staging = False

if staging:
    id_provider = 'https://id.stg.fedoraproject.org/openidc/'
else:
    id_provider = 'https://id.fedoraproject.org/openidc/'

# Get the auth token using the OpenID client.
oidc = openidc_client.OpenIDCClient(
    'odcs',
    id_provider,
    {'Token': 'Token', 'Authorization': 'Authorization'},
    'odcs-authorizer',
    'notsecret',
)

scopes = [
    'openid',
    'https://id.fedoraproject.org/scope/groups',
    'https://pagure.io/odcs/new-compose',
    'https://pagure.io/odcs/renew-compose',
    'https://pagure.io/odcs/delete-compose',
]

try:
    token = oidc.get_token(scopes, new_token=True)
    token = oidc.report_token_issue()
    print(token)
except requests.exceptions.HTTPError as e:
    print(e.response.text)
    raise

Я уверен, что мне не хватает чего-то простого. Изменение конфигурации с помощью allowed_clients, похоже, не имеет никакого эффекта. Нужно ли мне подавать заявку на роль в службе создания Fedora? Если да, то как мне это сделать? Я даже не уверен, что имеет смысл добавить себя в список allowed_clients, не делая что-либо в odcs Fedora, а не в локальном файле конфигурации.

...