api: update client models to API v2.2.7 schema

parent ead56bb9
......@@ -4,3 +4,4 @@ __pycache__/
dist/
build/
.venv/
appstream/
......@@ -50,8 +50,22 @@ class BaseAPI:
async with self.session.get(url) as resp:
return await self._handle_response(resp)
async def post(self, path: str, data: dict = None, json: dict = None):
async def post(
self,
path: str,
data: dict = None,
json: dict = None,
params: dict = None,
):
url = f"{self.BASE_URL}/{path.lstrip('/')}"
if params:
query = urlencode(
{
k: ",".join(v) if isinstance(v, list) else v
for k, v in params.items()
}
)
url += f"?{query}"
async with self.session.post(url, data=data, json=json) as resp:
return await self._handle_response(resp)
......@@ -91,9 +105,9 @@ class APIInfo:
def __init__(self, client: BaseAPI):
self.client = client
async def version(self) -> models.APIVersion:
async def version(self) -> models.ApiVersionResponseModel:
data = await self.client.get("/version")
return models.APIVersion(**data)
return models.ApiVersionResponseModel(**data)
class TaskProcessInfo:
......@@ -108,7 +122,7 @@ class TaskProcessInfo:
state: list[str] | None = None,
tasks_limit: int = 100,
by_package: bool = False,
) -> models.TasksListModel:
) -> models.TasksListResponseModel:
params = {
k: v
for k, v in {
......@@ -122,26 +136,26 @@ class TaskProcessInfo:
if v is not None
}
data = await self.client.get("/task/progress/find_tasks", params)
return models.TasksListModel(**data)
return models.TasksListResponseModel(**data)
async def task_info(self, task_id: int) -> models.TaskProgressTaskInfoModel:
async def task_info(self, task_id: int) -> models.TaskProgressTaskInfoResponseModel:
data = await self.client.get(f"/task/progress/task_info/{task_id}")
return models.TaskProgressTaskInfoModel(**data)
return models.TaskProgressTaskInfoResponseModel(**data)
async def all_packagesets(self) -> models.AllTasksBranchesModel:
async def all_packagesets(self) -> models.AllTasksBranchesResponseModel:
data = await self.client.get("/task/progress/all_packagesets")
return models.AllTasksBranchesModel(**data)
return models.AllTasksBranchesResponseModel(**data)
async def all_tasks_branches(self) -> models.AllTasksBranchesModel:
async def all_tasks_branches(self) -> models.AllTasksBranchesResponseModel:
data = await self.client.get("/task/progress/all_tasks_branches")
return models.AllTasksBranchesModel(**data)
return models.AllTasksBranchesResponseModel(**data)
async def find_tasks_lookup(
self,
input: list[str],
branch: types.Branch | str | None = None,
tasks_limit: int = 10,
) -> models.FindTasksModel:
) -> models.FindTasksResponseModel:
params = {
k: v
for k, v in {
......@@ -152,11 +166,11 @@ class TaskProcessInfo:
if v is not None
}
data = await self.client.get("/task/progress/find_tasks_lookup", params)
return models.FindTasksModel(**data)
return models.FindTasksResponseModel(**data)
async def last_tasks(
self, branch: types.Branch | str | None = None, tasks_limit: int = 10
) -> models.TasksListModel:
) -> models.TasksListResponseModel:
params = {
k: v
for k, v in {
......@@ -166,7 +180,7 @@ class TaskProcessInfo:
if v is not None
}
data = await self.client.get("/task/progress/last_tasks", params)
return models.TasksListModel(**data)
return models.TasksListResponseModel(**data)
class TaskInfo:
......@@ -176,23 +190,27 @@ class TaskInfo:
async def build_dependency_set(
self, task_id: int, arch: str = "x86_64"
) -> models.TaskBuildDependencySetModel:
) -> models.BuildDependencySetResponseModel:
data = await self.client.get(
f"/task/build_dependency_set/{task_id}", {"arch": arch}
)
return models.TaskBuildDependencySetModel(**data)
return models.BuildDependencySetResponseModel(**data)
async def check_images(self, payload: dict) -> models.CheckImagesOutputModel:
data = await self.client.post("/task/check_images", json=payload)
return models.CheckImagesOutputModel(**data)
async def check_images(self, payload: dict) -> models.CheckImagesOutputResponseModel:
body = models.CheckImagesInputRequestModel.model_validate(payload)
data = await self.client.post(
"/task/check_images",
json=body.model_dump(exclude_none=True, by_alias=True),
)
return models.CheckImagesOutputResponseModel(**data)
async def find_images(self, task_id: int) -> models.FindImagesByTaskModel:
async def find_images(self, task_id: int) -> models.FindImagesByTaskResponseModel:
data = await self.client.get(f"/task/find_images/{task_id}")
return models.FindImagesByTaskModel(**data)
return models.FindImagesByTaskResponseModel(**data)
async def find_packageset(
self, task_id: int, branches: list[str] | None = None
) -> models.TaskFindPackagesetModel:
) -> models.TaskFindPackagesetResponseModel:
params = {
k: v
for k, v in {
......@@ -201,11 +219,11 @@ class TaskInfo:
if v is not None
}
data = await self.client.get(f"/task/find_packageset/{task_id}", params or None)
return models.TaskFindPackagesetModel(**data)
return models.TaskFindPackagesetResponseModel(**data)
async def misconflict(
self, task_id: int, archs: list[str] | None = None, no_cache: str | None = None
) -> models.TaskMisconflictPackagesModel:
) -> models.TaskMisconflictPackagesResponseModel:
params = {
k: v
for k, v in {
......@@ -215,14 +233,14 @@ class TaskInfo:
if v is not None
}
data = await self.client.get(f"/task/misconflict/{task_id}", params or None)
return models.TaskMisconflictPackagesModel(**data)
return models.TaskMisconflictPackagesResponseModel(**data)
async def needs_approval(
self,
acl_group: types.ApprovalGroup,
branches: list[str] | None = None,
before: str | None = None,
) -> models.NeedsApprovalModel:
) -> models.NeedsApprovalResponseModel:
params = {
k: v
for k, v in {
......@@ -233,15 +251,15 @@ class TaskInfo:
if v is not None
}
data = await self.client.get("/task/needs_approval", params)
return models.NeedsApprovalModel(**data)
return models.NeedsApprovalResponseModel(**data)
async def packages(self, task_id: int) -> models.TaskPackagesModel:
async def packages(self, task_id: int) -> models.TaskPackagesResponseModel:
data = await self.client.get(f"/task/packages/{task_id}")
return models.TaskPackagesModel(**data)
return models.TaskPackagesResponseModel(**data)
async def task_diff(self, task_id: int) -> models.TaskDiffModel:
async def task_diff(self, task_id: int) -> models.TaskDiffResponseModel:
data = await self.client.get(f"/task/task_diff/{task_id}")
return models.TaskDiffModel(**data)
return models.TaskDiffResponseModel(**data)
async def task_history(
self,
......@@ -250,7 +268,7 @@ class TaskInfo:
end_task: int = 0,
start_date: str | None = None,
end_date: str | None = None,
) -> models.TaskHistoryModel:
) -> models.TaskHistoryResponseModel:
params = {
k: v
for k, v in {
......@@ -263,7 +281,7 @@ class TaskInfo:
if v is not None
}
data = await self.client.get("/task/task_history", params)
return models.TaskHistoryModel(**data)
return models.TaskHistoryResponseModel(**data)
async def task_info(
self,
......@@ -272,7 +290,7 @@ class TaskInfo:
iteration: int | None = None,
no_cache: str | None = None,
states: list[str] | None = None,
) -> models.TaskInfoModel:
) -> models.TaskInfoResponseModel:
params = {
k: v
for k, v in {
......@@ -284,16 +302,16 @@ class TaskInfo:
if v is not None
}
data = await self.client.get(f"/task/task_info/{task_id}", params or None)
return models.TaskInfoModel(**data)
return models.TaskInfoResponseModel(**data)
async def task_repo(
self, task_id: int, include_task_packages: bool = False
) -> models.TaskRepoModel:
) -> models.TaskRepoResponseModel:
data = await self.client.get(
f"/task/task_repo/{task_id}",
{"include_task_packages": include_task_packages},
)
return models.TaskRepoModel(**data)
return models.TaskRepoResponseModel(**data)
async def what_depends_src(
self,
......@@ -306,8 +324,9 @@ class TaskInfo:
filter_by_package: list[str] | None = None,
filter_by_source: str | None = None,
oneandhalf: bool = False,
use_previous_state: bool = False,
no_cache: str | None = None,
) -> models.TaskBuildDependencyModel:
) -> models.TaskBuildDependencyResponseModel:
params = {
k: v
for k, v in {
......@@ -319,6 +338,7 @@ class TaskInfo:
"filter_by_package": filter_by_package,
"filter_by_source": filter_by_source,
"oneandhalf": oneandhalf,
"use_previous_state": use_previous_state,
"no_cache": no_cache,
}.items()
if v is not None
......@@ -326,7 +346,7 @@ class TaskInfo:
data = await self.client.get(
f"/task/what_depends_src/{task_id}", params or None
)
return models.TaskBuildDependencyModel(**data)
return models.TaskBuildDependencyResponseModel(**data)
class PackageInfo:
......@@ -346,7 +366,7 @@ class PackageInfo:
packager: str | None = None,
packager_email: str | None = None,
full: bool | None = None,
) -> models.PackageInfoModel:
) -> models.PackageInfoResponseModel:
params = {
k: v
for k, v in {
......@@ -365,35 +385,35 @@ class PackageInfo:
if v is not None
}
data = await self.client.get("/package/package_info", params)
return models.PackageInfoModel(**data)
return models.PackageInfoResponseModel(**data)
async def packages_by_file_names(
self, files: List[str], branch: types.Branch | str, arch: str | None = None
) -> models.PackageByFileNameModel:
payload = models.PackagesByFileNamesJsonModel(
) -> models.PackageByFileNameResponseModel:
payload = models.PackagesByFileNamesJsonRequestModel(
files=files, branch=branch, arch=arch
)
data = await self.client.post(
"/package/packages_by_file_names",
json=payload.model_dump(exclude_none=True),
json=payload.model_dump(exclude_none=True, by_alias=True),
)
return models.PackageByFileNameModel(**data)
return models.PackageByFileNameResponseModel(**data)
async def build_dependency_set(
self,
branch: types.Branch | str,
packages: list[str],
arch: str = "x86_64",
) -> models.BuildDependencySetModel:
) -> models.BuildDependencySetResponseModel:
data = await self.client.get(
"/package/build_dependency_set",
{"branch": branch, "packages": packages, "arch": arch},
)
return models.BuildDependencySetModel(**data)
return models.BuildDependencySetResponseModel(**data)
async def find_packageset(
self, packages: list[str], branches: list[str] | None = None
) -> models.PackageFindPackagesetModel:
) -> models.PackageFindPackagesetResponseModel:
params = {
k: v
for k, v in {
......@@ -403,22 +423,22 @@ class PackageInfo:
if v is not None
}
data = await self.client.get("/package/find_packageset", params)
return models.PackageFindPackagesetModel(**data)
return models.PackageFindPackagesetResponseModel(**data)
async def maintainer_score(
self, branch: types.Branch | str, name: str
) -> models.MaintainerScoreModel:
) -> models.MaintainerScoreResponseModel:
data = await self.client.get(
"/package/maintainer_score", {"branch": branch, "name": name}
)
return models.MaintainerScoreModel(**data)
return models.MaintainerScoreResponseModel(**data)
async def misconflict(
self,
packages: list[str],
branch: types.Branch | str,
archs: list[str] | None = None,
) -> models.PackageMisconflictPackagesModel:
) -> models.PackageMisconflictPackagesResponseModel:
params = {
k: v
for k, v in {
......@@ -429,28 +449,28 @@ class PackageInfo:
if v is not None
}
data = await self.client.get("/package/misconflict", params)
return models.PackageMisconflictPackagesModel(**data)
return models.PackageMisconflictPackagesResponseModel(**data)
async def package_by_file_md5(
self, branch: types.Branch | str, md5: str, arch: str = "x86_64"
) -> models.PackageByFileNameModel:
) -> models.PackageByFileNameResponseModel:
data = await self.client.get(
"/package/package_by_file_md5", {"branch": branch, "md5": md5, "arch": arch}
)
return models.PackageByFileNameModel(**data)
return models.PackageByFileNameResponseModel(**data)
async def package_by_file_name(
self, file: str, branch: types.Branch | str, arch: str = "x86_64"
) -> models.PackageByFileNameModel:
) -> models.PackageByFileNameResponseModel:
data = await self.client.get(
"/package/package_by_file_name",
{"file": file, "branch": branch, "arch": arch},
)
return models.PackageByFileNameModel(**data)
return models.PackageByFileNameResponseModel(**data)
async def package_files(self, pkghash: int) -> models.PackageFilesModel:
async def package_files(self, pkghash: int) -> models.PackageFilesResponseModel:
data = await self.client.get(f"/package/package_files/{pkghash}")
return models.PackageFilesModel(**data)
return models.PackageFilesResponseModel(**data)
async def repocop(
self,
......@@ -460,7 +480,7 @@ class PackageInfo:
package_release: str | None = None,
bin_package_arch: str | None = None,
package_type: types.PackageType = "source",
) -> models.RepocopJsonGetListModel:
) -> models.RepocopJsonGetListResponseModel:
params = {
k: v
for k, v in {
......@@ -474,26 +494,33 @@ class PackageInfo:
if v is not None
}
data = await self.client.get("/package/repocop", params)
return models.RepocopJsonGetListModel(**data)
return models.RepocopJsonGetListResponseModel(**data)
async def repocop_post(self, packages: list[dict]) -> None:
await self.client.post("/package/repocop", json={"packages": packages})
async def repocop_post(self, packages: list[dict]) -> models.MessageResponseModel:
body = models.RepocopJsonPostListRequestModel.model_validate(
{"packages": packages}
)
data = await self.client.post(
"/package/repocop",
json=body.model_dump(exclude_none=True, by_alias=True),
)
return models.MessageResponseModel(**data)
async def specfile_by_hash(self, pkghash: int) -> models.PackageSpecfileModel:
async def specfile_by_hash(self, pkghash: int) -> models.PackageSpecfileResponseModel:
data = await self.client.get(f"/package/specfile_by_hash/{pkghash}")
return models.PackageSpecfileModel(**data)
return models.PackageSpecfileResponseModel(**data)
async def specfile_by_name(
self, branch: types.Branch | str, name: str
) -> models.PackageSpecfileModel:
) -> models.PackageSpecfileResponseModel:
data = await self.client.get(
"/package/specfile_by_name", {"branch": branch, "name": name}
)
return models.PackageSpecfileModel(**data)
return models.PackageSpecfileResponseModel(**data)
async def unpackaged_dirs(
self, branch: types.Branch | str, packager: str, archs: list[str] | None = None
) -> models.UnpackagedDirsModel:
) -> models.UnpackagedDirsResponseModel:
params = {
k: v
for k, v in {
......@@ -504,7 +531,7 @@ class PackageInfo:
if v is not None
}
data = await self.client.get("/package/unpackaged_dirs", params)
return models.UnpackagedDirsModel(**data)
return models.UnpackagedDirsResponseModel(**data)
async def what_depends_src(
self,
......@@ -519,7 +546,7 @@ class PackageInfo:
filter_by_source: str | None = None,
oneandhalf: bool = False,
use_last_tasks: bool = False,
) -> models.PackageBuildDependencyModel:
) -> models.PackageBuildDependencyResponseModel:
params = {
k: v
for k, v in {
......@@ -538,61 +565,62 @@ class PackageInfo:
if v is not None
}
data = await self.client.get("/package/what_depends_src", params)
return models.PackageBuildDependencyModel(**data)
return models.PackageBuildDependencyResponseModel(**data)
class PackagesetInfo:
def __init__(self, client: BaseAPI):
self.client = client
async def active_packagesets(self) -> models.PackageSetActivePackageSetsModel:
async def active_packagesets(self) -> models.PackageSetActivePackageSetsResponseModel:
data = await self.client.get("/packageset/active_packagesets")
return models.PackageSetActivePackageSetsModel(**data)
return models.PackageSetActivePackageSetsResponseModel(**data)
async def repository_statistics(
self, branch: types.Branch | str | None = None
) -> models.RepositoryStatisticsModel:
if branch:
data = await self.client.get(
"/packageset/repository_statistics", {"branch": branch}
)
else:
data = await self.client.get("/packageset")
return models.RepositoryStatisticsModel(**data)
) -> models.RepositoryStatisticsResponseModel:
params = {"branch": branch} if branch is not None else None
data = await self.client.get("/packageset/repository_statistics", params)
return models.RepositoryStatisticsResponseModel(**data)
async def compare_packagesets(
self, pkgset1: types.Branch | str, pkgset2: types.Branch | str
) -> models.PackagesetCompareModel:
) -> models.PackagesetCompareResponseModel:
data = await self.client.get(
"/packageset/compare_packagesets", {"pkgset1": pkgset1, "pkgset2": pkgset2}
)
return models.PackagesetCompareModel(**data)
return models.PackagesetCompareResponseModel(**data)
async def maintainer_scores(self, branch: types.Branch | str) -> models.MaintainerScoresBatchModel:
async def maintainer_scores(self, branch: types.Branch | str) -> models.MaintainerScoresBatchResponseModel:
data = await self.client.get(
"/packageset/maintainer_scores", {"branch": branch}
)
return models.MaintainerScoresBatchModel(**data)
return models.MaintainerScoresBatchResponseModel(**data)
async def packages_by_component(
self, branch: types.Branch | str, arch: str, component: str
) -> models.PackagesByUuidModel:
) -> models.PackagesByUuidResponseModel:
data = await self.client.get(
"/packageset/packages_by_component",
{"branch": branch, "arch": arch, "component": component},
)
return models.PackagesByUuidModel(**data)
return models.PackagesByUuidResponseModel(**data)
async def packages_by_uuid(self, uuid: str) -> models.PackagesByUuidModel:
async def packages_by_uuid(self, uuid: str) -> models.PackagesByUuidResponseModel:
data = await self.client.get("/packageset/packages_by_uuid", {"uuid": uuid})
return models.PackagesByUuidModel(**data)
return models.PackagesByUuidResponseModel(**data)
async def pkgset_status_get(self) -> models.PackageSetStatusGetModel:
async def pkgset_status_get(self) -> models.PackageSetStatusGetResponseModel:
data = await self.client.get("/packageset/pkgset_status")
return models.PackageSetStatusGetModel(**data)
return models.PackageSetStatusGetResponseModel(**data)
async def pkgset_status_post(self, payload: dict) -> None:
await self.client.post("/packageset/pkgset_status", json=payload)
async def pkgset_status_post(self, payload: dict) -> models.MessageResponseModel:
body = models.PackageSetStatusPostRequestModel.model_validate(payload)
data = await self.client.post(
"/packageset/pkgset_status",
json=body.model_dump(exclude_none=True, by_alias=True),
)
return models.MessageResponseModel(**data)
async def repository_packages(
self,
......@@ -600,7 +628,7 @@ class PackagesetInfo:
package_type: types.PackageTypeAll = "all",
archs: list[str] | None = None,
include_done_tasks: bool = False,
) -> models.PackagesetPackagesModel:
) -> models.PackagesetPackagesResponseModel:
params = {
k: v
for k, v in {
......@@ -612,34 +640,34 @@ class PackagesetInfo:
if v is not None
}
data = await self.client.get("/packageset/repository_packages", params)
return models.PackagesetPackagesModel(**data)
return models.PackagesetPackagesResponseModel(**data)
class AclInfo:
def __init__(self, client: BaseAPI):
self.client = client
async def groups(self, branch: types.Branch | str, name: str | None = None) -> models.AclGroupsModel:
async def groups(self, branch: types.Branch | str, name: str | None = None) -> models.AclGroupsResponseModel:
data = {"branch": branch}
if name:
data["name"] = name
data = await self.client.get("/acl/groups", data)
return models.AclGroupsModel(**data)
return models.AclGroupsResponseModel(**data)
async def by_packages(
self, branch: types.Branch | str, packages_names: list[str]
) -> models.AclByPackagesModel:
) -> models.AclByPackagesResponseModel:
params = {
"branch": branch,
"packages_names": packages_names,
}
data = await self.client.get("/acl/by_packages", params)
return models.AclByPackagesModel(**data)
return models.AclByPackagesResponseModel(**data)
async def maintainer_groups(
self, nickname: str, branch: list[str] | None = None
) -> models.AclMaintainerGroupsModel:
) -> models.AclMaintainerGroupsResponseModel:
params = {
k: v
for k, v in {
......@@ -649,7 +677,7 @@ class AclInfo:
if v is not None
}
data = await self.client.get("/acl/maintainer_groups", params)
return models.AclMaintainerGroupsModel(**data)
return models.AclMaintainerGroupsResponseModel(**data)
class BugInfo:
......@@ -658,7 +686,7 @@ class BugInfo:
async def bugzilla_by_maintainer(
self, maintainer_nickname: str, by_acl: types.Acl | None = None
) -> models.BugzillaInfoModel | None:
) -> models.BugzillaInfoByMaintainerResponseModel:
try:
data = await self.client.get(
"/bug/bugzilla_by_maintainer",
......@@ -669,26 +697,26 @@ class BugInfo:
)
except errors.DataNotFoundError:
return None
return models.BugzillaInfoModel(**data)
return models.BugzillaInfoByMaintainerResponseModel(**data)
async def bugzilla_by_package(
self,
package_name: str,
package_type: types.PackageType = "source",
) -> models.BugzillaInfoModel:
) -> models.BugzillaInfoByPackageResponseModel:
data = await self.client.get(
"/bug/bugzilla_by_package",
{"package_name": package_name, "package_type": package_type},
)
return models.BugzillaInfoModel(**data)
return models.BugzillaInfoByPackageResponseModel(**data)
async def bugzilla_by_image_edition(
self, branch: types.Branch | str, edition: str
) -> models.BugzillaInfoModel:
) -> models.BugzillaInfoByImageEditionResponseModel:
data = await self.client.get(
"/bug/bugzilla_by_image_edition", {"branch": branch, "edition": edition}
)
return models.BugzillaInfoModel(**data)
return models.BugzillaInfoByImageEditionResponseModel(**data)
class FileInfo:
......@@ -697,15 +725,15 @@ class FileInfo:
async def packages_by_file(
self, branch: types.Branch | str, file_name: str
) -> models.FilePackagesByFileModel:
) -> models.FilePackagesByFileResponseModel:
data = await self.client.get(
"/file/packages_by_file", {"branch": branch, "file_name": file_name}
)
return models.FilePackagesByFileModel(**data)
return models.FilePackagesByFileResponseModel(**data)
async def search(
self, branch: types.Branch | str, file_name: str, limit: int | None = None
) -> models.FilesModel:
) -> models.FilesResponseModel:
data = await self.client.get(
"/file/search",
{
......@@ -714,49 +742,51 @@ class FileInfo:
"limit": limit if limit else 1000,
},
)
return models.FilesModel(**data)
return models.FilesResponseModel(**data)
async def fast_lookup(
self, branch: types.Branch | str, file_name: str, limit: int = 10
) -> models.FastFileSearchModel:
) -> models.FastFileSearchResponseModel:
data = await self.client.get(
"/file/fast_lookup",
{"branch": branch, "file_name": file_name, "limit": limit},
)
return models.FastFileSearchModel(**data)
return models.FastFileSearchResponseModel(**data)
class SiteInfo:
def __init__(self, client: BaseAPI):
self.client = client
async def all_maintainers(self, branch: types.Branch | str) -> models.AllMaintainersModel:
async def all_maintainers(
self, branch: types.Branch | str
) -> models.AllMaintainersResponseModel:
return await self.all_maintainers_with_nicknames(branch)
async def all_maintainers_with_nicknames(
self, branch: types.Branch | str
) -> models.AllMaintainersModel:
) -> models.AllMaintainersResponseModel:
data = await self.client.get(
"/site/all_maintainers_with_nicknames", {"branch": branch}
)
return models.AllMaintainersModel(**data)
return models.AllMaintainersResponseModel(**data)
async def find_source_package(
self, branch: types.Branch | str, name: str
) -> models.FindSourcePackageInBranch:
) -> models.FindSourcePackageInBranchResponseModel:
data = await self.client.get(
"/site/find_source_package", {"branch": branch, "name": name}
)
return models.FindSourcePackageInBranch(**data)
return models.FindSourcePackageInBranchResponseModel(**data)
async def maintainer_info(
self, branch: types.Branch | str, maintainer_nickname: str
) -> models.MaintainerInfoModel:
) -> models.MaintainerInfoResponseModel:
data = await self.client.get(
"/site/maintainer_info",
{"branch": branch, "maintainer_nickname": maintainer_nickname},
)
return models.MaintainerInfoModel(**data)
return models.MaintainerInfoResponseModel(**data)
async def package_info(
self,
......@@ -764,7 +794,7 @@ class SiteInfo:
pkghash: int,
changelog_last: int = 3,
package_type: types.PackageType = "source",
) -> models.SitePackageInfoModel:
) -> models.SitePackageInfoResponseModel:
data = await self.client.get(
f"/site/package_info/{pkghash}",
{
......@@ -773,67 +803,67 @@ class SiteInfo:
"package_type": package_type,
},
)
return models.SitePackageInfoModel(**data)
return models.SitePackageInfoResponseModel(**data)
async def pkghash_by_binary_name(
self, branch: types.Branch | str, name: str, arch: str
) -> models.SitePackagesetPackageHashModel:
) -> models.SitePackagesetPackageHashResponseModel:
data = await self.client.get(
"/site/pkghash_by_binary_name",
{"branch": branch, "name": name, "arch": arch},
)
return models.SitePackagesetPackageHashModel(**data)
return models.SitePackagesetPackageHashResponseModel(**data)
async def pkghash_by_name(
self, branch: types.Branch | str, name: str
) -> models.SitePackagesetPackageHashModel:
) -> models.SitePackagesetPackageHashResponseModel:
data = await self.client.get(
"/site/pkghash_by_name", {"branch": branch, "name": name}
)
return models.SitePackagesetPackageHashModel(**data)
return models.SitePackagesetPackageHashResponseModel(**data)
async def watch_by_maintainer(
self, maintainer_nickname: str
) -> models.SiteWatchByMaintainerModel | None:
self, maintainer_nickname: str, by_acl: types.Acl | str = "none"
) -> models.SiteWatchByMaintainerResponseModel:
try:
data = await self.client.get(
"/site/watch_by_maintainer",
{"maintainer_nickname": maintainer_nickname},
{"maintainer_nickname": maintainer_nickname, "by_acl": by_acl},
)
except errors.DataNotFoundError:
return None
return models.SiteWatchByMaintainerModel(**data)
return models.SiteWatchByMaintainerResponseModel(**data)
async def all_pkgset_archs(self, branch: types.Branch | str) -> models.SiteAllArchsModel:
async def all_pkgset_archs(self, branch: types.Branch | str) -> models.SiteAllArchsResponseModel:
data = await self.client.get("/site/all_pkgset_archs", {"branch": branch})
return models.SiteAllArchsModel(**data)
return models.SiteAllArchsResponseModel(**data)
async def all_pkgset_archs_with_src_count(
self, branch: types.Branch | str
) -> models.SiteAllArchsModel:
) -> models.SiteAllArchsResponseModel:
data = await self.client.get(
"/site/all_pkgset_archs_with_src_count", {"branch": branch}
)
return models.SiteAllArchsModel(**data)
return models.SiteAllArchsResponseModel(**data)
async def all_pkgsets(self) -> models.SiteAllPackagasetsModel:
async def all_pkgsets(self) -> models.SiteAllPackagesetsResponseModel:
data = await self.client.get("/site/all_pkgsets")
return models.SiteAllPackagasetsModel(**data)
return models.SiteAllPackagesetsResponseModel(**data)
async def all_pkgsets_summary(self) -> models.SiteAllPackagesetsSummaryModel:
async def all_pkgsets_summary(self) -> models.SiteAllPackagesetsSummaryResponseModel:
data = await self.client.get("/site/all_pkgsets_summary")
return models.SiteAllPackagesetsSummaryModel(**data)
return models.SiteAllPackagesetsSummaryResponseModel(**data)
async def all_pkgsets_with_src_count(self) -> models.SiteAllPackagasetsModel:
async def all_pkgsets_with_src_count(self) -> models.SiteAllPackagesetsResponseModel:
data = await self.client.get("/site/all_pkgsets_with_src_count")
return models.SiteAllPackagasetsModel(**data)
return models.SiteAllPackagesetsResponseModel(**data)
async def beehive_errors_by_maintainer(
self,
branch: types.Branch | str,
maintainer_nickname: str,
by_acl: types.Acl = "none",
) -> models.SiteBeehiveByMaintainerModel:
) -> models.SiteBeehiveByMaintainerResponseModel:
data = await self.client.get(
"/site/beehive_errors_by_maintainer",
{
......@@ -842,21 +872,21 @@ class SiteInfo:
"by_acl": by_acl,
},
)
return models.SiteBeehiveByMaintainerModel(**data)
return models.SiteBeehiveByMaintainerResponseModel(**data)
async def binary_package_archs_and_versions(
self, branch: types.Branch | str, name: str
) -> models.SitePackagesBinaryListModel:
) -> models.SitePackagesBinaryListResponseModel:
data = await self.client.get(
"/site/binary_package_archs_and_versions", {"branch": branch, "name": name}
)
return models.SitePackagesBinaryListModel(**data)
return models.SitePackagesBinaryListResponseModel(**data)
async def binary_package_scripts(
self, pkghash: int
) -> models.SiteBinPackageScriptsModel:
) -> models.SiteBinPackageScriptsResponseModel:
data = await self.client.get(f"/site/binary_package_scripts/{pkghash}")
return models.SiteBinPackageScriptsModel(**data)
return models.SiteBinPackageScriptsResponseModel(**data)
async def deleted_package_info(
self,
......@@ -864,7 +894,7 @@ class SiteInfo:
name: str,
package_type: types.PackageType = "source",
arch: str | None = None,
) -> models.SiteDeletedPackageModel:
) -> models.SiteDeletedPackageResponseModel:
params = {
k: v
for k, v in {
......@@ -876,11 +906,11 @@ class SiteInfo:
if v is not None
}
data = await self.client.get("/site/deleted_package_info", params)
return models.SiteDeletedPackageModel(**data)
return models.SiteDeletedPackageResponseModel(**data)
async def fast_packages_search_lookup(
self, name: list[str], branch: types.Branch | str | None = None
) -> models.SiteFastPackagesSearchModel:
) -> models.SiteFastPackagesSearchResponseModel:
params = {
k: v
for k, v in {
......@@ -890,14 +920,14 @@ class SiteInfo:
if v is not None
}
data = await self.client.get("/site/fast_packages_search_lookup", params)
return models.SiteFastPackagesSearchModel(**data)
return models.SiteFastPackagesSearchResponseModel(**data)
async def find_packages(
self,
name: list[str],
branch: types.Branch | str | None = None,
arch: list[str] | None = None,
) -> models.SiteFingPackagesModel:
) -> models.SiteFingPackagesResponseModel:
params = {
k: v
for k, v in {
......@@ -908,14 +938,14 @@ class SiteInfo:
if v is not None
}
data = await self.client.get("/site/find_packages", params)
return models.SiteFingPackagesModel(**data)
return models.SiteFingPackagesResponseModel(**data)
async def last_packages(
self,
branch: types.Branch | str,
tasks_limit: int = 10,
task_owner: str | None = None,
) -> models.SiteLastPackagesModel:
) -> models.SiteLastPackagesResponseModel:
params = {
k: v
for k, v in {
......@@ -926,14 +956,14 @@ class SiteInfo:
if v is not None
}
data = await self.client.get("/site/last_packages", params)
return models.SiteLastPackagesModel(**data)
return models.SiteLastPackagesResponseModel(**data)
async def last_packages_by_branch(
self,
branch: types.Branch | str,
packages_limit: int = 10,
packager: str | None = None,
) -> models.SiteLastBranchPackagesModel:
) -> models.SiteLastBranchPackagesResponseModel:
params = {
k: v
for k, v in {
......@@ -944,14 +974,14 @@ class SiteInfo:
if v is not None
}
data = await self.client.get("/site/last_packages_by_branch", params)
return models.SiteLastBranchPackagesModel(**data)
return models.SiteLastBranchPackagesResponseModel(**data)
async def last_packages_by_tasks(
self,
branch: types.Branch | str,
tasks_limit: int = 10,
task_owner: str | None = None,
) -> models.SiteLastPackagesModel:
) -> models.SiteLastPackagesResponseModel:
params = {
k: v
for k, v in {
......@@ -962,30 +992,30 @@ class SiteInfo:
if v is not None
}
data = await self.client.get("/site/last_packages_by_tasks", params)
return models.SiteLastPackagesModel(**data)
return models.SiteLastPackagesResponseModel(**data)
async def last_packages_with_cve_fixed(
self, branch: types.Branch | str
) -> models.SiteLastPackagesWithCVEFixesModel:
) -> models.SiteLastPackagesWithCVEFixesResponseModel:
data = await self.client.get(
"/site/last_packages_with_cve_fixed", {"branch": branch}
)
return models.SiteLastPackagesWithCVEFixesModel(**data)
return models.SiteLastPackagesWithCVEFixesResponseModel(**data)
async def maintainer_branches(
self, maintainer_nickname: str
) -> models.MaintainerBranchesModel:
) -> models.MaintainerBranchesResponseModel:
data = await self.client.get(
"/site/maintainer_branches", {"maintainer_nickname": maintainer_nickname}
)
return models.MaintainerBranchesModel(**data)
return models.MaintainerBranchesResponseModel(**data)
async def maintainer_packages(
self,
branch: types.Branch | str,
maintainer_nickname: str,
by_acl: types.Acl = "none",
) -> models.MaintainerPackagesModel:
) -> models.MaintainerPackagesResponseModel:
data = await self.client.get(
"/site/maintainer_packages",
{
......@@ -994,69 +1024,69 @@ class SiteInfo:
"by_acl": by_acl,
},
)
return models.MaintainerPackagesModel(**data)
return models.MaintainerPackagesResponseModel(**data)
async def package_changelog(
self, pkghash: int, changelog_last: int = 3
) -> models.SiteChangelogModel:
) -> models.SiteChangelogResponseModel:
data = await self.client.get(
f"/site/package_changelog/{pkghash}", {"changelog_last": changelog_last}
)
return models.SiteChangelogModel(**data)
return models.SiteChangelogResponseModel(**data)
async def package_downloads(
self, pkghash: int, branch: types.Branch | str
) -> models.SitePackagesDownloadsModel:
) -> models.SitePackagesDownloadsResponseModel:
data = await self.client.get(
f"/site/package_downloads/{pkghash}", {"branch": branch}
)
return models.SitePackagesDownloadsModel(**data)
return models.SitePackagesDownloadsResponseModel(**data)
async def package_downloads_bin(
self, pkghash: int, branch: types.Branch | str, arch: str
) -> models.SitePackagesDownloadsModel:
) -> models.SitePackagesDownloadsResponseModel:
data = await self.client.get(
f"/site/package_downloads_bin/{pkghash}", {"branch": branch, "arch": arch}
)
return models.SitePackagesDownloadsModel(**data)
return models.SitePackagesDownloadsResponseModel(**data)
async def package_downloads_src(
self, pkghash: int, branch: types.Branch | str
) -> models.SitePackagesDownloadsModel:
) -> models.SitePackagesDownloadsResponseModel:
data = await self.client.get(
f"/site/package_downloads_src/{pkghash}", {"branch": branch}
)
return models.SitePackagesDownloadsModel(**data)
return models.SitePackagesDownloadsResponseModel(**data)
async def package_info_brief(
self, pkghash: int
) -> models.SiteBriefPackageInfoModel:
) -> models.SiteBriefPackageInfoResponseModel:
data = await self.client.get(f"/site/package_info_brief/{pkghash}")
return models.SiteBriefPackageInfoModel(**data)
return models.SiteBriefPackageInfoResponseModel(**data)
async def package_log_bin(self, pkghash: int) -> models.BinPackageLogElementModel:
async def package_log_bin(self, pkghash: int) -> models.BinPackageLogResponseModel:
data = await self.client.get(f"/site/package_log_bin/{pkghash}")
return models.BinPackageLogElementModel(**data)
return models.BinPackageLogResponseModel(**data)
async def package_misconflict(
self, pkghash: int, branch: types.Branch | str
) -> models.PackageMisconflictBySrcModel:
) -> models.PackageMisconflictBySrcResponseModel:
data = await self.client.get(
f"/site/package_misconflict/{pkghash}", {"branch": branch}
)
return models.PackageMisconflictBySrcModel(**data)
return models.PackageMisconflictBySrcResponseModel(**data)
async def package_name_from_repology(
self, branch: types.Branch | str, name: str
) -> models.PackageNameFromRepologyModel:
) -> models.PackageNameFromRepologyResponseModel:
data = await self.client.get(
"/site/package_name_from_repology", {"branch": branch, "name": name}
)
return models.PackageNameFromRepologyModel(**data)
return models.PackageNameFromRepologyResponseModel(**data)
async def package_nvr_by_hash(
self, pkghash: int, name: str | None = None
) -> models.PackageNVRByHashModel:
) -> models.PackageNVRByHashResponseModel:
params = {
k: v
for k, v in {
......@@ -1067,14 +1097,14 @@ class SiteInfo:
data = await self.client.get(
f"/site/package_nvr_by_hash/{pkghash}", params or None
)
return models.PackageNVRByHashModel(**data)
return models.PackageNVRByHashResponseModel(**data)
async def package_versions(
self,
name: str,
package_type: types.PackageType = "source",
arch: str | None = None,
) -> models.SiteSourcePackagesVersionsModel:
) -> models.SiteSourcePackagesVersionsResponseModel:
params = {
k: v
for k, v in {
......@@ -1085,20 +1115,20 @@ class SiteInfo:
if v is not None
}
data = await self.client.get("/site/package_versions", params)
return models.SiteSourcePackagesVersionsModel(**data)
return models.SiteSourcePackagesVersionsResponseModel(**data)
async def package_versions_from_images(
self, name: str, branch: types.Branch | str, edition: str, type: str
) -> models.SiteImagePackageVersionsModel:
) -> models.SiteImagePackageVersionsResponseModel:
data = await self.client.get(
"/site/package_versions_from_images",
{"name": name, "branch": branch, "edition": edition, "type": type},
)
return models.SiteImagePackageVersionsModel(**data)
return models.SiteImagePackageVersionsResponseModel(**data)
async def package_versions_from_tasks(
self, name: str, branch: types.Branch | str | None = None
) -> models.SItePackagesVersionsFromTasksModel:
) -> models.SitePackagesVersionsFromTasksResponseModel:
params = {
k: v
for k, v in {
......@@ -1108,44 +1138,44 @@ class SiteInfo:
if v is not None
}
data = await self.client.get("/site/package_versions_from_tasks", params)
return models.SItePackagesVersionsFromTasksModel(**data)
return models.SitePackagesVersionsFromTasksResponseModel(**data)
async def packagesets_by_hash(
self, pkghash: int
) -> models.SitePackagesetsByHashModel:
) -> models.SitePackagesetsByHashResponseModel:
data = await self.client.get(f"/site/packagesets_by_hash/{pkghash}")
return models.SitePackagesetsByHashModel(**data)
return models.SitePackagesetsByHashResponseModel(**data)
async def pkghash_by_nvr(
self, name: str, branch: types.Branch | str, version: str, release: str
) -> models.SitePackagesetPackageHashByNameVersionRelease:
) -> models.SitePackagesetPackageHashByNameVersionReleaseResponseModel:
data = await self.client.get(
"/site/pkghash_by_nvr",
{"name": name, "branch": branch, "version": version, "release": release},
)
return models.SitePackagesetPackageHashByNameVersionRelease(**data)
return models.SitePackagesetPackageHashByNameVersionReleaseResponseModel(**data)
async def pkgset_categories_count(
self,
branch: types.Branch | str,
package_type: types.PackageTypeAll = "source",
) -> models.SitePackagesetCategoriesModel:
) -> models.SitePackagesetCategoriesResponseModel:
data = await self.client.get(
"/site/pkgset_categories_count",
{"branch": branch, "package_type": package_type},
)
return models.SitePackagesetCategoriesModel(**data)
return models.SitePackagesetCategoriesResponseModel(**data)
async def pkgsets_summary_status(self) -> models.SitePackagesetsSummaryStatusModel:
async def pkgsets_summary_status(self) -> models.SitePackagesetsSummaryStatusResponseModel:
data = await self.client.get("/site/pkgsets_summary_status")
return models.SitePackagesetsSummaryStatusModel(**data)
return models.SitePackagesetsSummaryStatusResponseModel(**data)
async def repocop_by_maintainer(
self,
branch: types.Branch | str,
maintainer_nickname: str,
by_acl: types.Acl = "none",
) -> models.RepocopByMaintainerModel:
) -> models.RepocopByMaintainerResponseModel:
data = await self.client.get(
"/site/repocop_by_maintainer",
{
......@@ -1154,7 +1184,7 @@ class SiteInfo:
"by_acl": by_acl,
},
)
return models.RepocopByMaintainerModel(**data)
return models.RepocopByMaintainerResponseModel(**data)
async def repository_packages(
self,
......@@ -1162,7 +1192,7 @@ class SiteInfo:
package_type: types.PackageTypeAll = "source",
group: str | None = None,
buildtime: int = 0,
) -> models.SitePackagesModel:
) -> models.SitePackagesResponseModel:
params = {
k: v
for k, v in {
......@@ -1174,30 +1204,30 @@ class SiteInfo:
if v is not None
}
data = await self.client.get("/site/repository_packages", params)
return models.SitePackagesModel(**data)
return models.SitePackagesResponseModel(**data)
async def source_package_versions(
self, name: str
) -> models.SiteSourcePackagesVersionsModel:
) -> models.SiteSourcePackagesVersionsResponseModel:
data = await self.client.get("/site/source_package_versions", {"name": name})
return models.SiteSourcePackagesVersionsModel(**data)
return models.SiteSourcePackagesVersionsResponseModel(**data)
async def tasks_by_maintainer(
self, branch: types.Branch | str, maintainer_nickname: str
) -> models.SiteTaskByNameModel:
) -> models.SiteTaskByNameResponseModel:
data = await self.client.get(
"/site/tasks_by_maintainer",
{"branch": branch, "maintainer_nickname": maintainer_nickname},
)
return models.SiteTaskByNameModel(**data)
return models.SiteTaskByNameResponseModel(**data)
async def tasks_by_package(self, name: str) -> models.SiteTaskByNameModel:
async def tasks_by_package(self, name: str) -> models.SiteTaskByNameResponseModel:
data = await self.client.get("/site/tasks_by_package", {"name": name})
return models.SiteTaskByNameModel(**data)
return models.SiteTaskByNameResponseModel(**data)
async def tasks_history(
self, task_id: int | None = None
) -> models.SiteTasksHistoryModel:
) -> models.SiteTasksHistoryResponseModel:
params = {
k: v
for k, v in {
......@@ -1206,7 +1236,7 @@ class SiteInfo:
if v is not None
}
data = await self.client.get("/site/tasks_history", params or None)
return models.SiteTasksHistoryModel(**data)
return models.SiteTasksHistoryResponseModel(**data)
class AuthInfo:
......@@ -1219,13 +1249,12 @@ class AuthInfo:
password: str,
auth_provider: types.AuthProvider = "ldap",
) -> models.AuthResponseModel:
body = models.Body_postLogin(
nickname=nickname, password=password, auth_provider=auth_provider
)
data = await self.client.post(
"/auth/login",
data={
"nickname": nickname,
"password": password,
"auth_provider": auth_provider,
},
json=body.model_dump(exclude_none=True, by_alias=True),
)
return models.AuthResponseModel(**data)
......@@ -1234,8 +1263,10 @@ class AuthInfo:
return models.AuthLogoutResponseModel(**data)
async def refresh_token(self, access_token: str) -> models.AuthResponseModel:
body = models.Body_postRefreshToken(access_token=access_token)
data = await self.client.post(
"/auth/refresh-token", data={"access_token": access_token}
"/auth/refresh-token",
json=body.model_dump(exclude_none=True, by_alias=True),
)
return models.AuthResponseModel(**data)
......@@ -1315,21 +1346,21 @@ class DependenciesInfo:
name: str,
branch: types.Branch | str,
dp_type: types.DependencyType = "both",
) -> models.DependsPackageBuildDependencyModel:
) -> models.PackageBuildDependencyModel:
data = await self.client.get(
"/dependencies/what_depends_src",
{"name": name, "branch": branch, "dp_type": dp_type},
)
return models.DependsPackageBuildDependencyModel(**data)
return models.PackageBuildDependencyModel(**data)
class ErrataExportOvalInfo:
def __init__(self, client: BaseAPI):
self.client = client
async def branches(self) -> models.OvalBranchesModel:
async def branches(self) -> models.OvalBranchesResponseModel:
data = await self.client.get("/errata/export/oval/branches")
return models.OvalBranchesModel(**data)
return models.OvalBranchesResponseModel(**data)
async def info(
self,
......@@ -1367,7 +1398,7 @@ class ErrataInfo:
page: int | None = None,
limit: int | None = None,
sort: list[str] | None = None,
) -> models.AdvisoryErrataModel:
) -> models.AdvisoryErrataResponseModel:
params = {
k: v
for k, v in {
......@@ -1380,19 +1411,22 @@ class ErrataInfo:
if v is not None
}
data = await self.client.get("/errata/advisory", params or None)
return models.AdvisoryErrataModel(**data)
return models.AdvisoryErrataResponseModel(**data)
async def branches_updates(
self, errata_ids: list[str], exclude_json: bool = False
) -> models.ErrataBranchesUpdatesModel:
) -> models.ErrataBranchesUpdatesResponseModel:
body = models.ErrataJsonPostListRequestModel(errata_ids=errata_ids)
data = await self.client.post(
"/errata/branches_updates", json={"errata_ids": errata_ids}
"/errata/branches_updates",
json=body.model_dump(exclude_none=True, by_alias=True),
params={"exclude_json": exclude_json},
)
return models.ErrataBranchesUpdatesModel(**data)
return models.ErrataBranchesUpdatesResponseModel(**data)
async def errata_branches(self) -> models.ErrataBranchesModel:
async def errata_branches(self) -> models.ErrataBranchesResponseModel:
data = await self.client.get("/errata/errata_branches")
return models.ErrataBranchesModel(**data)
return models.ErrataBranchesResponseModel(**data)
async def find_erratas(
self,
......@@ -1403,7 +1437,7 @@ class ErrataInfo:
page: int | None = None,
limit: int | None = None,
state: types.ErrataState = "all",
) -> models.ErrataLastChangedModel:
) -> models.ErrataLastChangedResponseModel:
params = {
k: v
for k, v in {
......@@ -1417,7 +1451,7 @@ class ErrataInfo:
if v is not None
}
data = await self.client.get("/errata/find_erratas", params or None)
return models.ErrataLastChangedModel(**data)
return models.ErrataLastChangedResponseModel(**data)
async def find_image_erratas(
self,
......@@ -1431,7 +1465,7 @@ class ErrataInfo:
limit: int | None = None,
is_discarded: bool = False,
sort: list[str] | None = None,
) -> models.ImageErrataModel:
) -> models.ImageErrataResponseModel:
params = {
k: v
for k, v in {
......@@ -1448,19 +1482,22 @@ class ErrataInfo:
if v is not None
}
data = await self.client.get("/errata/find_image_erratas", params)
return models.ImageErrataModel(**data)
return models.ImageErrataResponseModel(**data)
async def ids(self) -> models.ErrataIdsListModel:
async def ids(self) -> models.ErrataIdsListResponseModel:
data = await self.client.get("/errata/ids")
return models.ErrataIdsListModel(**data)
return models.ErrataIdsListResponseModel(**data)
async def packages_updates(
self, errata_ids: list[str], exclude_json: bool = False
) -> models.ErrataPackagesUpdatesModel:
) -> models.ErrataPackagesUpdatesResponseModel:
body = models.ErrataJsonPostListRequestModel(errata_ids=errata_ids)
data = await self.client.post(
"/errata/packages_updates", json={"errata_ids": errata_ids}
"/errata/packages_updates",
json=body.model_dump(exclude_none=True, by_alias=True),
params={"exclude_json": exclude_json},
)
return models.ErrataPackagesUpdatesModel(**data)
return models.ErrataPackagesUpdatesResponseModel(**data)
async def search(
self,
......@@ -1468,7 +1505,7 @@ class ErrataInfo:
name: str | None = None,
vuln_id: str | None = None,
errata_id: str | None = None,
) -> models.ErratasModel:
) -> models.ErratasResponseModel:
params = {
k: v
for k, v in {
......@@ -1480,7 +1517,7 @@ class ErrataInfo:
if v is not None
}
data = await self.client.get("/errata/search", params or None)
return models.ErratasModel(**data)
return models.ErratasResponseModel(**data)
@deprecated("use errata.export.oval.branches() instead")
async def export_oval_branches(self):
......@@ -1497,7 +1534,7 @@ class ExportBeehiveInfo:
async def ftbfs(
self, branch: types.Branch | str, arch: str | None = None
) -> models.ExportBeehiveFTBFSListModel:
) -> models.ExportBeehiveFTBFSListResponseModel:
params = {
k: v
for k, v in {
......@@ -1507,7 +1544,7 @@ class ExportBeehiveInfo:
if v is not None
}
data = await self.client.get("/export/beehive/ftbfs", params)
return models.ExportBeehiveFTBFSListModel(**data)
return models.ExportBeehiveFTBFSListResponseModel(**data)
class ExportTranslationInfo:
......@@ -1538,7 +1575,7 @@ class ExportInfo:
async def branch_binary_packages(
self, branch: types.Branch | str, arch: str | None = None
) -> models.PackagesetPackagesExportModel:
) -> models.PackagesetPackagesExportResponseModel:
params = {
k: v
for k, v in {
......@@ -1549,19 +1586,19 @@ class ExportInfo:
data = await self.client.get(
f"/export/branch_binary_packages/{branch}", params or None
)
return models.PackagesetPackagesExportModel(**data)
return models.PackagesetPackagesExportResponseModel(**data)
async def branch_tree(self) -> models.BranchTreeModel:
async def branch_tree(self) -> models.BranchTreeResponseModel:
data = await self.client.get("/export/branch_tree")
return models.BranchTreeModel(**data)
return models.BranchTreeResponseModel(**data)
async def repology(self, branch: types.Branch | str) -> models.RepologyExportModel:
async def repology(self, branch: types.Branch | str) -> models.RepologyExportResponseModel:
data = await self.client.get(f"/export/repology/{branch}")
return models.RepologyExportModel(**data)
return models.RepologyExportResponseModel(**data)
async def sitemap_packages(self, branch: types.Branch | str) -> models.SitemapPackagesExportModel:
async def sitemap_packages(self, branch: types.Branch | str) -> models.SitemapPackagesExportResponseModel:
data = await self.client.get(f"/export/sitemap_packages/{branch}")
return models.SitemapPackagesExportModel(**data)
return models.SitemapPackagesExportResponseModel(**data)
@deprecated("use export.beehive.ftbfs() instead")
async def beehive_ftbfs(self, branch, arch=None):
......@@ -1578,22 +1615,30 @@ class ImageInspectInfo:
async def regular(
self, payload: dict
) -> models.ImagePackagesInspectRegularModel:
data = await self.client.post("/image/inspect/regular", json=payload)
return models.ImagePackagesInspectRegularModel(**data)
) -> models.ImagePackagesInspectRegularResponseModel:
body = models.ImagePackagesJSONRequestModel.model_validate(payload)
data = await self.client.post(
"/image/inspect/regular",
json=body.model_dump(exclude_none=True, by_alias=True),
)
return models.ImagePackagesInspectRegularResponseModel(**data)
async def sp(self, payload: dict) -> models.ImagePackagesInspectSPModel:
data = await self.client.post("/image/inspect/sp", json=payload)
return models.ImagePackagesInspectSPModel(**data)
async def sp(self, payload: dict) -> models.ImagePackagesInspectSPResponseModel:
body = models.ImagePackagesJSONRequestModel.model_validate(payload)
data = await self.client.post(
"/image/inspect/sp",
json=body.model_dump(exclude_none=True, by_alias=True),
)
return models.ImagePackagesInspectSPResponseModel(**data)
class ImageIsoInfo:
def __init__(self, client: BaseAPI):
self.client = client
async def all_images(self) -> models.ImageAllISOModel:
async def all_images(self) -> models.ImageAllISOResponseModel:
data = await self.client.get("/image/iso/all_images")
return models.ImageAllISOModel(**data)
return models.ImageAllISOResponseModel(**data)
class ImageInfo:
......@@ -1610,7 +1655,7 @@ class ImageInfo:
release: str | None = None,
variant: str | None = None,
type: str | None = None,
) -> models.ActiveImagesModel:
) -> models.ActiveImagesResponseModel:
params = {
k: v
for k, v in {
......@@ -1624,7 +1669,7 @@ class ImageInfo:
if v is not None
}
data = await self.client.get("/image/active_images", params or None)
return models.ActiveImagesModel(**data)
return models.ActiveImagesResponseModel(**data)
async def find_images_by_package_name(
self,
......@@ -1633,7 +1678,7 @@ class ImageInfo:
edition: str | None = None,
pkg_type: types.PackageType = "source",
img_show: types.ImageShow = "all",
) -> models.FindImagesByPackageModel:
) -> models.FindImagesByPackageResponseModel:
params = {
k: v
for k, v in {
......@@ -1646,11 +1691,11 @@ class ImageInfo:
if v is not None
}
data = await self.client.get("/image/find_images_by_package_name", params)
return models.FindImagesByPackageModel(**data)
return models.FindImagesByPackageResponseModel(**data)
async def image_categories_count(
self, uuid: str, component: str | None = None
) -> models.SiteImageCategoriesModel:
) -> models.SiteImageCategoriesResponseModel:
params = {
k: v
for k, v in {
......@@ -1660,7 +1705,7 @@ class ImageInfo:
if v is not None
}
data = await self.client.get("/image/image_categories_count", params)
return models.SiteImageCategoriesModel(**data)
return models.SiteImageCategoriesResponseModel(**data)
async def image_info(
self,
......@@ -1674,7 +1719,7 @@ class ImageInfo:
component: str | None = None,
platform: str | None = None,
type: str | None = None,
) -> models.ImageInfoModel:
) -> models.ImageInfoResponseModel:
params = {
k: v
for k, v in {
......@@ -1692,11 +1737,11 @@ class ImageInfo:
if v is not None
}
data = await self.client.get("/image/image_info", params or None)
return models.ImageInfoModel(**data)
return models.ImageInfoResponseModel(**data)
async def image_packages(
self, uuid: str, group: str | None = None, component: str | None = None
) -> models.ImagePackagesModel:
) -> models.ImagePackagesResponseModel:
params = {
k: v
for k, v in {
......@@ -1707,22 +1752,27 @@ class ImageInfo:
if v is not None
}
data = await self.client.get("/image/image_packages", params)
return models.ImagePackagesModel(**data)
return models.ImagePackagesResponseModel(**data)
async def image_packageset(self) -> models.ImagePackageSetModel:
async def image_packageset(self) -> models.ImagePackageSetResponseModel:
data = await self.client.get("/image/image_packageset")
return models.ImagePackageSetModel(**data)
return models.ImagePackageSetResponseModel(**data)
async def image_status_get(self) -> models.ImageStatusGetModel:
async def image_status_get(self) -> models.ImageStatusGetResponseModel:
data = await self.client.get("/image/image_status")
return models.ImageStatusGetModel(**data)
return models.ImageStatusGetResponseModel(**data)
async def image_status_post(self, payload: dict) -> None:
await self.client.post("/image/image_status", json=payload)
async def image_status_post(self, payload: dict) -> models.MessageResponseModel:
body = models.ImageJSONRequestModel.model_validate(payload)
data = await self.client.post(
"/image/image_status",
json=body.model_dump(exclude_none=True, by_alias=True),
)
return models.MessageResponseModel(**data)
async def image_tag_status_get(
self, branch: types.Branch | str | None = None, edition: str | None = None
) -> models.ImageTagStatusGetModel:
) -> models.ImageTagStatusGetResponseModel:
params = {
k: v
for k, v in {
......@@ -1732,14 +1782,19 @@ class ImageInfo:
if v is not None
}
data = await self.client.get("/image/image_tag_status", params or None)
return models.ImageTagStatusGetModel(**data)
return models.ImageTagStatusGetResponseModel(**data)
async def image_tag_status_post(self, payload: dict) -> None:
await self.client.post("/image/image_tag_status", json=payload)
async def image_tag_status_post(self, payload: dict) -> models.MessageResponseModel:
body = models.ImageTagJSONRequestModel.model_validate(payload)
data = await self.client.post(
"/image/image_tag_status",
json=body.model_dump(exclude_none=True, by_alias=True),
)
return models.MessageResponseModel(**data)
async def image_uuid_by_tag(self, tag: str) -> models.ImageTagUUIDModel:
async def image_uuid_by_tag(self, tag: str) -> models.ImageTagUUIDResponseModel:
data = await self.client.get("/image/image_uuid_by_tag", {"tag": tag})
return models.ImageTagUUIDModel(**data)
return models.ImageTagUUIDResponseModel(**data)
async def last_packages_by_image(
self,
......@@ -1747,7 +1802,7 @@ class ImageInfo:
uuid: str,
packages_limit: int | None = None,
component: str | None = None,
) -> models.LastImagePackagesModel:
) -> models.LastImagePackagesResponseModel:
params = {
k: v
for k, v in {
......@@ -1759,7 +1814,7 @@ class ImageInfo:
if v is not None
}
data = await self.client.get("/image/last_packages_by_image", params)
return models.LastImagePackagesModel(**data)
return models.LastImagePackagesResponseModel(**data)
async def last_packages_image_with_cve_fixed(
self,
......@@ -1767,7 +1822,7 @@ class ImageInfo:
uuid: str,
packages_limit: int | None = None,
component: str | None = None,
) -> models.LastImagePackagesModel:
) -> models.LastImagePackagesResponseModel:
params = {
k: v
for k, v in {
......@@ -1781,7 +1836,7 @@ class ImageInfo:
data = await self.client.get(
"/image/last_packages_image_with_cve_fixed", params
)
return models.LastImagePackagesModel(**data)
return models.LastImagePackagesResponseModel(**data)
@deprecated("use image.inspect.regular() instead")
async def inspect_regular(self, payload):
......@@ -1803,13 +1858,13 @@ class LicenseInfo:
async def license_text(self) -> str:
return await self.client.get_text("/license")
async def info(self, license: str) -> models.LicenseInfoModel:
async def info(self, license: str) -> models.LicenseInfoResponseModel:
data = await self.client.get("/license/info", {"license": license})
return models.LicenseInfoModel(**data)
return models.LicenseInfoResponseModel(**data)
async def tokens(self, license: str) -> models.LicenseTokensModel:
async def tokens(self, license: str) -> models.LicenseTokensResponseModel:
data = await self.client.get("/license/tokens", {"license": license})
return models.LicenseTokensModel(**data)
return models.LicenseTokensResponseModel(**data)
class CveInfo:
......@@ -1818,27 +1873,19 @@ class CveInfo:
async def info(
self, vuln_id: str, exclude_json: bool = False
) -> models.VulnerabilityInfoModel:
) -> models.VulnerabilityInfoResponseModel:
data = await self.client.get(
"/vuln/cve", {"vuln_id": vuln_id, "exclude_json": exclude_json}
)
return models.VulnerabilityInfoModel(**data)
return models.VulnerabilityInfoResponseModel(**data)
async def fixes(
self, vuln_id: str, exclude_json: bool = False
) -> models.VulnFixesPackagesModel:
data = await self.client.get(
"/vuln/cve/fixes", {"vuln_id": vuln_id, "exclude_json": exclude_json}
)
return models.VulnFixesPackagesModel(**data)
async def fixes(self, vuln_id: str) -> models.VulnFixesPackagesResponseModel:
data = await self.client.get("/vuln/cve/fixes", {"vuln_id": vuln_id})
return models.VulnFixesPackagesResponseModel(**data)
async def excluded(
self, vuln_id: str, exclude_json: bool = False
) -> models.VulnFixesPackagesModel:
data = await self.client.get(
"/vuln/cve/excluded", {"vuln_id": vuln_id, "exclude_json": exclude_json}
)
return models.VulnFixesPackagesModel(**data)
async def excluded(self, vuln_id: str) -> models.VulnExcludedPackagesResponseModel:
data = await self.client.get("/vuln/cve/excluded", {"vuln_id": vuln_id})
return models.VulnExcludedPackagesResponseModel(**data)
class BduInfo:
......@@ -1847,19 +1894,15 @@ class BduInfo:
async def info(
self, vuln_id: str, exclude_json: bool = False
) -> models.VulnerabilityInfoModel:
) -> models.VulnerabilityInfoResponseModel:
data = await self.client.get(
"/vuln/bdu", {"vuln_id": vuln_id, "exclude_json": exclude_json}
)
return models.VulnerabilityInfoModel(**data)
return models.VulnerabilityInfoResponseModel(**data)
async def fixes(
self, vuln_id: str, exclude_json: bool = False
) -> models.VulnFixesPackagesModel:
data = await self.client.get(
"/vuln/bdu/fixes", {"vuln_id": vuln_id, "exclude_json": exclude_json}
)
return models.VulnFixesPackagesModel(**data)
async def fixes(self, vuln_id: str) -> models.VulnFixesPackagesResponseModel:
data = await self.client.get("/vuln/bdu/fixes", {"vuln_id": vuln_id})
return models.VulnFixesPackagesResponseModel(**data)
class GhsaInfo:
......@@ -1868,19 +1911,15 @@ class GhsaInfo:
async def info(
self, vuln_id: str, exclude_json: bool = False
) -> models.VulnerabilityInfoModel:
) -> models.VulnerabilityInfoResponseModel:
data = await self.client.get(
"/vuln/ghsa", {"vuln_id": vuln_id, "exclude_json": exclude_json}
)
return models.VulnerabilityInfoModel(**data)
return models.VulnerabilityInfoResponseModel(**data)
async def fixes(
self, vuln_id: str, exclude_json: bool = False
) -> models.VulnFixesPackagesModel:
data = await self.client.get(
"/vuln/ghsa/fixes", {"vuln_id": vuln_id, "exclude_json": exclude_json}
)
return models.VulnFixesPackagesModel(**data)
async def fixes(self, vuln_id: str) -> models.VulnFixesPackagesResponseModel:
data = await self.client.get("/vuln/ghsa/fixes", {"vuln_id": vuln_id})
return models.VulnFixesPackagesResponseModel(**data)
class VulnInfo:
......@@ -1890,9 +1929,9 @@ class VulnInfo:
self.bdu = BduInfo(self.client)
self.ghsa = GhsaInfo(self.client)
async def task(self, task_id: int) -> models.CveVulnerableTaskModel:
async def task(self, task_id: int) -> models.CveVulnerableTaskResponseModel:
data = await self.client.get(f"/vuln/task/{task_id}")
return models.CveVulnerableTaskModel(**data)
return models.CveVulnerableTaskResponseModel(**data)
@deprecated("use vuln.cve.info() instead")
async def cve(self, vuln_id: str, exclude_json: bool = False):
......@@ -1900,11 +1939,11 @@ class VulnInfo:
@deprecated("use vuln.cve.fixes() instead")
async def cve_fixes(self, vuln_id: str, exclude_json: bool = False):
return await self.cve.fixes(vuln_id, exclude_json)
return await self.cve.fixes(vuln_id)
@deprecated("use vuln.cve.excluded() instead")
async def cve_excluded(self, vuln_id: str, exclude_json: bool = False):
return await self.cve.excluded(vuln_id, exclude_json)
return await self.cve.excluded(vuln_id)
@deprecated("use vuln.bdu.info() instead")
async def bdu(self, vuln_id: str, exclude_json: bool = False):
......@@ -1912,7 +1951,7 @@ class VulnInfo:
@deprecated("use vuln.bdu.fixes() instead")
async def bdu_fixes(self, vuln_id: str, exclude_json: bool = False):
return await self.bdu.fixes(vuln_id, exclude_json)
return await self.bdu.fixes(vuln_id)
@deprecated("use vuln.ghsa.info() instead")
async def ghsa(self, vuln_id: str, exclude_json: bool = False):
......@@ -1920,12 +1959,12 @@ class VulnInfo:
@deprecated("use vuln.ghsa.fixes() instead")
async def ghsa_fixes(self, vuln_id: str, exclude_json: bool = False):
return await self.ghsa.fixes(vuln_id, exclude_json)
return await self.ghsa.fixes(vuln_id)
class ALTRepoAPI:
def __init__(self, session: aiohttp.ClientSession, config: "ALTRepoConfig"):
self.BASE_API_VERSION = "1.25.6"
self.BASE_API_VERSION = "2.2.7"
self._client = BaseAPI(session, config.api_base_url)
self.api = APIInfo(self._client)
self.task = TaskInfo(self._client)
......@@ -1943,5 +1982,5 @@ class ALTRepoAPI:
self.license = LicenseInfo(self._client)
self.vuln = VulnInfo(self._client)
async def version(self) -> models.APIVersion:
async def version(self) -> models.ApiVersionResponseModel:
return await self.api.version()
from __future__ import annotations
from enum import StrEnum
from typing import Any
from pydantic import BaseModel, Field
from typing import List, Dict, Any
class APIVersion(BaseModel):
class AclByPackagesElementModel(BaseModel):
name: str
version: str
description: str
updated: str
members: list[str]
class SubTaskArchitectureModel(BaseModel):
stage_status: str
arch: str
class AclByPackagesResponseModel(BaseModel):
branch: str
packages: list[AclByPackagesElementModel]
class SubTasksElementModel(BaseModel):
subtask_id: int
subtask_type: str
subtask_srpm: str
subtask_srpm_name: str
subtask_srpm_evr: str
subtask_dir: str
subtask_tag_id: str
subtask_tag_name: str
subtask_tag_author: str
subtask_package: str
subtask_pkg_from: str
subtask_changed: str
type: str
archs: List[SubTaskArchitectureModel]
class AclGroupsElementModel(BaseModel):
group: str
date: str
maintainers: list[str]
class TaskApprovalElementModel(BaseModel):
type: str
nickname: str
message: str
class AclGroupsResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
groups: list[AclGroupsElementModel]
class TasksListElementModel(BaseModel):
task_id: int
task_repo: str
task_state: str
task_owner: str
task_try: int
task_iter: int
task_testonly: int
task_changed: str
task_message: str
task_stage: str
dependencies: List[int]
subtasks: List[SubTasksElementModel]
approval: list[TaskApprovalElementModel]
class AclMaintainerGroupsElementModel(BaseModel):
name: str
groups: list[str]
class SubTaskInfoElementModel(BaseModel):
subtask_id: int
subtask_type: str
subtask_srpm: str
subtask_srpm_name: str
subtask_srpm_evr: str
subtask_dir: str
subtask_tag_id: str
subtask_tag_name: str
subtask_tag_author: str
subtask_package: str
subtask_pkg_from: str
subtask_changed: str
type: str
src_pkg_name: str
src_pkg_hash: str
archs: List[SubTaskArchitectureModel]
approval: list[TaskApprovalElementModel]
class AclMaintainerGroupsResponseModel(BaseModel):
nickname: str
branches: list[AclMaintainerGroupsElementModel]
class TaskIterationsElementModel(BaseModel):
task_try: int
task_iter: int
class ActiveImagesElementModel(BaseModel):
edition: str
tags: list[str]
class TaskProgressTaskInfoModel(BaseModel):
task_id: int
task_repo: str
task_state: str
task_owner: str
task_try: int
task_iter: int
task_testonly: int
task_changed: str
task_message: str
task_stage: str
dependencies: List[int]
subtasks: List[SubTaskInfoElementModel]
iterations: list[TaskIterationsElementModel]
class ActiveImagesResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
images: list[ActiveImagesElementModel]
class TasksListModel(BaseModel):
request_args: Dict[str, Any]
length: int
tasks: list[TasksListElementModel]
class AdvisoryErrataElementModel(BaseModel):
model_config = {"populate_by_name": True}
id: str
type: str
created: str
updated: str
pkgset_name: str
task_id: int
subtask_id: int
task_state: str
pkg_hash: str
pkg_name: str
pkg_version: str
pkg_release: str
references: list[AdvisoryErrataReferenceModel]
json_: AdvisoryErrataJsonModel = Field(alias='json')
class PackageSetActivePackageSetsModel(BaseModel):
length: int
packagesets: List[str]
class AdvisoryErrataJsonModel(BaseModel):
type: str
action: str
is_public: bool
reason: str
description: str
vuln_id: str
vuln_cpe: str
branches: list[str]
pkg_name: str
pkg_evr: str
pkg_versions: list[AdvisoryErrataPackageVersionRangeModel]
references: list[AdvisoryErrataReferenceModel]
extra: dict[str, Any]
class RepositoryStatisticsPackageCountsModel(BaseModel):
arch: str
component: str
count: int
size: int
size_hr: str
uuid: str
class AdvisoryErrataPackageVersionRangeModel(BaseModel):
begin: str
begin_exclude: bool
end: str
end_exclude: bool
class RepositoryStatisticsBranchesModel(BaseModel):
branch: str
date_update: str
packages_count: List[RepositoryStatisticsPackageCountsModel]
class AdvisoryErrataReferenceModel(BaseModel):
type: str
link: str
class RepositoryStatisticsModel(BaseModel):
class AdvisoryErrataResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
branches: List[RepositoryStatisticsBranchesModel]
erratas: list[AdvisoryErrataElementModel]
class AllMaintainersElementModel(BaseModel):
......@@ -130,336 +108,289 @@ class AllMaintainersElementModel(BaseModel):
count_source_pkg: int
class MaintainerInfoModel(BaseModel):
request_args: Dict[str, Any]
information: AllMaintainersElementModel
class AllMaintainersResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
maintainers: list[AllMaintainersElementModel]
class AllMaintainersModel(BaseModel):
request_args: Dict[str, Any]
class AllTasksBranchesResponseModel(BaseModel):
length: int
maintainers: List[AllMaintainersElementModel]
branches: list[str]
class SiteWatchByMaintainerElementModel(BaseModel):
pkg_name: str
old_version: str
new_version: str
repology_name: str
url: str
date_update: str
class ApiVersionResponseModel(BaseModel):
name: str
version: str
description: str
class SiteWatchByMaintainerModel(BaseModel):
request_args: Dict[str, Any]
length: int
packages: List[SiteWatchByMaintainerElementModel]
class AuthLogoutResponseModel(BaseModel):
message: str
class BugzillaInfoElementModel(BaseModel):
id: str
status: str
resolution: str
severity: str
product: str
version: str | None
platform: str | None
component: str
source_package_name: str | None = None
binary_package_name: str | None = None
assignee: str | None = None
reporter: str
summary: str
last_changed: str
class AuthProvider(StrEnum):
ldap = 'ldap'
keycloak = 'keycloak'
class BugzillaInfoModel(BaseModel):
request_args: Dict[str, Any]
length: int
bugs: List[BugzillaInfoElementModel]
class AuthResponseModel(BaseModel):
access_token: str
refresh_token: str
class FilePackagesByFileElementModel(BaseModel):
hash: str
class BackportHelperDependencyLevelModel(BaseModel):
depth: int
packages: list[BackportHelperPackageElementModel]
class BackportHelperModel(BaseModel):
request_args: dict[str, Any]
count: int
maxdepth: int
dependencies: list[BackportHelperDependencyLevelModel]
class BackportHelperPackageElementModel(BaseModel):
srpm: str
name: str
epoch: int
version: str
release: str
arch: str
class FilePackagesByFileModel(BaseModel):
request_args: Dict[str, Any]
length: int
packages: List[FilePackagesByFileElementModel]
class BinPackageLogResponseModel(BaseModel):
pkg_hash: str
task_id: int
subtask_id: int
subtask_arch: str
buildlog_hash: str
link: str
class PackageInfoChangelogElementModel(BaseModel):
date: str | None
name: str | None
evr: str | None
message: str | None
class Body_postLogin(BaseModel):
nickname: str
password: str
auth_provider: AuthProvider = 'ldap'
class PackageInfoDependenciesModel(BaseModel):
require: List[str] | None
provide: List[str] | None
conflict: List[str] | None
obsolete: List[str] | None
class Body_postRefreshToken(BaseModel):
access_token: str
class PackageInfoPackageModel(BaseModel):
class BranchTreeBranchCommitModel(BaseModel):
name: str
version: str
release: str
sha1: str
packager: str
packager_email: str
arch: str
epoch: int
disttag: str
sourcepackage: int
filename: str
sourcerpm: str
serial: int | None
buildtime: int | None
buildhost: str | None
size: int | None
archivesize: int | None
filesize: int | None
rpmversion: str | None
cookie: str | None
license: str | None
group: str | None
url: str | None
summary: str | None
description: str | None
distribution: str | None
vendor: str | None
os: str | None
gif: str | None
xpm: str | None
icon: str | None
prein: str | None
postin: str | None
preun: str | None
postun: str | None
preinprog: List[str] | None
postinprog: List[str] | None
preunprog: List[str] | None
postunprog: List[str] | None
buildarchs: List[str] | None
verifyscript: str | None
verifyscriptprog: List[str] | None
prefixes: List[str] | None
instprefixes: List[str] | None
optflags: str | None
disturl: str | None
payloadformat: str | None
payloadcompressor: str | None
payloadflags: str | None
platform: str | None
changelog: List[PackageInfoChangelogElementModel] | PackageInfoChangelogElementModel
files: List[str] | None
depends: List[PackageInfoDependenciesModel] | PackageInfoDependenciesModel
class PackageInfoModel(BaseModel):
request_args: Dict[str, Any]
length: int
packages: List[PackageInfoPackageModel]
date: str
task: int
class PackageByFileNameElementModel(BaseModel):
name: str
version: str
release: str
disttag: str
sha1: str
class BranchTreeBranchPointModel(BaseModel):
branch: str
arch: str
files: List[str]
task: BranchTreeTaskModel
from_task: BranchTreeTaskModel
class BranchTreeResponseModel(BaseModel):
branches: list[str]
tasks: list[BranchTreeTaskModel]
branch_commits: list[BranchTreeBranchCommitModel]
branch_points: list[BranchTreeBranchPointModel]
class PackagesByFileNamesJsonModel(BaseModel):
files: List[str]
class BranchTreeTaskModel(BaseModel):
id: int
prev: int
branch: str
arch: str | None = None
date: str
class PackageByFileNameModel(BaseModel):
request_args: Dict[str, Any]
length: int
packages: List[PackageByFileNameElementModel]
not_found: List[str]
class BugAclChoice(StrEnum):
none = 'none'
by_nick = 'by_nick'
by_nick_leader = 'by_nick_leader'
by_nick_or_group = 'by_nick_or_group'
by_nick_leader_and_group = 'by_nick_leader_and_group'
class FilesElementModel(BaseModel):
file_name: str
file_hashname: str
file_class: str
symlink: str
file_mode: str
class BugzillaInfoByImageEditionElementModel(BaseModel):
id: int
status: str
resolution: str
severity: str
product: str
version: str
platform: str
component: str
assignee: str
reporter: str
summary: str
last_changed: str
class FilesModel(BaseModel):
request_args: Dict[str, Any]
class BugzillaInfoByImageEditionResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
files: List[FilesElementModel]
bugs: list[BugzillaInfoByImageEditionElementModel]
class AclGroupsElementModel(BaseModel):
group: str
date: str
maintainers: List[str]
class BugzillaInfoByMaintainerElementModel(BaseModel):
id: int
status: str
resolution: str
severity: str
product: str
component: str
assignee: str
reporter: str
summary: str
last_changed: str
source_package_name: str
binary_package_name: str
class AclGroupsModel(BaseModel):
request_args: Dict[str, Any]
class BugzillaInfoByMaintainerResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
groups: List[AclGroupsElementModel]
bugs: list[BugzillaInfoByMaintainerElementModel]
class SitePackageInfoArchsModel(BaseModel):
name: str
archs: list[str]
pkghash: list[str]
class BugzillaInfoByPackageElementModel(BaseModel):
id: int
status: str
resolution: str
severity: str
product: str
component: str
assignee: str
reporter: str
summary: str
last_changed: str
class SitePackageTasksElementModel(BaseModel):
type: str
id: int
date: str
class BugzillaInfoByPackageResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
bugs: list[BugzillaInfoByPackageElementModel]
class SitePackageInfoChangelogElementModel(BaseModel):
date: str
name: str
nick: str
evr: str
message: str
class BuildDependencySetAmbiguousProvidesElementModel(BaseModel):
requires: str
provides_count: int
provides: list[BuildDependencySetAmbiguousProvidesPackageModel]
class SitePackageNewVersionModel(BaseModel):
task_id: int
date: str
pkghash: str
version: str
release: str
class BuildDependencySetAmbiguousProvidesModel(BaseModel):
package: str
ambiguous_provides: list[BuildDependencySetAmbiguousProvidesElementModel]
class SitePackageBeehiveElementModel(BaseModel):
arch: str
status: str
updated: str
build_time: float
ftbfs_since: str
url: str
class BuildDependencySetAmbiguousProvidesPackageModel(BaseModel):
name: str
used: bool
class SitePackageDependenciesElementModel(BaseModel):
class BuildDependencySetPackageModel(BaseModel):
name: str
version: str
type: str
flag: int
flag_decoded: List[str]
release: str
epoch: int
archs: list[str]
requires: list[str]
class SitePackageLicenseTokensElementModel(BaseModel):
token: str
license: str
class BuildDependencySetPackagesModel(BaseModel):
package: str
length: int
depends: list[BuildDependencySetPackageModel]
class SitePackageInfoModel(BaseModel):
pkghash: str
request_args: Dict[str, Any]
name: str
version: str
release: str
arch: str
buildtime: int
task: int
task_date: str
gear: str
license: str
category: str
url: str
vcs: str
summary: str
description: str
packager: str
packager_nickname: str
acl: List[str]
maintainers: List[str]
package_archs: List[SitePackageInfoArchsModel]
tasks: List[SitePackageTasksElementModel]
changelog: List[SitePackageInfoChangelogElementModel]
new_version: List[SitePackageNewVersionModel]
beehive: List[SitePackageBeehiveElementModel]
dependencies: List[SitePackageDependenciesElementModel]
license_tokens: List[SitePackageLicenseTokensElementModel]
class SitePackagesetPackageHashModel(BaseModel):
request_args: Dict[str, Any]
pkghash: str
version: str
release: str
class BuildDependencySetResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
packages: list[BuildDependencySetPackagesModel]
ambiguous_dependencies: list[BuildDependencySetAmbiguousProvidesModel]
class FindSourcePackageInBranch(BaseModel):
request_args: Dict[str, Any]
source_package: str
class CheckImagesInputFilterModel(BaseModel):
editions: list[str] = Field(default_factory=list)
releases: list[str] = Field(default_factory=list)
versions: list[str] = Field(default_factory=list)
archs: list[str] = Field(default_factory=list)
variants: list[str] = Field(default_factory=list)
types: list[str] = Field(default_factory=list)
class AclByPackagesElementModel(BaseModel):
name: str
updated: str
members: List[str]
class CheckImagesInputRequestModel(BaseModel):
task_id: int | None = None
packages_names: list[str] | None = None
filters: list[CheckImagesInputFilterModel] | None = None
class AclByPackagesModel(BaseModel):
class CheckImagesOutputImageModel(BaseModel):
file: str
branch: str
packages: List[AclByPackagesElementModel]
edition: str
flavor: str
platform: str
release: str
major_version: int
minor_version: int
sub_version: int
arch: str
variant: str
type: str
buildtime: str
packages: list[CheckImagesOutputPackageModel]
class AclMaintainerGroupsElementModel(BaseModel):
name: str
groups: List[str]
class CheckImagesOutputPackageModel(BaseModel):
status: str
from_subtask: int
srcpkg_name: str
binpkg_name: str
binpkg_arch: str
class AclMaintainerGroupsModel(BaseModel):
nickname: str
branches: List[AclMaintainerGroupsElementModel]
class CheckImagesOutputResponseModel(BaseModel):
request_args: dict[str, Any]
in_images: list[CheckImagesOutputImageModel]
not_in_images: list[CheckImagesOutputPackageModel]
class AuthResponseModel(BaseModel):
access_token: str
refresh_token: str
class CveTaskPackageVulnerableElementModel(BaseModel):
id: str
type: str
link: str
class AuthLogoutResponseModel(BaseModel):
message: str
class CveTaskPackagesElementModel(BaseModel):
subtask: int
pkghash: str
pkg_name: str
pkg_version: str
pkg_release: str
branch: str
errata_id: str
errata_link: str
vulnerabilities: list[CveTaskPackageVulnerableElementModel]
class BackportHelperBinaryElementModel(BaseModel):
srpm: str
name: str
epoch: int
version: str
release: str
arch: str
class CveVulnerableTaskResponseModel(BaseModel):
packages: list[CveTaskPackagesElementModel]
class BackportHelperBinaryDepthElementModel(BaseModel):
depth: int
packages: List[BackportHelperBinaryElementModel]
class DependenciesAllPackagasetsElementModel(BaseModel):
branch: str
count: int
class BackportHelperModel(BaseModel):
request_args: Dict[str, Any]
count: int
maxdepth: int
dependencies: List[BackportHelperBinaryDepthElementModel]
class DependenciesPackageBuildDependenciesModel(BaseModel):
request_args: dict[str, Any]
length: int
package_info: DependenciesPackageInfoModel
dependencies: list[DependenciesPackageDependenciesElementModel]
provided_by_src: list[DependenciesPackageInfoElementModel]
class DependenciesPackageDependenciesElementModel(BaseModel):
......@@ -467,21 +398,13 @@ class DependenciesPackageDependenciesElementModel(BaseModel):
version: str
type: str
flag: int
flag_decoded: List[str]
flag_decoded: list[str]
class DependenciesPackageDependenciesModel(BaseModel):
request_args: Dict[str, Any]
request_args: dict[str, Any]
length: int
dependencies: List[DependenciesPackageDependenciesElementModel]
class DependenciesPackageInfoModel(BaseModel):
name: str
epoch: int
version: str
release: str
buildtime: int
dependencies: list[DependenciesPackageDependenciesElementModel]
class DependenciesPackageInfoElementModel(BaseModel):
......@@ -492,199 +415,43 @@ class DependenciesPackageInfoElementModel(BaseModel):
pkghash: str
class DependenciesPackageBuildDependenciesModel(BaseModel):
request_args: Dict[str, Any]
length: int
package_info: DependenciesPackageInfoModel | None
dependencies: List[DependenciesPackageDependenciesElementModel]
provided_by_src: List[DependenciesPackageInfoElementModel]
class FastDependencySearchElementModel(BaseModel):
dp_name: str
class FastDependencySearchModel(BaseModel):
request_args: Dict[str, Any]
length: int
dependencies: List[FastDependencySearchElementModel]
class DependenciesAllPackagasetsElementModel(BaseModel):
branch: str
count: int
class DependenciesPackagesElementModel(BaseModel):
hash: str
class DependenciesPackageInfoModel(BaseModel):
name: str
epoch: int
version: str
release: str
arch: str
sourcepackage: int
summary: str
buildtime: int
category: str
maintainer: str
dp_types: List[str]
class DependenciesPackagesModel(BaseModel):
request_args: Dict[str, Any]
length: int
packages: List[DependenciesPackagesElementModel]
branches: List[DependenciesAllPackagasetsElementModel]
class PackageDependsElementModel(BaseModel):
pkghash: str
name: str
arch: str
dp_name: str
dp_version: str
dp_flag: int
dp_flag_decoded: List[str]
class PackageDependsModel(BaseModel):
requires: PackageDependsElementModel | None
provides: PackageDependsElementModel | None
class PackageBuildDependencyElementModel(BaseModel):
depth: int
class DependenciesPackagesElementModel(BaseModel):
hash: str
name: str
version: str
release: str
epoch: int
serial: int
sourcerpm: str
branch: str
buildtime: str
archs: List[str]
cycle: List[str]
requires: List[str]
acl: List[str]
class PackageBuildDependencyModel(BaseModel):
request_args: Dict[str, Any]
length: int
dependencies: List[PackageBuildDependencyElementModel]
class DependsPackageBuildDependencyElementModel(BaseModel):
pkghash: str
name: str
branch: str
buildtime: str
acl: List[str]
depends: List[PackageDependsModel]
class DependsPackageBuildDependencyModel(BaseModel):
request_args: Dict[str, Any]
length: int
dependencies: List[DependsPackageBuildDependencyElementModel]
class AdvisoryErrataReferenceModel(BaseModel):
type: str
link: str
class AdvisoryErrataPackageVersionRangeModel(BaseModel):
begin: str
begin_exclude: bool
end: str
end_exclude: bool
class AdvisoryErrataJsonModel(BaseModel):
type: str
action: str
is_public: bool
reason: str
description: str
vuln_id: str
vuln_cpe: str
branches: List[str]
pkg_name: str
pkg_evr: str
pkg_versions: List[AdvisoryErrataPackageVersionRangeModel]
references: List[AdvisoryErrataReferenceModel]
extra: Dict[str, Any]
class AdvisoryErrataElementModel(BaseModel):
model_config = {"populate_by_name": True}
id: str
type: str
created: str
updated: str
pkgset_name: str
task_id: int
subtask_id: int
task_state: str
pkg_hash: str
pkg_name: str
pkg_version: str
pkg_release: str
references: List[AdvisoryErrataReferenceModel]
json_: AdvisoryErrataJsonModel | None = Field(None, alias="json")
class AdvisoryErrataModel(BaseModel):
request_args: Dict[str, Any]
length: int
erratas: List[AdvisoryErrataElementModel]
class ErrataBranchesModel(BaseModel):
length: int
branches: List[str]
class ErrataJsonPostListModel(BaseModel):
errata_ids: List[str]
class ErrataBugModel(BaseModel):
id: int
arch: str
sourcepackage: int
summary: str
is_valid: bool
buildtime: int
category: str
maintainer: str
dp_types: list[str]
class ErrataVulnerabilityModel(BaseModel):
id: str
hash: str
type: str
summary: str
score: float
severity: str
url: str
modified_date: str
published_date: str
body: str
is_valid: bool
parsed: "VulnerabilityParsedDetailsModel | None"
class DependenciesPackagesModel(BaseModel):
request_args: dict[str, Any]
length: int
packages: list[DependenciesPackagesElementModel]
branches: list[DependenciesAllPackagasetsElementModel]
class ErrataPackageUpdateModel(BaseModel):
id: str
type: str
created: str
updated: str
pkgset_name: str
task_id: int
subtask_id: int
task_state: str
pkg_hash: str
pkg_name: str
pkg_version: str
pkg_release: str
bugs: List[ErrataBugModel]
vulns: List[ErrataVulnerabilityModel]
class DependencyPackageDependsElementModel(BaseModel):
pkghash: str
name: str
arch: str
dp_name: str
dp_version: str
dp_flag: int
dp_flag_decoded: list[str]
class ErrataBranchUpdateModel(BaseModel):
......@@ -692,32 +459,30 @@ class ErrataBranchUpdateModel(BaseModel):
type: str
pkgset_name: str
pkgset_date: str
packages_updates: List[ErrataPackageUpdateModel]
packages_updates: list[ErrataPackageUpdateModel]
class ErrataBranchesUpdatesModel(BaseModel):
branches_updates: List[ErrataBranchUpdateModel]
class ErrataBranchesResponseModel(BaseModel):
length: int
branches: list[str]
class ErrataPackagesUpdatesModel(BaseModel):
packages_updates: List[ErrataPackageUpdateModel]
class ErrataBranchesUpdatesResponseModel(BaseModel):
branches_updates: list[ErrataBranchUpdateModel]
class OvalBranchesModel(BaseModel):
length: int
branches: List[str]
class ErrataBugModel(BaseModel):
id: int
summary: str
is_valid: bool
class VulnerabilitiesElementModel(BaseModel):
id: str
type: str
class ErrataIdsListResponseModel(BaseModel):
errata_ids: list[str]
class PackagesElementModel(BaseModel):
pkghash: str
pkg_name: str
pkg_version: str
pkg_release: str
class ErrataJsonPostListRequestModel(BaseModel):
errata_ids: list[str]
class ErrataLastChangedElementModel(BaseModel):
......@@ -728,52 +493,34 @@ class ErrataLastChangedElementModel(BaseModel):
task_id: int
changed: str
branch: str
json_: Dict[str, Any] = Field(default_factory=dict, alias="json")
packages: List[PackagesElementModel]
vulnerabilities: List[VulnerabilitiesElementModel]
json_: dict[str, Any] = Field(alias='json')
packages: list[PackagesElementModel]
vulnerabilities: list[VulnerabilitiesElementModel]
class ErrataLastChangedModel(BaseModel):
request_args: Dict[str, Any]
class ErrataLastChangedResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
erratas: List[ErrataLastChangedElementModel]
erratas: list[ErrataLastChangedElementModel]
class ImageErrataElementModel(BaseModel):
img_hash: str
img_version: str
img_release: str
pkg_name: str
pkg_arch: str
class ErrataModel(BaseModel):
id: str
type: str
created: str
updated: str
pkgset_name: str
task_id: int
subtask_id: int
task_state: str
pkg_hash: str
pkg_name: str
pkg_version: str
pkg_release: str
summary: str
errata_id: str
eh_type: str
task_id: int
changed: str
branch: str
is_discarded: bool
vulnerabilities: List[VulnerabilitiesElementModel]
class ImageErrataModel(BaseModel):
request_args: Dict[str, Any]
length: int
erratas: List[ImageErrataElementModel]
class ErrataIdsListModel(BaseModel):
errata_ids: List[str]
class ErrataReferenceModel(BaseModel):
id: str
type: str
references: list[ErrataReferenceModel]
class ErrataModel(BaseModel):
class ErrataPackageUpdateModel(BaseModel):
id: str
type: str
created: str
......@@ -786,11 +533,47 @@ class ErrataModel(BaseModel):
pkg_name: str
pkg_version: str
pkg_release: str
references: List[ErrataReferenceModel]
bugs: list[ErrataBugModel]
vulns: list[ErrataVulnerabilityModel]
class ErrataPackagesUpdatesResponseModel(BaseModel):
packages_updates: list[ErrataPackageUpdateModel]
class ErrataReferenceModel(BaseModel):
id: str
type: str
class ErrataState(StrEnum):
all = 'all'
active = 'active'
discarded = 'discarded'
class ErrataVulnerabilityModel(BaseModel):
id: str
hash: str
type: str
summary: str
score: float
severity: str
url: str
modified_date: str
published_date: str
body: str
is_valid: bool
parsed: VulnerabilityParsedDetailsModel
class ErratasModel(BaseModel):
erratas: List[ErrataModel]
class ErratasResponseModel(BaseModel):
erratas: list[ErrataModel]
class ErrorResponse(BaseModel):
message: str
details: dict[str, Any] | None = None
class ExportBeehiveFTBFSElementModel(BaseModel):
......@@ -806,154 +589,193 @@ class ExportBeehiveFTBFSElementModel(BaseModel):
url: str
class ExportBeehiveFTBFSListModel(BaseModel):
request_args: Dict[str, Any]
class ExportBeehiveFTBFSListResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
ftbfs: List[ExportBeehiveFTBFSElementModel]
ftbfs: list[ExportBeehiveFTBFSElementModel]
class PackagesetPackagesExportElementModel(BaseModel):
name: str
epoch: int
version: str
release: str
arch: str
disttag: str
buildtime: int
source: str
class FastDependencySearchElementModel(BaseModel):
dp_name: str
class PackagesetPackagesExportModel(BaseModel):
request_args: Dict[str, Any]
class FastDependencySearchModel(BaseModel):
request_args: dict[str, Any]
length: int
packages: List[PackagesetPackagesExportElementModel]
dependencies: list[FastDependencySearchElementModel]
class BranchTreeTaskModel(BaseModel):
id: int
prev: int
branch: str
date: str
class FastFileSearchElementModel(BaseModel):
file_name: str
class BranchTreeBranchCommitModel(BaseModel):
class FastFileSearchResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
files: list[FastFileSearchElementModel]
class FilePackagesByFileElementModel(BaseModel):
hash: str
name: str
date: str
task: int
version: str
release: str
arch: str
class BranchTreeBranchPointModel(BaseModel):
branch: str
task: BranchTreeTaskModel | None
from_task: BranchTreeTaskModel | None
class FilePackagesByFileResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
packages: list[FilePackagesByFileElementModel]
class BranchTreeModel(BaseModel):
branches: List[str]
tasks: List[BranchTreeTaskModel]
branch_commits: List[BranchTreeBranchCommitModel]
branch_points: List[BranchTreeBranchPointModel]
class FilesElementModel(BaseModel):
file_name: str
file_hashname: str
file_class: str
symlink: str
file_mode: str
class RepologyExportBranchBinaryPackageElementModel(BaseModel):
name: str
epoch: int
version: str
release: str
summary: str
archs: List[str]
class FilesResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
files: list[FilesElementModel]
class RepologyExportBranchSourcePackageElementModel(BaseModel):
class FindImagesByPackageElementModel(BaseModel):
pkghash: str
name: str
epoch: int
branch: str
version: str
release: str
url: str
license: str
category: str
summary: str
packager: str
homepage: str
recipe: str
recipe_raw: str
bugzilla: str
CPE: List[str]
binaries: List[RepologyExportBranchBinaryPackageElementModel]
arch: str
edition: str
tag: str
file: str
date: str
class RepologyExportBranchStatElementModel(BaseModel):
arch: str
count: int
class FindImagesByPackageResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
images: list[FindImagesByPackageElementModel]
class RepologyExportModel(BaseModel):
branch: str
date: str
stats: List[RepologyExportBranchStatElementModel]
packages: List[RepologyExportBranchSourcePackageElementModel]
class FindImagesByTaskImageElementModel(BaseModel):
filename: str
edition: str
tag: str
buildtime: str
binpkg_name: str
binpkg_version: str
binpkg_release: str
binpkg_arch: str
binpkg_hash: str
class SitemapPackagesElementModel(BaseModel):
pkghash: str
name: str
buildtime: int
class FindImagesByTaskIterationElementModel(BaseModel):
task_try: int
task_iter: int
class SitemapPackagesExportModel(BaseModel):
branch: str
packages: List[SitemapPackagesElementModel]
class FindImagesByTaskResponseModel(BaseModel):
task_id: int
task_state: str
task_testonly: int
task_repo: str
task_owner: str
task_try: int
task_iter: int
task_message: str
task_changed: str
dependencies: list[int]
subtasks: list[FindImagesByTaskSubtaskElementModel]
iterations: list[FindImagesByTaskIterationElementModel]
class FastFileSearchElementModel(BaseModel):
file_name: str
class FindImagesByTaskSubtaskElementModel(BaseModel):
id: int
type: str
srpm_name: str
srpm_hash: str
pkg_version: str
pkg_release: str
images: list[FindImagesByTaskImageElementModel]
class FastFileSearchModel(BaseModel):
request_args: Dict[str, Any]
length: int
files: List[FastFileSearchElementModel]
class FindSourcePackageInBranchResponseModel(BaseModel):
request_args: dict[str, Any]
source_package: str
class ActiveImagesElementModel(BaseModel):
edition: str
tags: List[str]
class FindTasksElementModel(BaseModel):
task_id: int
task_owner: str
task_state: str
task_repo: str
components: list[str]
class ActiveImagesModel(BaseModel):
request_args: Dict[str, Any]
class FindTasksResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
images: List[ActiveImagesElementModel]
tasks: list[FindTasksElementModel]
class FindImagesByPackageElementModel(BaseModel):
pkghash: str
name: str
class GetRouteFindErratasErrataFindErratasType(StrEnum):
bug = 'bug'
exclusion = 'exclusion'
packages = 'packages'
repository = 'repository'
vuln = 'vuln'
class ImageAllISOElementModel(BaseModel):
branch: str
version: str
release: str
arch: str
edition: str
name: str
tag: str
file: str
date: str
uuid: str
class ImageAllISOResponseModel(BaseModel):
length: int
images: list[ImageAllISOElementModel]
class ImageErrataElementModel(BaseModel):
img_hash: str
img_version: str
img_release: str
pkg_name: str
pkg_arch: str
pkg_hash: str
pkg_version: str
pkg_release: str
summary: str
errata_id: str
eh_type: str
task_id: int
changed: str
branch: str
is_discarded: bool
vulnerabilities: list[VulnerabilitiesElementModel]
class FindImagesByPackageModel(BaseModel):
request_args: Dict[str, Any]
class ImageErrataResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
images: List[FindImagesByPackageElementModel]
class SiteImageCategoryElementModel(BaseModel):
category: str
count: int
erratas: list[ImageErrataElementModel]
class SiteImageCategoriesModel(BaseModel):
request_args: Dict[str, Any]
length: int
categories: List[SiteImageCategoryElementModel]
class ImageErrataType(StrEnum):
packages = 'packages'
repository = 'repository'
bug = 'bug'
vuln = 'vuln'
exclusion = 'exclusion'
class ImageInfoComponentModel(BaseModel):
......@@ -962,7 +784,7 @@ class ImageInfoComponentModel(BaseModel):
packages: int
uuid: str
ruuid: str
kv: Dict[str, Any]
kv: dict[str, Any]
class ImageInfoElementModel(BaseModel):
......@@ -981,107 +803,42 @@ class ImageInfoElementModel(BaseModel):
variant: str
type: str
file: str
url: List[str]
url: list[str]
md5sum: str
gost12sum: str
sha256sum: str
components: List[ImageInfoComponentModel]
class ImageInfoModel(BaseModel):
request_args: Dict[str, Any]
length: int
images: List[ImageInfoElementModel]
class ImagePackagesElementModel(BaseModel):
hash: str
name: str
version: str
release: str
arch: str
summary: str
buildtime: int
changelog_text: str
components: list[ImageInfoComponentModel]
class ImagePackagesModel(BaseModel):
request_args: Dict[str, Any]
class ImageInfoResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
subcategories: List[str]
packages: List[ImagePackagesElementModel]
class ImagePackageSetModel(BaseModel):
length: int
branches: List[str]
class ImageStatusGetElementModel(BaseModel):
model_config = {"populate_by_name": True}
branch: str
edition: str
name: str
show: str
start_date: str
end_date: str
summary_ru: str
summary_en: str
description_ru: str
description_en: str
mailing_list: str
name_bugzilla: str
json_: Dict[str, Any] = Field(default_factory=dict, alias="json")
class ImageStatusGetModel(BaseModel):
images: List[ImageStatusGetElementModel]
images: list[ImageInfoElementModel]
class ImageJSONElementModel(BaseModel):
img_edition: str
img_name: str
img_show: str
img_summary_ru: str | None = None
img_summary_en: str | None = None
img_summary_ru: str = ''
img_summary_en: str = ''
img_start_date: str
img_end_date: str
img_mailing_list: str | None = None
img_name_bugzilla: str | None = None
img_json: Dict[str, Any]
img_mailing_list: str = ''
img_name_bugzilla: str = ''
img_json: dict[str, Any]
class ImageJSONModel(BaseModel):
class ImageJSONRequestModel(BaseModel):
img_branch: str
img_description_ru: str | None = None
img_description_en: str | None = None
images: List[ImageJSONElementModel] | None = None
class ImageTagStatusGetElementModel(BaseModel):
tag: str
show: str
class ImageTagStatusGetModel(BaseModel):
tags: List[ImageTagStatusGetElementModel]
class ImageTagJSONElementModel(BaseModel):
img_tag: str
img_show: str
img_description_ru: str
img_description_en: str
images: list[ImageJSONElementModel]
class ImageTagJSONModel(BaseModel):
tags: List[ImageTagJSONElementModel]
class ImageTagUUIDModel(BaseModel):
request_args: Dict[str, Any]
uuid: str
file: str
type: str
components: Dict[str, Any]
class ImagePackageSetResponseModel(BaseModel):
length: int
branches: list[str]
class ImagePackagesElement1Model(BaseModel):
......@@ -1095,9 +852,47 @@ class ImagePackagesElement1Model(BaseModel):
buildtime: int
class ImagePackagesElement2Model(ImagePackagesElement1Model):
task_id: int
subtask_id: int
class ImagePackagesElement2Model(BaseModel):
pass
class ImagePackagesElementModel(BaseModel):
hash: str
name: str
version: str
release: str
arch: str
summary: str
buildtime: int
changelog_text: str
class ImagePackagesInspectRegularResponseModel(BaseModel):
request_args: dict[str, Any]
input_pakages: int
not_in_branch: int
found_in_tasks: int
not_found_in_db: int
packages_in_tasks: list[ImagePackagesElement2Model]
packages_not_in_db: list[ImagePackagesElement1Model]
class ImagePackagesInspectSPPackageModel(BaseModel):
found_in: str
version_check: str
image: ImagePackagesElement1Model
database: ImagePackagesElement1Model
last_branch: ImagePackagesElement1Model
class ImagePackagesInspectSPResponseModel(BaseModel):
request_args: dict[str, Any]
input_pakages: int
in_branch: int
not_in_branch: int
found_in_tasks: int
not_found_in_db: int
packages: list[ImagePackagesInspectSPPackageModel]
class ImagePackagesJSONElementModel(BaseModel):
......@@ -1111,55 +906,67 @@ class ImagePackagesJSONElementModel(BaseModel):
pkg_buildtime: int
class ImagePackagesJSONModel(BaseModel):
class ImagePackagesJSONRequestModel(BaseModel):
branch: str
packages: List[ImagePackagesJSONElementModel]
packages: list[ImagePackagesJSONElementModel]
class ImagePackagesInspectSPPackageModel(BaseModel):
found_in: str
version_check: str
image: ImagePackagesElement1Model | None
database: ImagePackagesElement1Model | None
last_branch: ImagePackagesElement1Model | None
class ImagePackagesResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
subcategories: list[str]
packages: list[ImagePackagesElementModel]
class ImagePackagesInspectRegularModel(BaseModel):
request_args: Dict[str, Any]
input_pakages: int
not_in_branch: int
found_in_tasks: int
not_found_in_db: int
packages_in_tasks: List[ImagePackagesElement2Model]
packages_not_in_db: List[ImagePackagesElement1Model]
class ImageStatusGetElementModel(BaseModel):
model_config = {"populate_by_name": True}
branch: str
edition: str
name: str
show: str
start_date: str
end_date: str
summary_ru: str
summary_en: str
description_ru: str
description_en: str
mailing_list: str
name_bugzilla: str
json_: dict[str, Any] = Field(alias='json')
class ImagePackagesInspectSPModel(BaseModel):
request_args: Dict[str, Any]
input_pakages: int
in_branch: int
not_in_branch: int
found_in_tasks: int
not_found_in_db: int
packages: List[ImagePackagesInspectSPPackageModel]
class ImageStatusGetResponseModel(BaseModel):
images: list[ImageStatusGetElementModel]
class ImageAllISOElementModel(BaseModel):
branch: str
name: str
class ImageTagJSONElementModel(BaseModel):
img_tag: str
img_show: str
class ImageTagJSONRequestModel(BaseModel):
tags: list[ImageTagJSONElementModel]
class ImageTagStatusGetElementModel(BaseModel):
tag: str
file: str
date: str
uuid: str
show: str
class ImageAllISOModel(BaseModel):
length: int
images: List[ImageAllISOElementModel]
class ImageTagStatusGetResponseModel(BaseModel):
tags: list[ImageTagStatusGetElementModel]
class ImageTagUUIDResponseModel(BaseModel):
request_args: dict[str, Any]
uuid: str
file: str
type: str
components: list[str]
class LastImagePackagesElementModel(BaseModel):
task_id: str
task_id: int
task_changed: str
tplan_action: str
branch: str
......@@ -1178,223 +985,344 @@ class LastImagePackagesElementModel(BaseModel):
chlog_text: str
class LastImagePackagesModel(BaseModel):
request_args: Dict[str, Any]
class LastImagePackagesResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
packages: List[LastImagePackagesElementModel]
packages: list[LastImagePackagesElementModel]
class FindImagesByTaskImageElementModel(BaseModel):
filename: str
edition: str
tag: str
buildtime: str
binpkg_name: str
binpkg_version: str
binpkg_release: str
binpkg_arch: str
binpkg_hash: str
class LicenseInfoResponseModel(BaseModel):
request_args: dict[str, Any]
id: str
name: str
text: str
type: str
header: str
comment: str
urls: list[str]
class FindImagesByTaskIterationElementModel(BaseModel):
task_try: int
task_iter: int
class LicenseTokensElementModel(BaseModel):
token: str
license: str
class FindImagesByTaskSubtaskElementModel(BaseModel):
id: int
type: str
srpm_name: str
srpm_hash: str
pkg_version: str
pkg_release: str
images: List[FindImagesByTaskImageElementModel]
class LicenseTokensResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
tokens: list[LicenseTokensElementModel]
class FindImagesByTaskModel(BaseModel):
task_id: int
task_state: str
task_testonly: int
task_repo: str
task_owner: str
task_try: int
task_iter: int
task_message: str
task_changed: str
dependencies: List[int]
subtasks: List[FindImagesByTaskSubtaskElementModel]
iterations: List[FindImagesByTaskIterationElementModel]
class MaintainerAclChoice(StrEnum):
none = 'none'
by_nick = 'by_nick'
by_nick_leader = 'by_nick_leader'
by_nick_or_group = 'by_nick_or_group'
by_nick_leader_and_group = 'by_nick_leader_and_group'
class CheckImagesInputFilterModel(BaseModel):
editions: List[str]
releases: List[str]
versions: List[str]
archs: List[str]
variants: List[str]
types: List[str]
class MaintainerBranchesElementModel(BaseModel):
branch: str
count: int
class CheckImagesInputModel(BaseModel):
task_id: int
packages_names: List[str]
filters: List[CheckImagesInputFilterModel]
class MaintainerBranchesResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
branches: list[MaintainerBranchesElementModel]
class CheckImagesOutputPackageModel(BaseModel):
status: str
from_subtask: int
srcpkg_name: str
binpkg_name: str
binpkg_arch: str
class MaintainerInfoElementModel(BaseModel):
packager_name: str
packager_nickname: str
count_source_pkg: int
class CheckImagesOutputImageModel(BaseModel):
file: str
branch: str
edition: str
flavor: str
platform: str
class MaintainerInfoResponseModel(BaseModel):
request_args: dict[str, Any]
information: MaintainerInfoElementModel
class MaintainerPackagesElementModel(BaseModel):
name: str
buildtime: int
url: str
summary: str
version: str
release: str
major_version: int
minor_version: int
sub_version: int
arch: str
variant: str
type: str
buildtime: str
packages: List[CheckImagesOutputPackageModel]
class CheckImagesOutputModel(BaseModel):
request_args: Dict[str, Any]
in_images: List[CheckImagesOutputImageModel]
not_in_images: List[CheckImagesOutputPackageModel]
class MaintainerPackagesResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
packages: list[MaintainerPackagesElementModel]
class LicenseInfoModel(BaseModel):
request_args: Dict[str, Any]
id: str
name: str
text: str
type: str
header: str
comment: str
urls: List[str]
class MaintainerScoreElementModel(BaseModel):
nick: str
score: float
base_score: float
updates: int
patches: int
nmu: int
bugfixes: int
bugfixes_with_update: int
in_acl: bool
last_activity: str
recent_commits: int
bonus_applied: bool
class LicenseTokensElementModel(BaseModel):
token: str
license: str
class MaintainerScoreResponseModel(BaseModel):
request_args: dict[str, Any]
package: str
branch: str
primary_maintainer: str | None = None
status: str
maintainers: list[MaintainerScoreElementModel]
class MaintainerScoresBatchElementModel(BaseModel):
package: str
primary_maintainer: str | None
status: str
maintainers: list[MaintainerScoresBatchMaintainerModel]
class MaintainerScoresBatchMaintainerModel(BaseModel):
nick: str
score: float
base_score: float
updates: int
patches: int
nmu: int
bugfixes: int
in_acl: bool
last_activity: str
recent_commits: int
bonus_applied: bool
class LicenseTokensModel(BaseModel):
request_args: Dict[str, Any]
class MaintainerScoresBatchResponseModel(BaseModel):
request_args: dict[str, Any]
branch: str
length: int
tokens: List[LicenseTokensElementModel]
packages: list[MaintainerScoresBatchElementModel]
class BuildDependencySetAmbiguousProvidesPackageModel(BaseModel):
name: str
used: bool
class MessageResponseModel(BaseModel):
message: str
class BuildDependencySetAmbiguousProvidesElementModel(BaseModel):
requires: str
provides_count: int
provides: List[BuildDependencySetAmbiguousProvidesPackageModel]
class NeedsApprovalResponseModel(BaseModel):
length: int
tasks: list[NeedsApprovalTaskElementModel]
class BuildDependencySetAmbiguousProvidesModel(BaseModel):
class NeedsApprovalSubtaskElementModel(BaseModel):
id: int
type: str
package: str
ambiguous_provides: List[BuildDependencySetAmbiguousProvidesElementModel]
userid: str
dir: str
sid: str
pkg_from: str
tag_author: str
tag_id: str
tag_name: str
srpm: str
srpm_name: str
srpm_evr: str
last_changed: str
source_package: TaskInfoPackageModel | None = None
class BuildDependencySetPackageModel(BaseModel):
name: str
class NeedsApprovalTaskElementModel(BaseModel):
model_config = {"populate_by_name": True}
id: int
state: str
runby: str
try_: int = Field(alias='try')
iter: int
failearly: bool
shared: bool
depends: list[int]
testonly: bool
message: str
version: str
release: str
epoch: int
archs: List[str]
requires: List[str]
prev: int
last_changed: str
branch: str
user: str
subtasks: list[NeedsApprovalSubtaskElementModel]
class BuildDependencySetPackagesModel(BaseModel):
package: str
class OvalBranchesResponseModel(BaseModel):
length: int
branches: list[str]
class PackageBuildDependencyModel(BaseModel):
request_args: dict[str, Any]
length: int
depends: List[BuildDependencySetPackageModel]
dependencies: list[altrepo_api__api__dependencies__models__PackageBuildDependencyElementModel]
class BuildDependencySetModel(BaseModel):
request_args: Dict[str, Any]
class PackageBuildDependencyResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
packages: List[BuildDependencySetPackagesModel]
ambiguous_dependencies: List[BuildDependencySetAmbiguousProvidesModel]
dependencies: list[altrepo_api__api__package__models__PackageBuildDependencyElementModel]
class TaskBuildDependencySetPackageModel(BaseModel):
class PackageByFileNameElementModel(BaseModel):
name: str
version: str
release: str
epoch: int
archs: List[str]
disttag: str
sha1: str
branch: str
arch: str
files: list[str]
class TaskBuildDependencySetPackagesModel(BaseModel):
package: str
class PackageByFileNameResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
depends: List[TaskBuildDependencySetPackageModel]
packages: list[PackageByFileNameElementModel]
not_found: list[str] | None = None
class TaskBuildDependencySetModel(BaseModel):
id: int
request_args: Dict[str, Any]
class PackageDependsModel(BaseModel):
requires: DependencyPackageDependsElementModel
provides: DependencyPackageDependsElementModel
class PackageFilesElementModel(BaseModel):
file_name: str
file_size: str
file_class: str
symlink: str
file_mtime: str
file_mode: str
class PackageFilesResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
packages: List[TaskBuildDependencySetPackagesModel]
ambiguous_dependencies: List[BuildDependencySetAmbiguousProvidesModel]
files: list[PackageFilesElementModel]
class PackageFindPackagesetElementModel(BaseModel):
branch: str
pkgset_datetime: str
sourcepkgname: str
packages: List[str]
packages: list[str]
version: str
release: str
disttag: str
packager_email: str
buildtime: str
archs: List[str]
archs: list[str]
class PackageFindPackagesetModel(BaseModel):
request_args: Dict[str, Any]
class PackageFindPackagesetResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
packages: List[PackageFindPackagesetElementModel]
packages: list[PackageFindPackagesetElementModel]
class MaintainerScoreElementModel(BaseModel):
nick: str
score: float
base_score: float
updates: int
patches: int
nmu: int
bugfixes: int
bugfixes_with_update: int
in_acl: bool
last_activity: str
recent_commits: int
bonus_applied: bool
class PackageInfoChangelogElementModel(BaseModel):
date: str
name: str
evr: str
message: str
class MaintainerScoreModel(BaseModel):
request_args: Dict[str, Any]
package: str
branch: str
primary_maintainer: str | None = None
status: str
maintainers: List[MaintainerScoreElementModel]
class PackageInfoDependenciesModel(BaseModel):
require: list[str] = Field(default_factory=list)
provide: list[str] = Field(default_factory=list)
conflict: list[str] = Field(default_factory=list)
obsolete: list[str] = Field(default_factory=list)
class PackageInfoPackageModel(BaseModel):
name: str
version: str
release: str
sha1: str
packager: str
packager_email: str
arch: str
epoch: int
disttag: str
sourcepackage: int
filename: str
sourcerpm: str
serial: int | None = None
buildtime: int | None = None
buildhost: str | None = None
size: int | None = None
archivesize: int | None = None
filesize: int | None = None
rpmversion: str | None = None
cookie: str | None = None
license: str | None = None
group: str | None = None
url: str | None = None
summary: str | None = None
description: str | None = None
distribution: str | None = None
vendor: str | None = None
os: str | None = None
gif: str | None = None
xpm: str | None = None
icon: str | None = None
prein: str | None = None
postin: str | None = None
preun: str | None = None
postun: str | None = None
preinprog: list[str] | None = None
postinprog: list[str] | None = None
preunprog: list[str] | None = None
postunprog: list[str] | None = None
buildarchs: list[str] | None = None
verifyscript: str | None = None
verifyscriptprog: list[str] | None = None
prefixes: list[str] | None = None
instprefixes: list[str] | None = None
optflags: str | None = None
disturl: str | None = None
payloadformat: str | None = None
payloadcompressor: str | None = None
payloadflags: str | None = None
platform: str | None = None
changelog: list[PackageInfoChangelogElementModel] | None = None
files: list[str] | None = None
depends: PackageInfoDependenciesModel | dict[str, list[str]] | None = None
class PackageInfoResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
packages: list[PackageInfoPackageModel]
class PackageMisconflictBySrcElementModel(BaseModel):
input_package: str
input_archs: list[str]
conflict_package: str
version: str
release: str
epoch: int
archs: list[str]
files_with_conflict: list[str]
explicit: bool = False
class PackageMisconflictBySrcResponseModel(BaseModel):
request_args: Any
length: int
conflicts: list[PackageMisconflictBySrcElementModel]
class PackageMisconflictPackageModel(BaseModel):
......@@ -1403,70 +1331,71 @@ class PackageMisconflictPackageModel(BaseModel):
version: str
release: str
epoch: int
archs: List[str]
files_with_conflict: List[str]
archs: list[str]
files_with_conflict: list[str]
class PackageMisconflictPackagesModel(BaseModel):
request_args: Dict[str, Any]
class PackageMisconflictPackagesResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
conflicts: List[PackageMisconflictPackageModel]
conflicts: list[PackageMisconflictPackageModel]
class PackageFilesElementModel(BaseModel):
file_name: str
file_size: str
file_class: str
symlink: str
file_mtime: str
file_mode: str
class PackageNVRByHashResponseModel(BaseModel):
request_args: Any
hash: str
name: str
version: str
release: str
is_source: bool
class PackageNameFromRepologyResponseModel(BaseModel):
request_args: Any
name: str
repo: str
class PackageFilesModel(BaseModel):
request_args: Dict[str, Any]
class PackageSetActivePackageSetsResponseModel(BaseModel):
length: int
files: List[PackageFilesElementModel]
packagesets: list[str]
class RepocopJsonGetModel(BaseModel):
pkg_name: str
pkg_version: str
pkg_release: str
pkg_arch: str
class PackageSetStatusGetElementModel(BaseModel):
branch: str
test_name: str
test_status: str
test_message: str
test_date: str
pkgset_name_bugzilla: str
start_date: str
end_date: str
show: int
description_ru: str
description_en: str
url_mailing_list: str
mirrors_json: dict[str, Any] | list[dict[str, Any]]
has_images: int
class RepocopJsonGetListModel(BaseModel):
request_args: Dict[str, Any]
length: int
packages: List[RepocopJsonGetModel]
class PackageSetStatusGetResponseModel(BaseModel):
branches: list[PackageSetStatusGetElementModel]
class RepocopJsonPostModel(BaseModel):
pkg_name: str
pkg_version: str
pkg_release: str
pkg_arch: str
class PackageSetStatusPostElementModel(BaseModel):
pkgset_name: str
rc_srcpkg_name: str
rc_srcpkg_version: str
rc_srcpkg_release: str
rc_test_name: str
rc_test_status: str
rc_test_message: str
rc_test_date: str
rs_pkgset_name_bugzilla: str
rs_start_date: str
rs_end_date: str
rs_show: int
rs_description_ru: str
rs_description_en: str
rs_mailing_list: str
rs_mirrors_json: list[dict[str, Any]] = []
class RepocopJsonPostListModel(BaseModel):
packages: List[RepocopJsonPostModel]
class PackageSetStatusPostRequestModel(BaseModel):
branches: list[PackageSetStatusPostElementModel]
class PackageSpecfileModel(BaseModel):
request_args: Dict[str, Any]
class PackageSpecfileResponseModel(BaseModel):
request_args: dict[str, Any]
pkg_hash: str
pkg_name: str
pkg_version: str
......@@ -1476,223 +1405,262 @@ class PackageSpecfileModel(BaseModel):
specfile_content: str
class UnpackagedDirsElementModel(BaseModel):
package: str
directory: str
class PackagesByFileNamesJsonRequestModel(BaseModel):
files: list[str]
branch: str
arch: str | None = None
class PackagesByUuidElementModel(BaseModel):
hash: str
name: str
version: str
release: str
epoch: int
packager: str
email: str
archs: List[str]
arch: str
sourcerpm: str
summary: str
buildtime: int
changelog_text: str
class UnpackagedDirsModel(BaseModel):
request_args: Dict[str, Any]
class PackagesByUuidResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
packages: List[UnpackagedDirsElementModel]
packages: list[PackagesByUuidElementModel]
class PackagesetComparePackageModel(BaseModel):
name: str
version: str
release: str
class PackagesElementModel(BaseModel):
pkghash: str
pkg_name: str
pkg_version: str
pkg_release: str
class PackagesetCompareElementModel(BaseModel):
pkgset1: str
pkgset2: str
package1: PackagesetComparePackageModel | None
package2: PackagesetComparePackageModel | None
package1: PackagesetComparePackageModel
package2: PackagesetComparePackageModel
class PackagesetComparePackageModel(BaseModel):
name: str
version: str
release: str
class PackagesetCompareModel(BaseModel):
request_args: Dict[str, Any]
class PackagesetCompareResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
packages: List[PackagesetCompareElementModel]
packages: list[PackagesetCompareElementModel]
class MaintainerScoresBatchMaintainerModel(BaseModel):
nick: str
score: float
base_score: float
updates: int
patches: int
nmu: int
bugfixes: int
in_acl: bool
last_activity: str
recent_commits: int
bonus_applied: bool
class PackagesetPackagesElementModel(BaseModel):
hash: str
name: str
version: str
release: str
summary: str
url: str
license: str
category: str
maintainers: list[str]
acl_list: list[str]
archs: list[str]
class MaintainerScoresBatchElementModel(BaseModel):
package: str
primary_maintainer: str | None = None
status: str
maintainers: List[MaintainerScoresBatchMaintainerModel]
class PackagesetPackagesExportElementModel(BaseModel):
name: str
epoch: int
version: str
release: str
arch: str
disttag: str
buildtime: int
source: str
class PackagesetPackagesExportResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
packages: list[PackagesetPackagesExportElementModel]
class PackagesetPackagesResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
packages: list[PackagesetPackagesElementModel]
done_tasks: list[int]
class MaintainerScoresBatchModel(BaseModel):
request_args: Dict[str, Any]
class RepocopByMaintainerElementModel(BaseModel):
pkg_name: str
pkg_version: str
pkg_release: str
pkg_arch: str
srcpkg_name: str
branch: str
length: int
packages: List[MaintainerScoresBatchElementModel]
test_name: str
test_status: str
test_message: str
test_date: str
class PackagesByUuidElementModel(BaseModel):
hash: str
name: str
version: str
release: str
arch: str
sourcerpm: str
summary: str
buildtime: int
changelog_text: str
class RepocopByMaintainerResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
packages: list[RepocopByMaintainerElementModel]
class PackagesByUuidModel(BaseModel):
request_args: Dict[str, Any]
class RepocopJsonGetListResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
packages: List[PackagesByUuidElementModel]
packages: list[RepocopJsonGetModel]
class PackageSetStatusGetElementModel(BaseModel):
class RepocopJsonGetModel(BaseModel):
pkg_name: str
pkg_version: str
pkg_release: str
pkg_arch: str
branch: str
pkgset_name_bugzilla: str
start_date: str
end_date: str
show: int
description_ru: str
description_en: str
url_mailing_list: str
mirrors_json: List[Dict[str, Any]] | Dict[str, Any] | None = None
has_images: int
test_name: str
test_status: str
test_message: str
test_date: str
class PackageSetStatusGetModel(BaseModel):
branches: List[PackageSetStatusGetElementModel]
class RepocopJsonPostListRequestModel(BaseModel):
packages: list[RepocopJsonPostModel]
class PackageSetStatusPostElementModel(BaseModel):
class RepocopJsonPostModel(BaseModel):
pkg_name: str
pkg_version: str
pkg_release: str
pkg_arch: str
pkgset_name: str
rs_pkgset_name_bugzilla: str
rs_start_date: str
rs_end_date: str
rs_show: int
rs_description_ru: str
rs_description_en: str
rs_mailing_list: str
rs_mirrors_json: List[Dict[str, Any]] | None = None
rc_srcpkg_name: str
rc_srcpkg_version: str
rc_srcpkg_release: str
rc_test_name: str
rc_test_status: str
rc_test_message: str
rc_test_date: str
class PackageSetStatusPostModel(BaseModel):
branches: List[PackageSetStatusPostElementModel]
class RepologyExportBranchBinaryPackageElementModel(BaseModel):
name: str
epoch: int
version: str
release: str
summary: str
archs: list[str]
class PackagesetPackagesElementModel(BaseModel):
hash: str
class RepologyExportBranchSourcePackageElementModel(BaseModel):
name: str
epoch: int
version: str
release: str
summary: str
url: str
license: str
category: str
maintainers: List[str]
acl_list: List[str]
archs: List[str]
class PackagesetPackagesModel(BaseModel):
request_args: Dict[str, Any]
length: int
packages: List[PackagesetPackagesElementModel]
done_tasks: List[int]
summary: str
packager: str
homepage: str
recipe: str
recipe_raw: str
bugzilla: str
CPE: list[str]
binaries: list[RepologyExportBranchBinaryPackageElementModel]
class SiteAllArchsElementModel(BaseModel):
class RepologyExportBranchStatElementModel(BaseModel):
arch: str
count: int
class SiteAllArchsModel(BaseModel):
length: int
archs: List[SiteAllArchsElementModel]
class RepologyExportResponseModel(BaseModel):
branch: str
date: str
stats: list[RepologyExportBranchStatElementModel]
packages: list[RepologyExportBranchSourcePackageElementModel]
class SiteAllPackagasetsElementModel(BaseModel):
class RepositoryStatisticsBranchesModel(BaseModel):
branch: str
date_update: str
packages_count: list[RepositoryStatisticsPackageCountsModel]
class RepositoryStatisticsPackageCountsModel(BaseModel):
arch: str
component: str
count: int
size: int
size_hr: str
uuid: str
class SiteAllPackagasetsModel(BaseModel):
class RepositoryStatisticsResponseModel(BaseModel):
length: int
branches: List[SiteAllPackagasetsElementModel]
branches: list[RepositoryStatisticsBranchesModel]
class SiteAllPackagesetsSummaryCountsModel(BaseModel):
class SiteAllArchsElementModel(BaseModel):
arch: str
count: int
class SiteAllPackagesetsSummaryBranchesModel(BaseModel):
branch: str
packages_count: List[SiteAllPackagesetsSummaryCountsModel]
class SiteAllPackagesetsSummaryModel(BaseModel):
class SiteAllArchsResponseModel(BaseModel):
length: int
branches: List[SiteAllPackagesetsSummaryBranchesModel]
archs: list[SiteAllArchsElementModel]
class SiteBeehiveByMaintainerElementModel(BaseModel):
class SiteAllPackagesetsElementModel(BaseModel):
branch: str
name: str
version: str
release: str
arch: str
updated: str
ftbfs_since: str
build_time: float
url: str
count: int
class SiteBeehiveByMaintainerModel(BaseModel):
request_args: Dict[str, Any]
class SiteAllPackagesetsResponseModel(BaseModel):
length: int
beehive: List[SiteBeehiveByMaintainerElementModel]
branches: list[SiteAllPackagesetsElementModel]
class SitePackageVersionsElementModel(BaseModel):
class SiteAllPackagesetsSummaryBranchesModel(BaseModel):
branch: str
version: str
release: str
pkghash: str | None = None
packages_count: list[SiteAllPackagesetsSummaryCountsModel]
class SitePackagesetPackageVersionsElementModel(BaseModel):
branch: str
version: str
release: str
pkghash: str
deleted: bool
class SiteAllPackagesetsSummaryCountsModel(BaseModel):
arch: str
count: int
class SitePackagesBinaryListElementModel(BaseModel):
class SiteAllPackagesetsSummaryResponseModel(BaseModel):
length: int
branches: list[SiteAllPackagesetsSummaryBranchesModel]
class SiteBeehiveByMaintainerElementModel(BaseModel):
hash: str
branch: str
name: str
version: str
release: str
arch: str
build_time: float
updated: str
ftbfs_since: str
epoch: int
url: str
class SitePackagesBinaryListModel(BaseModel):
request_args: Dict[str, Any]
class SiteBeehiveByMaintainerResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
packages: List[SitePackagesBinaryListElementModel]
versions: List[SitePackageVersionsElementModel]
beehive: list[SiteBeehiveByMaintainerElementModel]
class SiteBinPackageScriptsElementModel(BaseModel):
......@@ -1704,15 +1672,39 @@ class SiteBinPackageScriptsElementModel(BaseModel):
posttrans: str
class SiteBinPackageScriptsModel(BaseModel):
request_args: Dict[str, Any]
class SiteBinPackageScriptsResponseModel(BaseModel):
request_args: Any
pkg_name: str
pkg_arch: str
length: int
scripts: List[SiteBinPackageScriptsElementModel]
scripts: list[SiteBinPackageScriptsElementModel]
class SiteBriefPackageInfoResponseModel(BaseModel):
name: str
version: str
release: str
arch: str
summary: str
type: str
class SiteChangelogElementModel(BaseModel):
date: str
name: str
nick: str
evr: str
message: str
class SiteChangelogResponseModel(BaseModel):
pkghash: str
request_args: Any
length: int
changelog: list[SiteChangelogElementModel]
class SiteDeletedPackageModel(BaseModel):
class SiteDeletedPackageResponseModel(BaseModel):
branch: str
package: str
version: str
......@@ -1729,13 +1721,13 @@ class SiteDeletedPackageModel(BaseModel):
class SiteFastPackagesSearchElementModel(BaseModel):
name: str
sourcepackage: str
branches: List[str]
branches: list[str]
class SiteFastPackagesSearchModel(BaseModel):
request_args: Dict[str, Any]
class SiteFastPackagesSearchResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
packages: List[SiteFastPackagesSearchElementModel]
packages: list[SiteFastPackagesSearchElementModel]
class SiteFingPackagesPackageModel(BaseModel):
......@@ -1744,20 +1736,52 @@ class SiteFingPackagesPackageModel(BaseModel):
url: str
summary: str
category: str
versions: List[SitePackagesetPackageVersionsElementModel]
versions: list[SitePackageVersionsElementModel]
by_binary: bool
class SiteFingPackagesModel(BaseModel):
request_args: Dict[str, Any]
class SiteFingPackagesResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
packages: List[SiteFingPackagesPackageModel]
packages: list[SiteFingPackagesPackageModel]
class SiteLastPackagesElementModel(BaseModel):
subtask_id: int
subtask_userid: str
subtask_type: str
class SiteImageCategoriesResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
categories: list[SiteImageCategoryElementModel]
class SiteImageCategoryElementModel(BaseModel):
category: str
count: int
class SiteImagePackageVersionsElementModel(BaseModel):
tag: str
uuid: str
version_major: int
version_minor: int
version_sub: int
img_arch: str
platform: str
variant: str
flavor: str
type: str
hash: str
name: str
version: str
release: str
arch: str
class SiteImagePackageVersionsResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
versions: list[SiteImagePackageVersionsElementModel]
class SiteLastBranchPackagesPackageModel(BaseModel):
hash: str
name: str
version: str
......@@ -1770,23 +1794,17 @@ class SiteLastPackagesElementModel(BaseModel):
changelog_text: str
class SiteLastPackagesPackageModel(BaseModel):
task_id: int
task_owner: str
task_changed: str
task_message: str
packages: List[SiteLastPackagesElementModel]
class SiteLastPackagesModel(BaseModel):
request_args: Dict[str, Any]
class SiteLastBranchPackagesResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
tasks: List[SiteLastPackagesPackageModel]
last_branch_task: int
packages: list[SiteLastBranchPackagesPackageModel]
last_branch_date: str
class SiteLastBranchPackagesPackageModel(BaseModel):
class SiteLastPackagesElementModel(BaseModel):
subtask_id: int
subtask_userid: str
subtask_type: str
hash: str
name: str
version: str
......@@ -1799,10 +1817,19 @@ class SiteLastBranchPackagesPackageModel(BaseModel):
changelog_text: str
class SiteLastBranchPackagesModel(BaseModel):
request_args: Dict[str, Any]
class SiteLastPackagesPackageModel(BaseModel):
task_id: int
task_owner: str
task_changed: str
task_message: str
packages: list[SiteLastPackagesElementModel]
class SiteLastPackagesResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
packages: List[SiteLastBranchPackagesPackageModel]
tasks: list[SiteLastPackagesPackageModel]
last_branch_task: int
last_branch_date: str
......@@ -1817,34 +1844,36 @@ class SiteLastPackagesWithCVEFixesElementModel(BaseModel):
changelog_text: str
class SiteLastPackagesWithCVEFixesModel(BaseModel):
request_args: Dict[str, Any]
class SiteLastPackagesWithCVEFixesResponseModel(BaseModel):
request_args: Any
length: int
packages: List[SiteLastPackagesWithCVEFixesElementModel]
packages: list[SiteLastPackagesWithCVEFixesElementModel]
class MaintainerBranchesModel(BaseModel):
request_args: Dict[str, Any]
length: int
branches: List[SiteAllPackagasetsElementModel]
class SitePackageBeehiveElementModel(BaseModel):
arch: str
status: str
updated: str
build_time: float
ftbfs_since: str
url: str
class MaintainerPackagesElementModel(BaseModel):
class SitePackageDependenciesElementModel(BaseModel):
name: str
buildtime: int
url: str
summary: str
version: str
release: str
type: str
flag: int
flag_decoded: list[str]
class MaintainerPackagesModel(BaseModel):
request_args: Dict[str, Any]
length: int
packages: List[MaintainerPackagesElementModel]
class SitePackageInfoArchsModel(BaseModel):
name: str
archs: list[str]
pkghash: list[str]
class SiteChangelogElementModel(BaseModel):
class SitePackageInfoChangelogElementModel(BaseModel):
date: str
name: str
nick: str
......@@ -1852,112 +1881,115 @@ class SiteChangelogElementModel(BaseModel):
message: str
class SiteChangelogModel(BaseModel):
class SitePackageInfoResponseModel(BaseModel):
pkghash: str
request_args: Dict[str, Any]
length: int
changelog: List[SiteChangelogElementModel]
class SitePackagesDownloadsPackageModel(BaseModel):
request_args: Any
name: str
url: str
md5: str
size: str
class SitePackagesDownloadsElementModel(BaseModel):
version: str
release: str
arch: str
packages: List[SitePackagesDownloadsPackageModel]
buildtime: int
task: int
task_date: str | None
gear: str
license: str
category: str
url: str
vcs: str
summary: str
description: str
packager: str
packager_nickname: str
acl: list[str]
maintainers: list[str]
package_archs: list[SitePackageInfoArchsModel]
tasks: list[SitePackageTasksElementModel]
changelog: list[SitePackageInfoChangelogElementModel]
new_version: list[SitePackageNewVersionModel]
beehive: list[SitePackageBeehiveElementModel]
dependencies: list[SitePackageDependenciesElementModel]
license_tokens: list[SitePackageLicenseTokensElementModel]
class SitePackagesDownloadsModel(BaseModel):
pkghash: str
request_args: Dict[str, Any]
downloads: List[SitePackagesDownloadsElementModel]
class SitePackageLicenseTokensElementModel(BaseModel):
token: str
license: str
class SiteBriefPackageInfoModel(BaseModel):
name: str
class SitePackageNewVersionModel(BaseModel):
task_id: int
date: str
pkghash: str
version: str
release: str
arch: str
summary: str
class SitePackageTasksElementModel(BaseModel):
type: str
id: int
date: str
class BinPackageLogElementModel(BaseModel):
pkg_hash: str
task_id: int
subtask_id: int
subtask_arch: str
buildlog_hash: str
link: str
class SitePackageVersionsElementModel(BaseModel):
branch: str
version: str
release: str
pkghash: str | None = None
class PackageMisconflictBySrcElementModel(BaseModel):
input_package: str
input_archs: List[str]
conflict_package: str
class SitePackagesBinaryListElementModel(BaseModel):
hash: str
name: str
version: str
release: str
epoch: int
archs: List[str]
files_with_conflict: List[str]
explicit: bool
arch: str
class PackageMisconflictBySrcModel(BaseModel):
request_args: Dict[str, Any]
class SitePackagesBinaryListResponseModel(BaseModel):
request_args: Any
length: int
conflicts: List[PackageMisconflictBySrcElementModel]
packages: list[SitePackagesBinaryListElementModel]
versions: list[SitePackageVersionsElementModel]
class PackageNameFromRepologyModel(BaseModel):
request_args: Dict[str, Any]
name: str
repo: str
class SitePackagesDownloadsElementModel(BaseModel):
arch: str
packages: list[SitePackagesDownloadsPackageModel]
class PackageNVRByHashModel(BaseModel):
request_args: Dict[str, Any]
hash: str
class SitePackagesDownloadsPackageModel(BaseModel):
name: str
version: str
release: str
is_source: bool
url: str
md5: str
size: str
class SiteSourcePackagesVersionsModel(BaseModel):
request_args: Dict[str, Any]
versions: List[SitePackageVersionsElementModel]
class SitePackagesDownloadsResponseModel(BaseModel):
pkghash: str
request_args: Any
downloads: list[SitePackagesDownloadsElementModel]
class SiteImagePackageVersionsElementModel(BaseModel):
tag: str
uuid: str
version_major: int
version_minor: int
version_sub: int
img_arch: str
platform: str
variant: str
flavor: str
type: str
class SitePackagesElementModel(BaseModel):
hash: str
name: str
version: str
release: str
arch: str
summary: str
buildtime: int
category: str
maintainer: str
changelog: str
class SiteImagePackageVersionsModel(BaseModel):
request_args: Dict[str, Any]
class SitePackagesResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
versions: List[SiteImagePackageVersionsElementModel]
subcategories: list[str]
packages: list[SitePackagesElementModel]
class SItePackagesVersionsFromTasksElementModel(BaseModel):
class SitePackagesVersionsFromTasksElementModel(BaseModel):
branch: str
task: int
hash: str
......@@ -1968,21 +2000,16 @@ class SItePackagesVersionsFromTasksElementModel(BaseModel):
release: str
class SItePackagesVersionsFromTasksModel(BaseModel):
request_args: Dict[str, Any]
class SitePackagesVersionsFromTasksResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
versions: List[SItePackagesVersionsFromTasksElementModel]
versions: list[SitePackagesVersionsFromTasksElementModel]
class SitePackagesetsByHashModel(BaseModel):
pkghash: str
class SitePackagesetCategoriesResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
branches: List[str]
class SitePackagesetPackageHashByNameVersionRelease(BaseModel):
request_args: Dict[str, Any]
pkghash: str
categories: list[SitePackagesetCategoryElementModel]
class SitePackagesetCategoryElementModel(BaseModel):
......@@ -1990,10 +2017,16 @@ class SitePackagesetCategoryElementModel(BaseModel):
count: int
class SitePackagesetCategoriesModel(BaseModel):
request_args: Dict[str, Any]
length: int
categories: List[SitePackagesetCategoryElementModel]
class SitePackagesetPackageHashByNameVersionReleaseResponseModel(BaseModel):
request_args: dict[str, Any]
pkghash: str
class SitePackagesetPackageHashResponseModel(BaseModel):
request_args: dict[str, Any]
pkghash: str
version: str
release: str
class SitePackagesetStatusElementModel(BaseModel):
......@@ -2006,51 +2039,21 @@ class SitePackagesetStatusElementModel(BaseModel):
has_images: int
class SitePackagesetsSummaryStatusModel(BaseModel):
class SitePackagesetsByHashResponseModel(BaseModel):
pkghash: str
length: int
branches: List[SiteAllPackagesetsSummaryBranchesModel]
status: List[SitePackagesetStatusElementModel]
class RepocopByMaintainerElementModel(BaseModel):
pkg_name: str
pkg_version: str
pkg_release: str
pkg_arch: str
srcpkg_name: str
branch: str
test_name: str
test_status: str
test_message: str
test_date: str
branches: list[str]
class RepocopByMaintainerModel(BaseModel):
request_args: Dict[str, Any]
class SitePackagesetsSummaryStatusResponseModel(BaseModel):
length: int
packages: List[RepocopByMaintainerElementModel]
class SitePackagesElementModel(BaseModel):
hash: str
name: str
version: str
release: str
summary: str
buildtime: int
category: str
maintainer: str
changelog: str
task_id: int | None = None
subtask_id: int | None = None
task_owner: str | None = None
branches: list[SiteAllPackagesetsSummaryBranchesModel]
status: list[SitePackagesetStatusElementModel]
class SitePackagesModel(BaseModel):
request_args: Dict[str, Any]
length: int
subcategories: List[str]
packages: List[SitePackagesElementModel]
class SiteSourcePackagesVersionsResponseModel(BaseModel):
request_args: Any
versions: list[SitePackageVersionsElementModel]
class SiteTaskByNamePackageModel(BaseModel):
......@@ -2061,57 +2064,194 @@ class SiteTaskByNamePackageModel(BaseModel):
link: str
class SiteTaskByNameResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
tasks: list[SiteTaskByNameTaskModel]
class SiteTaskByNameTaskModel(BaseModel):
id: int
state: str
branch: str
owner: str
changed: str
packages: List[SiteTaskByNamePackageModel]
packages: list[SiteTaskByNamePackageModel]
class SiteTasksHistoryResponseModel(BaseModel):
branches: list[str]
tasks: list[TasksHistoryTaskModel]
branch_commits: list[TasksHistoryBranchCommitModel]
class SiteWatchByMaintainerElementModel(BaseModel):
pkg_name: str
old_version: str
new_version: str
url: str
date_update: str
repology_name: str
class SiteTaskByNameModel(BaseModel):
request_args: Dict[str, Any]
class SiteWatchByMaintainerResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
tasks: List[SiteTaskByNameTaskModel]
packages: list[SiteWatchByMaintainerElementModel]
class TasksHistoryBranchCommitModel(BaseModel):
class SitemapPackagesElementModel(BaseModel):
pkghash: str
name: str
date: str
task: int
buildtime: int
class TasksHistoryTaskModel(BaseModel):
id: int
prev: int
class SitemapPackagesExportResponseModel(BaseModel):
branch: str
date: str
packages: list[SitemapPackagesElementModel]
class SubTaskArchitectureModel(BaseModel):
stage_status: str
arch: str
class SubTaskInfoElementModel(BaseModel):
subtask_id: int
subtask_type: str
subtask_srpm: str
subtask_srpm_name: str
subtask_srpm_evr: str
subtask_dir: str
subtask_tag_id: str
subtask_tag_name: str
subtask_tag_author: str
subtask_package: str
subtask_pkg_from: str
subtask_changed: str
type: str
src_pkg_name: str
src_pkg_hash: str
archs: list[SubTaskArchitectureModel]
approval: list[TaskApprovalElementModel]
class SubTasksElementModel(BaseModel):
subtask_id: int
subtask_type: str
subtask_srpm: str
subtask_srpm_name: str
subtask_srpm_evr: str
subtask_dir: str
subtask_tag_id: str
subtask_tag_name: str
subtask_tag_author: str
subtask_package: str
subtask_pkg_from: str
subtask_changed: str
type: str
archs: list[SubTaskArchitectureModel]
class TaskApprovalElementModel(BaseModel):
type: str
nickname: str
message: str
class SiteTasksHistoryModel(BaseModel):
branches: List[str]
tasks: List[TasksHistoryTaskModel]
branch_commits: List[TasksHistoryBranchCommitModel]
class TaskBuildDependencyElementModel(BaseModel):
depth: int
name: str
version: str
release: str
epoch: int
serial: int
sourcerpm: str
branch: str
buildtime: str
archs: list[str]
cycle: list[str]
requires: list[str]
acl: list[str]
class AllTasksBranchesModel(BaseModel):
class TaskBuildDependencyResponseModel(BaseModel):
id: int
request_args: dict[str, Any]
length: int
branches: List[str]
dependencies: list[TaskBuildDependencyElementModel]
class FindTasksElementModel(BaseModel):
class TaskDiffArchsModel(BaseModel):
arch: str
packages: list[TaskDiffPackagesModel]
class TaskDiffDependenciesModel(BaseModel):
model_config = {"populate_by_name": True}
type: str
del_: list[str] = Field(alias='del')
add: list[str]
class TaskDiffPackagesModel(BaseModel):
model_config = {"populate_by_name": True}
package: str
del_: list[str] = Field(alias='del')
add: list[str]
dependencies: list[TaskDiffDependenciesModel]
class TaskDiffResponseModel(BaseModel):
task_id: int
task_owner: str
task_state: str
task_repo: str
components: List[str]
task_have_plan: bool
task_diff: list[TaskDiffArchsModel]
class TaskFindPackagesetElementModel(BaseModel):
branch: str
pkgset_datetime: str
sourcepkgname: str
packages: list[str]
version: str
release: str
disttag: str
packager_email: str
buildtime: str
archs: list[str]
class TaskFindPackagesetResponseModel(BaseModel):
id: int
request_args: dict[str, Any]
task_packages: list[str]
length: int
packages: list[TaskFindPackagesetElementModel]
class TaskHistoryElementModel(BaseModel):
task_id: int
task_commited: str
branch_commited: str
class FindTasksModel(BaseModel):
request_args: Dict[str, Any]
class TaskHistoryResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
tasks: List[FindTasksElementModel]
tasks: list[TaskHistoryElementModel]
class TaskInfoApprovalsModel(BaseModel):
date: str
type: str
name: str
message: str
class TaskInfoArchsModel(BaseModel):
last_changed: str
arch: str
status: str
class TaskInfoPackageModel(BaseModel):
......@@ -2121,17 +2261,37 @@ class TaskInfoPackageModel(BaseModel):
filename: str
class TaskInfoApprovalsModel(BaseModel):
date: str
type: str
name: str
class TaskInfoPlan2Model(BaseModel):
model_config = {"populate_by_name": True}
add: TaskInfoPlanModel
del_: TaskInfoPlanModel = Field(alias='del')
class TaskInfoPlanModel(BaseModel):
src: list[TaskInfoPackageModel]
bin: list[TaskInfoPackageModel]
class TaskInfoResponseModel(BaseModel):
model_config = {"populate_by_name": True}
id: int
prev: int
try_: int = Field(alias='try')
iter: int
rebuilds: list[str]
state: str
branch: str
user: str
runby: str
testonly: int
failearly: int
shared: int
depends: list[int]
message: str
class TaskInfoArchsModel(BaseModel):
version: str
last_changed: str
arch: str
status: str
subtasks: list[TaskInfoSubtaskModel]
plan: TaskInfoPlan2Model
class TaskInfoSubtaskModel(BaseModel):
......@@ -2149,44 +2309,31 @@ class TaskInfoSubtaskModel(BaseModel):
srpm_name: str
srpm_evr: str
pkg_from: str
source_package: TaskInfoPackageModel | None
approvals: List[TaskInfoApprovalsModel]
archs: List[TaskInfoArchsModel]
class TaskInfoPlanModel(BaseModel):
src: List[TaskInfoPackageModel]
bin: List[TaskInfoPackageModel]
source_package: TaskInfoPackageModel | None = None
approvals: list[TaskInfoApprovalsModel]
archs: list[TaskInfoArchsModel]
class TaskInfoPlan2Model(BaseModel):
model_config = {"populate_by_name": True}
class TaskIterationsElementModel(BaseModel):
task_try: int
task_iter: int
add: TaskInfoPlanModel | None
del_: TaskInfoPlanModel | None = Field(None, alias="del")
class TaskMisconflictPackageModel(BaseModel):
input_package: str
conflict_package: str
version: str
release: str
epoch: int
archs: list[str]
files_with_conflict: list[str]
class TaskInfoModel(BaseModel):
model_config = {"populate_by_name": True}
class TaskMisconflictPackagesResponseModel(BaseModel):
id: int
prev: int
try_: int | None = Field(None, alias="try")
iter: int
rebuilds: List[str]
state: str
branch: str
user: str
runby: str
testonly: int
failearly: int
shared: int
depends: List[int]
message: str
version: str
last_changed: str
subtasks: List[TaskInfoSubtaskModel]
plan: TaskInfoPlan2Model | None
request_args: dict[str, Any]
length: int
conflicts: list[TaskMisconflictPackageModel]
class TaskPackagesPackageElementModel(BaseModel):
......@@ -2199,224 +2346,200 @@ class TaskPackagesPackageElementModel(BaseModel):
arch: str
class TaskPackagesSubtaskElementModel(BaseModel):
subtask: int
source: TaskPackagesPackageElementModel | None
binaries: List[TaskPackagesPackageElementModel]
class TaskPackagesModel(BaseModel):
class TaskPackagesResponseModel(BaseModel):
model_config = {"populate_by_name": True}
id: int
repo: str
owner: str
state: str
testonly: int
try_: int | None = Field(None, alias="try")
try_: int = Field(alias='try')
iter: int
message: str
dependencies: List[int]
dependencies: list[int]
length: int
subtasks: List[TaskPackagesSubtaskElementModel]
arepo: List[TaskPackagesPackageElementModel]
subtasks: list[TaskPackagesSubtaskElementModel]
arepo: list[TaskPackagesPackageElementModel]
class TaskDiffDependenciesModel(BaseModel):
model_config = {"populate_by_name": True}
type: str
del_: List[str] = Field(default_factory=list, alias="del")
add: List[str]
class TaskPackagesSubtaskElementModel(BaseModel):
subtask: int
source: TaskPackagesPackageElementModel
binaries: list[TaskPackagesPackageElementModel]
class TaskDiffPackagesModel(BaseModel):
model_config = {"populate_by_name": True}
package: str
del_: List[str] = Field(default_factory=list, alias="del")
add: List[str]
dependencies: List[TaskDiffDependenciesModel]
class TaskProgressTaskInfoResponseModel(BaseModel):
task_id: int
task_repo: str
task_state: str
task_owner: str
task_try: int
task_iter: int
task_testonly: int
task_changed: str
task_message: str
task_stage: str
dependencies: list[int]
subtasks: list[SubTaskInfoElementModel]
iterations: list[TaskIterationsElementModel]
class TaskDiffArchsModel(BaseModel):
class TaskRepoArchsModel(BaseModel):
arch: str
packages: List[TaskDiffPackagesModel]
packages: list[TaskRepoPackageModel]
class TaskDiffModel(BaseModel):
task_id: int
task_have_plan: bool
task_diff: List[TaskDiffArchsModel]
class TaskRepoInfoModel(BaseModel):
name: str
date: str
tag: str
class TaskFindPackagesetElementModel(BaseModel):
branch: str
pkgset_datetime: str
sourcepkgname: str
packages: List[str]
class TaskRepoPackageModel(BaseModel):
name: str
version: str
release: str
disttag: str
packager_email: str
buildtime: str
archs: List[str]
filename: str
class TaskFindPackagesetModel(BaseModel):
id: int
request_args: Dict[str, Any]
task_packages: List[str]
length: int
packages: List[TaskFindPackagesetElementModel]
class TaskRepoResponseModel(BaseModel):
task_id: int
base_repository: TaskRepoInfoModel
task_diff_list: list[int]
archs: list[TaskRepoArchsModel]
class TaskMisconflictPackageModel(BaseModel):
input_package: str
conflict_package: str
version: str
release: str
epoch: int
archs: List[str]
files_with_conflict: List[str]
class TasksHistoryBranchCommitModel(BaseModel):
name: str
date: str
task: int
class TaskMisconflictPackagesModel(BaseModel):
class TasksHistoryTaskModel(BaseModel):
id: int
request_args: Dict[str, Any]
length: int
conflicts: List[TaskMisconflictPackageModel]
prev: int
branch: str
date: str
class NeedsApprovalSubtaskElementModel(BaseModel):
id: int
type: str
package: str
userid: str
dir: str
sid: str
pkg_from: str
tag_author: str
tag_id: str
tag_name: str
srpm: str
srpm_name: str
srpm_evr: str
last_changed: str
source_package: TaskInfoPackageModel | None
class TasksListElementModel(BaseModel):
task_id: int
task_repo: str
task_state: str
task_owner: str
task_try: int
task_iter: int
task_testonly: int
task_changed: str
task_message: str
task_stage: str
dependencies: list[int]
subtasks: list[SubTasksElementModel]
approval: list[TaskApprovalElementModel]
class NeedsApprovalTaskElementModel(BaseModel):
model_config = {"populate_by_name": True}
class TasksListResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
tasks: list[TasksListElementModel]
id: int
state: str
runby: str
try_: int | None = Field(None, alias="try")
iter: int
failearly: bool
shared: bool
depends: List[int]
testonly: bool
message: str
class UnpackagedDirsElementModel(BaseModel):
package: str
directory: str
version: str
prev: int
last_changed: str
branch: str
user: str
subtasks: List[NeedsApprovalSubtaskElementModel]
release: str
epoch: int
packager: str
email: str
archs: list[str]
class NeedsApprovalModel(BaseModel):
class UnpackagedDirsResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
tasks: List[NeedsApprovalTaskElementModel]
packages: list[UnpackagedDirsElementModel]
class TaskHistoryElementModel(BaseModel):
task_id: int
task_commited: str
branch_commited: str
class ValidationErrorDetail(BaseModel):
loc: list[str | int]
msg: str
type: str
class TaskHistoryModel(BaseModel):
request_args: Dict[str, Any]
length: int
tasks: List[TaskHistoryElementModel]
class ValidationErrorResponse(BaseModel):
message: str
validation_errors: list[ValidationErrorDetail]
class TaskRepoPackageModel(BaseModel):
class VulnExcludedPackagesElementModel(BaseModel):
pkghash: str
name: str
branch: str
version: str
release: str
filename: str
class TaskRepoInfoModel(BaseModel):
name: str
date: str
tag: str
class TaskRepoArchsModel(BaseModel):
arch: str
packages: List[TaskRepoPackageModel]
errata_id: str
task_id: int
subtask_id: int
task_state: str
class TaskRepoModel(BaseModel):
task_id: int
base_repository: TaskRepoInfoModel | None
task_diff_list: List[int]
archs: List[TaskRepoArchsModel]
class VulnExcludedPackagesResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
packages: list[VulnExcludedPackagesElementModel]
class TaskBuildDependencyElementModel(BaseModel):
depth: int
class VulnFixesPackagesElementModel(BaseModel):
pkghash: str
name: str
branch: str
version: str
release: str
epoch: int
serial: int
sourcerpm: str
branch: str
buildtime: str
archs: List[str]
cycle: List[str]
requires: List[str]
acl: List[str]
errata_id: str
task_id: int
subtask_id: int
task_state: str
last_version: VulnPackageLastVersionModel
class TaskBuildDependencyModel(BaseModel):
id: int
request_args: Dict[str, Any]
class VulnFixesPackagesResponseModel(BaseModel):
request_args: dict[str, Any]
length: int
dependencies: List[TaskBuildDependencyElementModel]
packages: list[VulnFixesPackagesElementModel]
class VulnerabilityReferenceElementModel(BaseModel):
class VulnPackageLastVersionModel(BaseModel):
pkghash: str
name: str
url: str
tags: List[str]
branch: str
version: str
release: str
class VulnerabilitiesElementModel(BaseModel):
id: str
type: str
class VulnerabilityCVSSVectorElementModel(BaseModel):
class VulnerabilityCVSSVectorElelementModel(BaseModel):
version: str
score: float
vector: str
class VulnerabilityConfigurationElementModel(BaseModel):
cpe: str
version_start_excluding: str | None = None
version_start_including: str | None = None
version_end_excluding: str | None = None
version_end_including: str | None = None
cpe: str = ''
version_start_excluding: str = ''
version_start_including: str = ''
version_end_excluding: str = ''
version_end_including: str = ''
class VulnerabilityParsedDetailsModel(BaseModel):
references: List[VulnerabilityReferenceElementModel]
cvss_vectors: List[VulnerabilityCVSSVectorElementModel]
configurations: List[VulnerabilityConfigurationElementModel]
cwes: List[str]
class VulnerabilityInfoResponseModel(BaseModel):
request_args: dict[str, Any]
vuln_info: VulnerabilityModel
parsed: VulnerabilityParsedDetailsModel
class VulnerabilityModel(BaseModel):
......@@ -2428,63 +2551,44 @@ class VulnerabilityModel(BaseModel):
score: float
published: str
modified: str
refs: List[str]
json_: Dict[str, Any] = Field(default_factory=dict, alias="json")
refs: list[str]
json_: dict[str, Any] = Field(alias='json')
rejected: bool
class VulnerabilityInfoModel(BaseModel):
request_args: Dict[str, Any]
vuln_info: VulnerabilityModel | None
parsed: VulnerabilityParsedDetailsModel | None
class VulnerabilityParsedDetailsModel(BaseModel):
references: list[VulnerabilityReferenceElementModel]
cvss_vectors: list[VulnerabilityCVSSVectorElelementModel]
configurations: list[VulnerabilityConfigurationElementModel]
cwes: list[str]
class VulnPackageLastVersionModel(BaseModel):
pkghash: str
class VulnerabilityReferenceElementModel(BaseModel):
name: str
branch: str
version: str
release: str
url: str
tags: list[str]
class VulnFixesPackagesElementModel(BaseModel):
class altrepo_api__api__dependencies__models__PackageBuildDependencyElementModel(BaseModel):
pkghash: str
name: str
branch: str
version: str
release: str
errata_id: str
task_id: int
task_state: str
last_version: VulnPackageLastVersionModel | None
class VulnFixesPackagesModel(BaseModel):
request_args: Dict[str, Any]
length: int
packages: List[VulnFixesPackagesElementModel]
class CveTaskPackageVulnerableElementModel(BaseModel):
id: str
type: str
link: str
buildtime: str
acl: list[str]
depends: list[PackageDependsModel]
class CveTaskPackagesElementModel(BaseModel):
subtask: int
pkghash: str
pkg_name: str
pkg_version: str
pkg_release: str
class altrepo_api__api__package__models__PackageBuildDependencyElementModel(BaseModel):
depth: int
name: str
version: str
release: str
epoch: int
serial: int
sourcerpm: str
branch: str
errata_id: str
errata_link: str
vulnerabilities: List[CveTaskPackageVulnerableElementModel]
class CveVulnerableTaskModel(BaseModel):
packages: List[CveTaskPackagesElementModel]
ErrataVulnerabilityModel.model_rebuild()
buildtime: str
archs: list[str]
cycle: list[str]
requires: list[str]
acl: list[str]
......@@ -27,6 +27,7 @@ async def test_export_oval_branches(client):
assert result.branches
@pytest.mark.timeout(120)
async def test_export_oval_info(client):
result = await client.api.errata.export.oval.info(Branch.p11)
assert isinstance(result, bytes)
......
import pytest
from altrepo.api.errors import DataNotFoundError
from altrepo.api.types import Branch
......@@ -66,7 +67,12 @@ async def test_all_pkgsets_with_src_count(client):
async def test_beehive_errors_by_maintainer(client):
result = await client.api.site.beehive_errors_by_maintainer(Branch.sisyphus, "fiersik")
try:
result = await client.api.site.beehive_errors_by_maintainer(
Branch.sisyphus, "fiersik"
)
except DataNotFoundError:
pytest.skip("maintainer has no current beehive errors")
assert result
......
......@@ -39,7 +39,8 @@ async def test_progress_last_tasks(client):
async def test_build_dependency_set(client, task_id):
result = await client.api.task.build_dependency_set(task_id)
assert result.id == task_id
assert result.length >= 0
assert result.packages is not None
async def test_task_info(client, task_id):
......
import ast
import json
from pathlib import Path
from pydantic import BaseModel
from altrepo.api import models
ROOT = Path(__file__).resolve().parents[1]
def _openapi():
return json.loads((ROOT / "openapi.json").read_text())
def _normalize_path(path: str, openapi_paths: set[str]) -> str:
if "{}" not in path:
return path
parts = path.split("/")
candidates = []
for candidate in openapi_paths:
candidate_parts = candidate.split("/")
if len(parts) != len(candidate_parts):
continue
if all(
(part == "{}" and other.startswith("{") and other.endswith("}"))
or part == other
for part, other in zip(parts, candidate_parts)
):
candidates.append(candidate)
return candidates[0] if len(candidates) == 1 else path
def test_all_openapi_schemas_have_models():
schema_names = set(_openapi()["components"]["schemas"])
model_names = {
name
for name, value in vars(models).items()
if isinstance(value, type)
and (issubclass(value, BaseModel) or name in schema_names)
}
assert schema_names <= model_names
def test_client_endpoint_paths_match_openapi():
openapi_paths = set(_openapi()["paths"])
tree = ast.parse((ROOT / "altrepo/api/methods.py").read_text())
client_paths = set()
for node in ast.walk(tree):
if not isinstance(node, ast.Call):
continue
if not isinstance(node.func, ast.Attribute):
continue
if node.func.attr not in {"get", "post", "get_text", "get_bytes"}:
continue
if not node.args:
continue
arg = node.args[0]
if isinstance(arg, ast.Constant) and isinstance(arg.value, str):
value = arg.value
elif isinstance(arg, ast.JoinedStr):
value = "".join(
part.value if isinstance(part, ast.Constant) else "{}"
for part in arg.values
)
else:
continue
if value.startswith("/"):
client_paths.add(_normalize_path(value, openapi_paths))
assert client_paths - openapi_paths == set()
assert (openapi_paths - client_paths) <= {"/site/all_maintainers"}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment