feat: add runtime repository interfaces and RuntimeOrchestrator
- EnvironmentRepository, AppRepository, AppVersionRepository, DeploymentRepository - RuntimeOrchestrator interface with ContainerRequest and ContainerStatus Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,13 @@
|
|||||||
|
package com.cameleer3.server.core.runtime;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public interface AppRepository {
|
||||||
|
List<App> findByEnvironmentId(UUID environmentId);
|
||||||
|
Optional<App> findById(UUID id);
|
||||||
|
Optional<App> findByEnvironmentIdAndSlug(UUID environmentId, String slug);
|
||||||
|
UUID create(UUID environmentId, String slug, String displayName);
|
||||||
|
void delete(UUID id);
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package com.cameleer3.server.core.runtime;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public interface AppVersionRepository {
|
||||||
|
List<AppVersion> findByAppId(UUID appId);
|
||||||
|
Optional<AppVersion> findById(UUID id);
|
||||||
|
int findMaxVersion(UUID appId);
|
||||||
|
UUID create(UUID appId, int version, String jarPath, String jarChecksum, String jarFilename, Long jarSizeBytes);
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package com.cameleer3.server.core.runtime;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public record ContainerRequest(
|
||||||
|
String containerName,
|
||||||
|
String baseImage,
|
||||||
|
String jarPath,
|
||||||
|
String network,
|
||||||
|
Map<String, String> envVars,
|
||||||
|
Map<String, String> labels,
|
||||||
|
long memoryLimitBytes,
|
||||||
|
int cpuShares,
|
||||||
|
int healthCheckPort
|
||||||
|
) {}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package com.cameleer3.server.core.runtime;
|
||||||
|
|
||||||
|
public record ContainerStatus(String state, boolean running, int exitCode, String error) {
|
||||||
|
public static ContainerStatus notFound() {
|
||||||
|
return new ContainerStatus("not_found", false, -1, "Container not found");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package com.cameleer3.server.core.runtime;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public interface DeploymentRepository {
|
||||||
|
List<Deployment> findByAppId(UUID appId);
|
||||||
|
List<Deployment> findByEnvironmentId(UUID environmentId);
|
||||||
|
Optional<Deployment> findById(UUID id);
|
||||||
|
Optional<Deployment> findActiveByAppIdAndEnvironmentId(UUID appId, UUID environmentId);
|
||||||
|
UUID create(UUID appId, UUID appVersionId, UUID environmentId, String containerName);
|
||||||
|
void updateStatus(UUID id, DeploymentStatus status, String containerId, String errorMessage);
|
||||||
|
void markDeployed(UUID id);
|
||||||
|
void markStopped(UUID id);
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package com.cameleer3.server.core.runtime;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public interface EnvironmentRepository {
|
||||||
|
List<Environment> findAll();
|
||||||
|
Optional<Environment> findById(UUID id);
|
||||||
|
Optional<Environment> findBySlug(String slug);
|
||||||
|
UUID create(String slug, String displayName);
|
||||||
|
void updateDisplayName(UUID id, String displayName);
|
||||||
|
void updateStatus(UUID id, EnvironmentStatus status);
|
||||||
|
void delete(UUID id);
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package com.cameleer3.server.core.runtime;
|
||||||
|
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
public interface RuntimeOrchestrator {
|
||||||
|
boolean isEnabled();
|
||||||
|
String startContainer(ContainerRequest request);
|
||||||
|
void stopContainer(String containerId);
|
||||||
|
void removeContainer(String containerId);
|
||||||
|
ContainerStatus getContainerStatus(String containerId);
|
||||||
|
Stream<String> getLogs(String containerId, int tailLines);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user