feat: add comprehensive CRUD endpoints, cluster sync improvements, and firewall orchestration
CI / backend (push) Failing after 2s
CI / frontend (push) Failing after 30s

Add create endpoints for users, roles, tenants, projects, networks, subnets, and security rules with audit logging, implement commit_or_400 helper for IntegrityError handling with 409 responses, enhance cluster sync to populate nodes, workloads, and networks from provider inventory with last_sync_at tracking, add update/delete operations for IP addresses and policies with version tracking, implement IP
This commit is contained in:
2026-07-09 12:33:36 +02:00
parent dea27b5459
commit a911d36f34
15 changed files with 1267 additions and 36 deletions
+72 -1
View File
@@ -19,6 +19,48 @@ export type Cluster = {
last_sync_status: string | null;
};
export type Project = {
id: string;
name: string;
tenant_id: string;
description: string | null;
};
export type Tenant = {
id: string;
name: string;
description: string | null;
};
export type User = {
id: string;
email: string;
display_name: string;
is_active: boolean;
};
export type Role = {
id: string;
name: string;
permissions: string[];
};
export type Subnet = {
id: string;
network_id: string;
cidr: string;
gateway: string | null;
dhcp_enabled: boolean;
};
export type IpAddress = {
id: string;
subnet_id: string;
address: string;
status: string;
note: string | null;
};
export type Network = {
id: string;
name: string;
@@ -29,12 +71,42 @@ export type Network = {
tags: string[];
};
export type SecurityGroup = {
id: string;
project_id: string | null;
name: string;
description: string | null;
};
export type SecurityRule = {
id: string;
security_group_id: string;
direction: string;
action: string;
protocol: string;
source: string;
destination: string;
port: string | null;
priority: number;
logging: boolean;
description: string | null;
};
export type Policy = {
id: string;
name: string;
version: number;
enabled: boolean;
definition: Record<string, unknown>;
last_compiled: Record<string, unknown> | null;
};
export type ServiceCatalogItem = {
id: string;
name: string;
protocol: string;
ports: string;
editable: boolean;
};
export type AuditLog = {
@@ -76,4 +148,3 @@ export async function login(email: string, password: string) {
setToken(data.access_token);
return data;
}