mirror of
https://github.com/jhd3197/ServerKit.git
synced 2026-11-10 05:53:05 +09:00
Add end-to-end support for removing remote Docker networks and volumes and normalize remote API responses. Server: new Flask endpoints to DELETE remote networks/volumes and helpers to compute external base/ws URLs and v1 API paths. Agent: register new handler docker:network:remove and Client.RemoveNetwork implementation. Backend service: RemoteDockerService.remove_network uses agent registry for remote servers and falls back to local DockerService. Models: expand Server permission logic to map agent actions to profile/legacy scopes (DOCKER_READ_ACTIONS, scope expansion and wildcard matching) and add unit tests covering permission mappings. Frontend: handle agent-backed response shapes (unwrapRemoteData, normalizeListResponse), call new removeRemoteNetwork/removeRemoteVolume API methods, update download/install URLs to /api/v1, and tweak several UI texts. Install scripts: change config/log directories, pass --config when registering/starting agent, and update systemd/service/unit and Windows service install paths. README: small wording updates about fleet/remote deployment and monitoring.
49 lines
1.7 KiB
Python
49 lines
1.7 KiB
Python
from app.models.server import Server
|
|
|
|
|
|
def test_read_profiles_cover_agent_read_actions():
|
|
server = Server(
|
|
name='test-server',
|
|
permissions=[
|
|
'docker:container:read',
|
|
'docker:image:read',
|
|
'docker:volume:read',
|
|
'docker:network:read',
|
|
'docker:compose:read',
|
|
'system:metrics:read',
|
|
],
|
|
)
|
|
|
|
assert server.has_permission('docker:container:list')
|
|
assert server.has_permission('docker:container:inspect')
|
|
assert server.has_permission('docker:container:logs')
|
|
assert server.has_permission('docker:image:list')
|
|
assert server.has_permission('docker:volume:list')
|
|
assert server.has_permission('docker:network:list')
|
|
assert server.has_permission('docker:compose:ps')
|
|
assert server.has_permission('system:metrics')
|
|
assert server.has_permission('system:info')
|
|
assert not server.has_permission('docker:container:start')
|
|
assert not server.has_permission('docker:image:pull')
|
|
|
|
|
|
def test_legacy_ui_permissions_still_work_for_existing_servers():
|
|
server = Server(
|
|
name='test-server',
|
|
permissions=['docker:read', 'docker:write', 'system:read'],
|
|
)
|
|
|
|
assert server.has_permission('docker:container:list')
|
|
assert server.has_permission('docker:container:start')
|
|
assert server.has_permission('docker:image:pull')
|
|
assert server.has_permission('system:metrics')
|
|
assert server.has_permission('system:info')
|
|
|
|
|
|
def test_wildcard_permissions_still_match_agent_actions():
|
|
server = Server(name='test-server', permissions=['docker:container:*'])
|
|
|
|
assert server.has_permission('docker:container:list')
|
|
assert server.has_permission('docker:container:restart')
|
|
assert not server.has_permission('docker:image:list')
|