From 4ebc941951d7f1094d991fb18fda16d3c915d450 Mon Sep 17 00:00:00 2001 From: Mark Paronyan Date: Wed, 30 Sep 2026 20:51:10 +0300 Subject: [PATCH] style: sort imports in controller API routes --- gns3server/api/routes/controller/__init__.py | 49 +++++++++---------- gns3server/api/routes/controller/acl.py | 20 ++++---- gns3server/api/routes/controller/api_keys.py | 12 ++--- .../api/routes/controller/appliances.py | 10 ++-- gns3server/api/routes/controller/chat.py | 8 +-- gns3server/api/routes/controller/computes.py | 9 ++-- .../api/routes/controller/controller.py | 20 ++++---- gns3server/api/routes/controller/copilot.py | 2 + .../controller/dependencies/authentication.py | 15 +++--- .../controller/dependencies/database.py | 3 +- .../routes/controller/dependencies/rbac.py | 7 +-- gns3server/api/routes/controller/drawings.py | 7 +-- gns3server/api/routes/controller/gns3vm.py | 7 +-- gns3server/api/routes/controller/groups.py | 25 +++++----- gns3server/api/routes/controller/images.py | 44 ++++++++--------- gns3server/api/routes/controller/links.py | 21 ++++---- .../routes/controller/llm_model_configs.py | 9 ++-- gns3server/api/routes/controller/netmiko.py | 3 +- gns3server/api/routes/controller/nodes.py | 19 ++++--- gns3server/api/routes/controller/pools.py | 29 ++++++----- .../api/routes/controller/privileges.py | 12 +++-- gns3server/api/routes/controller/projects.py | 39 ++++++++------- gns3server/api/routes/controller/roles.py | 22 ++++----- gns3server/api/routes/controller/settings.py | 5 +- gns3server/api/routes/controller/snapshots.py | 7 +-- gns3server/api/routes/controller/symbols.py | 13 +++-- gns3server/api/routes/controller/templates.py | 16 +++--- gns3server/api/routes/controller/users.py | 25 +++++----- 28 files changed, 227 insertions(+), 231 deletions(-) diff --git a/gns3server/api/routes/controller/__init__.py b/gns3server/api/routes/controller/__init__.py index 9236e17c0..e22d3d507 100644 --- a/gns3server/api/routes/controller/__init__.py +++ b/gns3server/api/routes/controller/__init__.py @@ -21,9 +21,7 @@ from gns3server.agent import AI_COPILOT_AVAILABLE # Conditionally import AI-dependent routes if AI_COPILOT_AVAILABLE: - from . import chat - from . import copilot - from . import llm_model_configs + from . import chat, copilot, llm_model_configs _chat_router = chat.router _copilot_router = copilot.router @@ -44,28 +42,29 @@ else: ) -from . import controller -from . import appliances -from . import computes -from . import drawings -from . import gns3vm -from . import links -from . import nodes -from . import projects -from . import snapshots -from . import symbols -from . import templates -from . import images -from . import users -from . import groups -from . import roles -from . import acl -from . import pools -from . import privileges -from . import api_keys -from . import netmiko -from . import settings - +from . import ( + acl, + api_keys, + appliances, + computes, + controller, + drawings, + gns3vm, + groups, + images, + links, + netmiko, + nodes, + pools, + privileges, + projects, + roles, + settings, + snapshots, + symbols, + templates, + users, +) from .dependencies.authentication import get_current_active_user router = APIRouter() diff --git a/gns3server/api/routes/controller/acl.py b/gns3server/api/routes/controller/acl.py index ccc6b7a1d..7febf226b 100644 --- a/gns3server/api/routes/controller/acl.py +++ b/gns3server/api/routes/controller/acl.py @@ -19,29 +19,27 @@ API routes for ACL. """ +import logging import re +from typing import Iterator, List, Optional, Sequence +from uuid import UUID from fastapi import APIRouter, Depends, Request, status from fastapi.routing import APIRoute, _IncludedRouter from starlette.routing import BaseRoute, Mount -from uuid import UUID -from typing import Iterator, List, Optional, Sequence - -from gns3server import schemas -from gns3server.controller.controller_error import ControllerBadRequestError, ControllerNotFoundError - -from gns3server.controller import Controller import gns3server.db.models as models -from gns3server.db.repositories.users import UsersRepository -from gns3server.db.repositories.rbac import RbacRepository +from gns3server import schemas +from gns3server.controller import Controller +from gns3server.controller.controller_error import ControllerBadRequestError, ControllerNotFoundError from gns3server.db.repositories.images import ImagesRepository +from gns3server.db.repositories.rbac import RbacRepository from gns3server.db.repositories.templates import TemplatesRepository +from gns3server.db.repositories.users import UsersRepository + from .dependencies.database import get_repository from .dependencies.rbac import has_privilege -import logging - log = logging.getLogger(__name__) router = APIRouter() diff --git a/gns3server/api/routes/controller/api_keys.py b/gns3server/api/routes/controller/api_keys.py index a3bfa4b14..42f1d66c2 100644 --- a/gns3server/api/routes/controller/api_keys.py +++ b/gns3server/api/routes/controller/api_keys.py @@ -18,18 +18,18 @@ API routes for API key management. """ +import logging import secrets -import bcrypt -from uuid import uuid4, UUID +from uuid import UUID, uuid4 -from fastapi import APIRouter, Depends, status, HTTPException +import bcrypt +from fastapi import APIRouter, Depends, HTTPException, status from gns3server import schemas from gns3server.db.repositories.api_keys import ApiKeysRepository -from .dependencies.database import get_repository -from .dependencies.authentication import get_current_active_user -import logging +from .dependencies.authentication import get_current_active_user +from .dependencies.database import get_repository log = logging.getLogger(__name__) diff --git a/gns3server/api/routes/controller/appliances.py b/gns3server/api/routes/controller/appliances.py index 46c187940..ad8645554 100644 --- a/gns3server/api/routes/controller/appliances.py +++ b/gns3server/api/routes/controller/appliances.py @@ -19,24 +19,22 @@ API routes for appliances. """ import logging +from typing import List, Optional, Union +from uuid import UUID from fastapi import APIRouter, Depends, status -from typing import Optional, List, Union -from uuid import UUID from gns3server import schemas from gns3server.controller import Controller -from gns3server.controller.controller_error import ControllerError, ControllerBadRequestError, ControllerNotFoundError - +from gns3server.controller.controller_error import ControllerBadRequestError, ControllerError, ControllerNotFoundError from gns3server.db.repositories.images import ImagesRepository -from gns3server.db.repositories.templates import TemplatesRepository from gns3server.db.repositories.rbac import RbacRepository +from gns3server.db.repositories.templates import TemplatesRepository from .dependencies.authentication import get_current_active_user from .dependencies.database import get_repository from .dependencies.rbac import has_privilege - log = logging.getLogger(__name__) router = APIRouter() diff --git a/gns3server/api/routes/controller/chat.py b/gns3server/api/routes/controller/chat.py index e55e722f7..3573b5e1e 100644 --- a/gns3server/api/routes/controller/chat.py +++ b/gns3server/api/routes/controller/chat.py @@ -24,16 +24,16 @@ import json import logging import uuid from typing import Any, List, Optional +from uuid import UUID from fastapi import APIRouter, Depends, HTTPException, Request, status from fastapi.responses import StreamingResponse -from uuid import UUID from gns3server import schemas -from gns3server.controller import Controller -from gns3server.controller.project import Project -from gns3server.controller.controller_error import ControllerNotFoundError from gns3server.agent.gns3_copilot.project_agent_manager import get_project_agent_manager +from gns3server.controller import Controller +from gns3server.controller.controller_error import ControllerNotFoundError +from gns3server.controller.project import Project from gns3server.db.tasks import get_user_llm_config_full from .dependencies.authentication import get_current_active_user diff --git a/gns3server/api/routes/controller/computes.py b/gns3server/api/routes/controller/computes.py index c62c859ac..6dbaa30cd 100644 --- a/gns3server/api/routes/controller/computes.py +++ b/gns3server/api/routes/controller/computes.py @@ -18,16 +18,17 @@ API routes for computes. """ -from fastapi import APIRouter, Body, Depends, status -from typing import Any, List, Union, Optional +from typing import Any, List, Optional, Union from uuid import UUID -from gns3server.controller import Controller +from fastapi import APIRouter, Body, Depends, status + import gns3server.db.models as models +from gns3server import schemas +from gns3server.controller import Controller from gns3server.db.repositories.computes import ComputesRepository from gns3server.db.repositories.rbac import RbacRepository from gns3server.services.computes import ComputesService -from gns3server import schemas from .dependencies.database import get_repository from .dependencies.rbac import has_privilege diff --git a/gns3server/api/routes/controller/controller.py b/gns3server/api/routes/controller/controller.py index bd6502135..25999bdd9 100644 --- a/gns3server/api/routes/controller/controller.py +++ b/gns3server/api/routes/controller/controller.py @@ -15,30 +15,28 @@ # along with this program. If not, see . import asyncio -import signal +import logging import os +import signal import time -import psutil +from typing import Dict, List -from fastapi import APIRouter, FastAPI, Request, Depends, WebSocket, WebSocketDisconnect, status -from fastapi.responses import StreamingResponse +import psutil +from fastapi import APIRouter, Depends, FastAPI, Request, WebSocket, WebSocketDisconnect, status from fastapi.encoders import jsonable_encoder +from fastapi.responses import StreamingResponse from fastapi.routing import Mount from websockets.exceptions import ConnectionClosed, WebSocketException -from typing import List, Dict - +from gns3server import schemas +from gns3server.agent.web_wireshark.stats import collect_webwireshark_stats from gns3server.config import Config from gns3server.controller import Controller -from gns3server.agent.web_wireshark.stats import collect_webwireshark_stats -from gns3server.version import __version__ from gns3server.controller.controller_error import ControllerError, ControllerForbiddenError -from gns3server import schemas +from gns3server.version import __version__ from .dependencies.authentication import get_current_active_user, get_current_active_user_from_websocket -import logging - log = logging.getLogger(__name__) router = APIRouter() diff --git a/gns3server/api/routes/controller/copilot.py b/gns3server/api/routes/controller/copilot.py index 050792392..489d96cb3 100644 --- a/gns3server/api/routes/controller/copilot.py +++ b/gns3server/api/routes/controller/copilot.py @@ -21,7 +21,9 @@ API routes for GNS3 Copilot global operations (non-project). import logging from fastapi import APIRouter, Depends, HTTPException, status + from gns3server import schemas + from .dependencies.authentication import get_current_active_user log = logging.getLogger(__name__) diff --git a/gns3server/api/routes/controller/dependencies/authentication.py b/gns3server/api/routes/controller/dependencies/authentication.py index 1517e0572..b5689ade8 100644 --- a/gns3server/api/routes/controller/dependencies/authentication.py +++ b/gns3server/api/routes/controller/dependencies/authentication.py @@ -17,21 +17,22 @@ import asyncio import hashlib import logging -import bcrypt - -from fastapi import Request, Query, Depends, HTTPException, WebSocket, status -from fastapi.security import OAuth2PasswordBearer from typing import Optional from uuid import UUID -from gns3server import schemas +import bcrypt +from fastapi import Depends, HTTPException, Query, Request, WebSocket, status +from fastapi.security import OAuth2PasswordBearer + import gns3server.db.models as models +from gns3server import schemas from gns3server.db.repositories.api_keys import ApiKeysRepository -from gns3server.db.repositories.users import UsersRepository from gns3server.db.repositories.rbac import RbacRepository +from gns3server.db.repositories.users import UsersRepository from gns3server.schemas.controller.tokens import TokenData -from gns3server.services import auth_service, access_ticket_service +from gns3server.services import access_ticket_service, auth_service from gns3server.services.access_tickets import TICKET_PREFIX + from .database import get_repository log = logging.getLogger(__name__) diff --git a/gns3server/api/routes/controller/dependencies/database.py b/gns3server/api/routes/controller/dependencies/database.py index 86375507d..e9a3001ea 100644 --- a/gns3server/api/routes/controller/dependencies/database.py +++ b/gns3server/api/routes/controller/dependencies/database.py @@ -15,9 +15,10 @@ # along with this program. If not, see . from typing import AsyncGenerator, Callable, Type + from fastapi import Depends -from starlette.requests import HTTPConnection from sqlalchemy.ext.asyncio import AsyncSession +from starlette.requests import HTTPConnection from gns3server.db.repositories.base import BaseRepository diff --git a/gns3server/api/routes/controller/dependencies/rbac.py b/gns3server/api/routes/controller/dependencies/rbac.py index 995055e1d..447e6b0b6 100644 --- a/gns3server/api/routes/controller/dependencies/rbac.py +++ b/gns3server/api/routes/controller/dependencies/rbac.py @@ -14,16 +14,17 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . +import logging import re -from fastapi import Request, WebSocket, Depends, HTTPException +from fastapi import Depends, HTTPException, Request, WebSocket + from gns3server import schemas from gns3server.db.repositories.rbac import RbacRepository + from .authentication import get_current_active_user, get_current_active_user_from_websocket from .database import get_repository -import logging - log = logging.getLogger() diff --git a/gns3server/api/routes/controller/drawings.py b/gns3server/api/routes/controller/drawings.py index 6df9ddd91..6b9cb3553 100644 --- a/gns3server/api/routes/controller/drawings.py +++ b/gns3server/api/routes/controller/drawings.py @@ -18,14 +18,15 @@ API routes for drawings. """ -from fastapi import APIRouter, Depends, status -from fastapi.encoders import jsonable_encoder from typing import Any, List from uuid import UUID +from fastapi import APIRouter, Depends, status +from fastapi.encoders import jsonable_encoder + +from gns3server import schemas from gns3server.controller import Controller from gns3server.db.repositories.rbac import RbacRepository -from gns3server import schemas from .dependencies.database import get_repository from .dependencies.rbac import has_privilege diff --git a/gns3server/api/routes/controller/gns3vm.py b/gns3server/api/routes/controller/gns3vm.py index d019189bd..e0ae90eba 100644 --- a/gns3server/api/routes/controller/gns3vm.py +++ b/gns3server/api/routes/controller/gns3vm.py @@ -19,12 +19,13 @@ API routes for managing the GNS3 VM. """ -from fastapi import APIRouter -from fastapi.encoders import jsonable_encoder from typing import List -from gns3server.controller import Controller +from fastapi import APIRouter +from fastapi.encoders import jsonable_encoder + from gns3server import schemas +from gns3server.controller import Controller router = APIRouter() diff --git a/gns3server/api/routes/controller/groups.py b/gns3server/api/routes/controller/groups.py index 1b5de02d2..4022a6053 100644 --- a/gns3server/api/routes/controller/groups.py +++ b/gns3server/api/routes/controller/groups.py @@ -19,26 +19,25 @@ API routes for user groups. """ -from fastapi import APIRouter, Depends, status -from uuid import UUID +import logging from typing import List, Optional +from uuid import UUID -from gns3server import schemas -from gns3server.controller.controller_error import ( - ControllerError, - ControllerBadRequestError, - ControllerNotFoundError, - ControllerForbiddenError, -) +from fastapi import APIRouter, Depends, status import gns3server.db.models as models -from gns3server.db.repositories.users import UsersRepository +from gns3server import schemas +from gns3server.controller.controller_error import ( + ControllerBadRequestError, + ControllerError, + ControllerForbiddenError, + ControllerNotFoundError, +) from gns3server.db.repositories.rbac import RbacRepository +from gns3server.db.repositories.users import UsersRepository -from .dependencies.rbac import has_privilege from .dependencies.database import get_repository - -import logging +from .dependencies.rbac import has_privilege log = logging.getLogger(__name__) diff --git a/gns3server/api/routes/controller/images.py b/gns3server/api/routes/controller/images.py index 0496e29ee..981774419 100644 --- a/gns3server/api/routes/controller/images.py +++ b/gns3server/api/routes/controller/images.py @@ -18,40 +18,40 @@ API routes for images. """ -import os import logging -import urllib.parse +import os import tempfile +import urllib.parse +from typing import List, Literal, Optional -from fastapi import APIRouter, Request, Response, Depends, Query, status +from fastapi import APIRouter, Depends, Query, Request, Response, status from fastapi.encoders import jsonable_encoder -from starlette.requests import ClientDisconnect -from sqlalchemy.orm.exc import MultipleResultsFound from sqlalchemy.exc import SQLAlchemyError -from typing import List, Optional, Literal +from sqlalchemy.orm.exc import MultipleResultsFound +from starlette.requests import ClientDisconnect +import gns3server.db.models as models from gns3server import schemas -from gns3server.config import Config from gns3server.compute.qemu import Qemu +from gns3server.config import Config +from gns3server.controller import Controller +from gns3server.controller.controller_error import ( + ControllerBadRequestError, + ControllerError, + ControllerForbiddenError, + ControllerNotFoundError, +) +from gns3server.db.repositories.images import ImagesRepository +from gns3server.db.repositories.rbac import RbacRepository +from gns3server.db.repositories.templates import TemplatesRepository +from gns3server.services.image_reconciliation import get_image_reconciliation_service +from gns3server.utils.image_inventory import ImageLockBusy, contained_path, fingerprint, image_lock, publish_image from gns3server.utils.images import ( InvalidImageError, - write_image, - read_image_info, default_images_directory, get_builtin_disks, -) -import gns3server.db.models as models -from gns3server.db.repositories.images import ImagesRepository -from gns3server.db.repositories.templates import TemplatesRepository -from gns3server.db.repositories.rbac import RbacRepository -from gns3server.controller import Controller -from gns3server.services.image_reconciliation import get_image_reconciliation_service -from gns3server.utils.image_inventory import contained_path, image_lock, publish_image, fingerprint, ImageLockBusy -from gns3server.controller.controller_error import ( - ControllerError, - ControllerNotFoundError, - ControllerForbiddenError, - ControllerBadRequestError, + read_image_info, + write_image, ) from .dependencies.authentication import get_current_active_user diff --git a/gns3server/api/routes/controller/links.py b/gns3server/api/routes/controller/links.py index 2f5eddee3..6d805d4ae 100644 --- a/gns3server/api/routes/controller/links.py +++ b/gns3server/api/routes/controller/links.py @@ -19,31 +19,30 @@ API routes for links. """ import asyncio +import logging import os -import multidict -import aiohttp - -from fastapi import APIRouter, Depends, Request, status, WebSocket -from fastapi.responses import FileResponse, StreamingResponse -from fastapi.encoders import jsonable_encoder from typing import Any, List, Union from uuid import UUID, uuid4 +import aiohttp +import multidict +from fastapi import APIRouter, Depends, Request, WebSocket, status +from fastapi.encoders import jsonable_encoder +from fastapi.responses import FileResponse, StreamingResponse + +from gns3server import schemas +from gns3server.agent.web_wireshark.manager import WebWiresharkManager from gns3server.controller import Controller from gns3server.controller.controller_error import ControllerError +from gns3server.controller.link import _UNSET, Link from gns3server.db.repositories.rbac import RbacRepository -from gns3server.controller.link import Link, _UNSET from gns3server.utils.http_client import HTTPClient from gns3server.utils.port_allocator import link_id_to_port from gns3server.utils.websocket_to_websocket import websocket_proxy -from gns3server import schemas -from gns3server.agent.web_wireshark.manager import WebWiresharkManager from .dependencies.database import get_repository from .dependencies.rbac import has_privilege, has_privilege_on_websocket -import logging - log = logging.getLogger(__name__) responses: dict[int | str, dict[str, Any]] = { diff --git a/gns3server/api/routes/controller/llm_model_configs.py b/gns3server/api/routes/controller/llm_model_configs.py index c36912a02..b7675bf6d 100644 --- a/gns3server/api/routes/controller/llm_model_configs.py +++ b/gns3server/api/routes/controller/llm_model_configs.py @@ -19,24 +19,23 @@ API routes for LLM model configurations. """ -from fastapi import APIRouter, Depends, HTTPException, status -from uuid import UUID +import logging from typing import List +from uuid import UUID + +from fastapi import APIRouter, Depends, HTTPException, status from gns3server import schemas from gns3server.controller.controller_error import ( ControllerBadRequestError, ControllerNotFoundError, ) - from gns3server.db.repositories.llm_model_configs import LLMModelConfigsRepository from gns3server.db.repositories.users import UsersRepository from .dependencies.database import get_repository from .dependencies.rbac import has_privilege -import logging - log = logging.getLogger(__name__) router = APIRouter() diff --git a/gns3server/api/routes/controller/netmiko.py b/gns3server/api/routes/controller/netmiko.py index 44c9c9f42..3e71d67c8 100644 --- a/gns3server/api/routes/controller/netmiko.py +++ b/gns3server/api/routes/controller/netmiko.py @@ -19,6 +19,7 @@ API routes for Netmiko metadata. """ +import logging from typing import Optional from fastapi import APIRouter, Depends, HTTPException, status @@ -27,8 +28,6 @@ from gns3server import schemas from .dependencies.authentication import get_current_active_user -import logging - log = logging.getLogger(__name__) diff --git a/gns3server/api/routes/controller/nodes.py b/gns3server/api/routes/controller/nodes.py index 2b691e098..1395a60ea 100644 --- a/gns3server/api/routes/controller/nodes.py +++ b/gns3server/api/routes/controller/nodes.py @@ -18,33 +18,32 @@ API routes for nodes. """ -import aiohttp import asyncio import contextlib import ipaddress +import logging +from typing import Any, Callable, List, Optional +from uuid import UUID -from fastapi import APIRouter, Depends, WebSocket, WebSocketDisconnect, Request, Response, status, Query, HTTPException +import aiohttp +from fastapi import APIRouter, Depends, HTTPException, Query, Request, Response, WebSocket, WebSocketDisconnect, status from fastapi.encoders import jsonable_encoder from fastapi.responses import StreamingResponse from fastapi.routing import APIRoute -from typing import Any, List, Callable, Optional -from uuid import UUID -from gns3server.controller import Controller +from gns3server import schemas from gns3server.config import Config +from gns3server.controller import Controller +from gns3server.controller.controller_error import ControllerBadRequestError, ControllerForbiddenError from gns3server.controller.node import Node from gns3server.controller.project import Project +from gns3server.db.repositories.rbac import RbacRepository from gns3server.utils import force_unix_path from gns3server.utils.http_client import HTTPClient -from gns3server.controller.controller_error import ControllerForbiddenError, ControllerBadRequestError -from gns3server.db.repositories.rbac import RbacRepository -from gns3server import schemas from .dependencies.database import get_repository from .dependencies.rbac import has_privilege, has_privilege_on_websocket -import logging - log = logging.getLogger(__name__) node_locks: dict[str, dict[str, Any]] = {} diff --git a/gns3server/api/routes/controller/pools.py b/gns3server/api/routes/controller/pools.py index 882c05264..71a01a2ce 100644 --- a/gns3server/api/routes/controller/pools.py +++ b/gns3server/api/routes/controller/pools.py @@ -19,22 +19,21 @@ API routes for resource pools. """ -from fastapi import APIRouter, Depends, status -from uuid import UUID -from typing import List, Optional - -from gns3server import schemas -from gns3server.controller.controller_error import ControllerError, ControllerBadRequestError, ControllerNotFoundError - -from gns3server.controller import Controller -import gns3server.db.models as models -from gns3server.db.repositories.rbac import RbacRepository -from gns3server.db.repositories.pools import ResourcePoolsRepository - -from .dependencies.rbac import has_privilege -from .dependencies.database import get_repository - import logging +from typing import List, Optional +from uuid import UUID + +from fastapi import APIRouter, Depends, status + +import gns3server.db.models as models +from gns3server import schemas +from gns3server.controller import Controller +from gns3server.controller.controller_error import ControllerBadRequestError, ControllerError, ControllerNotFoundError +from gns3server.db.repositories.pools import ResourcePoolsRepository +from gns3server.db.repositories.rbac import RbacRepository + +from .dependencies.database import get_repository +from .dependencies.rbac import has_privilege log = logging.getLogger(__name__) diff --git a/gns3server/api/routes/controller/privileges.py b/gns3server/api/routes/controller/privileges.py index 1f34ec1ff..88b7481b9 100644 --- a/gns3server/api/routes/controller/privileges.py +++ b/gns3server/api/routes/controller/privileges.py @@ -15,14 +15,16 @@ API route for privileges """ -from typing import List -import gns3server.db.models as models -from gns3server.db.repositories.rbac import RbacRepository -from .dependencies.database import get_repository -from fastapi import APIRouter, Depends import logging +from typing import List +from fastapi import APIRouter, Depends + +import gns3server.db.models as models from gns3server import schemas +from gns3server.db.repositories.rbac import RbacRepository + +from .dependencies.database import get_repository log = logging.getLogger(__name__) router = APIRouter() diff --git a/gns3server/api/routes/controller/projects.py b/gns3server/api/routes/controller/projects.py index 83dfcff8e..fab2691d2 100644 --- a/gns3server/api/routes/controller/projects.py +++ b/gns3server/api/routes/controller/projects.py @@ -18,44 +18,45 @@ API routes for projects. """ -import os import asyncio +import logging +import os import tempfile -import aiofiles import time import urllib.parse -import gns3server.utils.zipfile_zstd as zipfile -import logging +import aiofiles + +import gns3server.utils.zipfile_zstd as zipfile log = logging.getLogger() -from fastapi import APIRouter, Depends, Request, Body, HTTPException, status, WebSocket, WebSocketDisconnect -from fastapi.encoders import jsonable_encoder -from fastapi.responses import StreamingResponse, FileResponse -from websockets.exceptions import ConnectionClosed, WebSocketException from typing import Any, List, Optional from uuid import UUID +from fastapi import APIRouter, Body, Depends, HTTPException, Request, WebSocket, WebSocketDisconnect, status +from fastapi.encoders import jsonable_encoder +from fastapi.responses import FileResponse, StreamingResponse +from websockets.exceptions import ConnectionClosed, WebSocketException + from gns3server import schemas -from gns3server.controller import Controller -from gns3server.controller.project import Project -from gns3server.controller.link import _UNSET -from gns3server.controller.controller_error import ControllerError, ControllerBadRequestError -from gns3server.controller.import_project import import_project as import_controller_project +from gns3server.controller import Controller, marker_replay +from gns3server.controller.controller_error import ControllerBadRequestError, ControllerError from gns3server.controller.export_project import export_project as export_controller_project -from gns3server.controller import marker_replay +from gns3server.controller.import_project import import_project as import_controller_project +from gns3server.controller.link import _UNSET from gns3server.controller.marker_replay import SharkdError, SharkdMissingError +from gns3server.controller.project import Project +from gns3server.db.repositories.pools import ResourcePoolsRepository +from gns3server.db.repositories.rbac import RbacRepository +from gns3server.db.repositories.templates import TemplatesRepository +from gns3server.services.templates import TemplatesService from gns3server.utils.asyncio import aiozipstream from gns3server.utils.path import is_safe_path -from gns3server.db.repositories.templates import TemplatesRepository -from gns3server.db.repositories.rbac import RbacRepository -from gns3server.db.repositories.pools import ResourcePoolsRepository -from gns3server.services.templates import TemplatesService -from .dependencies.rbac import has_privilege, has_privilege_on_websocket from .dependencies.authentication import get_current_active_user from .dependencies.database import get_repository +from .dependencies.rbac import has_privilege, has_privilege_on_websocket responses: dict[int | str, dict[str, Any]] = { 404: {"model": schemas.ErrorMessage, "description": "Could not find project"} diff --git a/gns3server/api/routes/controller/roles.py b/gns3server/api/routes/controller/roles.py index 3f6e854a1..119738dd2 100644 --- a/gns3server/api/routes/controller/roles.py +++ b/gns3server/api/routes/controller/roles.py @@ -19,25 +19,25 @@ API routes for roles. """ -from fastapi import APIRouter, Depends, status -from uuid import UUID +import logging from typing import List, Optional +from uuid import UUID -from gns3server import schemas -from gns3server.controller.controller_error import ( - ControllerError, - ControllerBadRequestError, - ControllerNotFoundError, - ControllerForbiddenError, -) +from fastapi import APIRouter, Depends, status import gns3server.db.models as models +from gns3server import schemas +from gns3server.controller.controller_error import ( + ControllerBadRequestError, + ControllerError, + ControllerForbiddenError, + ControllerNotFoundError, +) from gns3server.db.repositories.rbac import RbacRepository + from .dependencies.database import get_repository from .dependencies.rbac import has_privilege -import logging - log = logging.getLogger(__name__) router = APIRouter() diff --git a/gns3server/api/routes/controller/settings.py b/gns3server/api/routes/controller/settings.py index 466edc726..eaae57bd3 100644 --- a/gns3server/api/routes/controller/settings.py +++ b/gns3server/api/routes/controller/settings.py @@ -19,8 +19,9 @@ API routes for managing the server settings (gns3_server.conf). """ -from fastapi import APIRouter, Depends, HTTPException +import logging +from fastapi import APIRouter, Depends, HTTPException from pydantic import ValidationError from gns3server import schemas @@ -31,8 +32,6 @@ from gns3server.schemas.controller.settings import SECRET_MASK from .dependencies.rbac import has_privilege -import logging - log = logging.getLogger(__name__) router = APIRouter() diff --git a/gns3server/api/routes/controller/snapshots.py b/gns3server/api/routes/controller/snapshots.py index 4ec8c467c..eddcd029e 100644 --- a/gns3server/api/routes/controller/snapshots.py +++ b/gns3server/api/routes/controller/snapshots.py @@ -23,14 +23,15 @@ import logging log = logging.getLogger() -from fastapi import APIRouter, Depends, status from typing import Any, List from uuid import UUID -from gns3server.controller.project import Project -from gns3server.db.repositories.rbac import RbacRepository +from fastapi import APIRouter, Depends, status + from gns3server import schemas from gns3server.controller import Controller +from gns3server.controller.project import Project +from gns3server.db.repositories.rbac import RbacRepository from .dependencies.database import get_repository from .dependencies.rbac import has_privilege diff --git a/gns3server/api/routes/controller/symbols.py b/gns3server/api/routes/controller/symbols.py index 5f004ffa6..98d6a0c91 100644 --- a/gns3server/api/routes/controller/symbols.py +++ b/gns3server/api/routes/controller/symbols.py @@ -19,21 +19,20 @@ API routes for symbols. """ +import logging import os - -from fastapi import APIRouter, Request, Depends, Response, status -from fastapi.responses import FileResponse from typing import List -from gns3server.controller import Controller +from fastapi import APIRouter, Depends, Request, Response, status +from fastapi.responses import FileResponse + from gns3server import schemas -from gns3server.controller.controller_error import ControllerError, ControllerNotFoundError, ControllerForbiddenError +from gns3server.controller import Controller +from gns3server.controller.controller_error import ControllerError, ControllerForbiddenError, ControllerNotFoundError from gns3server.utils.get_resource import get_resource from .dependencies.rbac import has_privilege -import logging - log = logging.getLogger(__name__) diff --git a/gns3server/api/routes/controller/templates.py b/gns3server/api/routes/controller/templates.py index 3c35eea16..4263acede 100644 --- a/gns3server/api/routes/controller/templates.py +++ b/gns3server/api/routes/controller/templates.py @@ -18,30 +18,30 @@ API routes for templates. """ -import os import hashlib import json - import logging +import os log = logging.getLogger(__name__) -from fastapi import APIRouter, Request, HTTPException, Depends, Response, status, Query from typing import Any, List, Optional, Union from uuid import UUID +from fastapi import APIRouter, Depends, HTTPException, Query, Request, Response, status + from gns3server import schemas +from gns3server.controller import Controller +from gns3server.controller.controller_error import ControllerBadRequestError, ControllerError +from gns3server.db.repositories.images import ImagesRepository +from gns3server.db.repositories.rbac import RbacRepository from gns3server.db.repositories.templates import TemplatesRepository from gns3server.services.templates import TemplatesService -from gns3server.db.repositories.rbac import RbacRepository -from gns3server.db.repositories.images import ImagesRepository -from gns3server.controller import Controller -from gns3server.controller.controller_error import ControllerError, ControllerBadRequestError from gns3server.utils.images import get_builtin_disks from .dependencies.authentication import get_current_active_user -from .dependencies.rbac import has_privilege from .dependencies.database import get_repository +from .dependencies.rbac import has_privilege responses: dict[int | str, dict[str, Any]] = { 404: {"model": schemas.ErrorMessage, "description": "Could not find template"} diff --git a/gns3server/api/routes/controller/users.py b/gns3server/api/routes/controller/users.py index 673886195..1ba9a2eff 100644 --- a/gns3server/api/routes/controller/users.py +++ b/gns3server/api/routes/controller/users.py @@ -19,30 +19,29 @@ API routes for users. """ +import logging +from typing import List, Optional +from uuid import UUID + from fastapi import APIRouter, Depends, HTTPException, Response, status from fastapi.security import OAuth2PasswordRequestForm -from uuid import UUID -from typing import List, Optional - -from gns3server import schemas -from gns3server.controller.controller_error import ( - ControllerError, - ControllerBadRequestError, - ControllerNotFoundError, - ControllerForbiddenError, -) import gns3server.db.models as models -from gns3server.db.repositories.users import UsersRepository +from gns3server import schemas +from gns3server.controller.controller_error import ( + ControllerBadRequestError, + ControllerError, + ControllerForbiddenError, + ControllerNotFoundError, +) from gns3server.db.repositories.rbac import RbacRepository +from gns3server.db.repositories.users import UsersRepository from gns3server.services import auth_service from .dependencies.authentication import get_current_active_user from .dependencies.database import get_repository from .dependencies.rbac import has_privilege -import logging - log = logging.getLogger(__name__) router = APIRouter()