feat: remove bootstrap_token from EnvironmentEntity — API keys managed separately
Remove bootstrapToken field/getter/setter from EnvironmentEntity and drop the RuntimeConfig dependency from EnvironmentService. DeploymentService and AgentStatusService now use a TODO-api-key placeholder until the ApiKeyService wiring is complete. All test references to setBootstrapToken removed. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -54,7 +54,6 @@ public class BootstrapDataSeeder implements ApplicationRunner {
|
||||
String orgId = getField(config, "organizationId");
|
||||
String tenantName = getField(config, "tenantName");
|
||||
String tenantSlug = getField(config, "tenantSlug");
|
||||
String bootstrapToken = getField(config, "bootstrapToken");
|
||||
|
||||
if (orgId == null || tenantSlug == null) {
|
||||
log.info("Bootstrap file missing organizationId or tenantSlug — skipping");
|
||||
@@ -84,7 +83,6 @@ public class BootstrapDataSeeder implements ApplicationRunner {
|
||||
env.setTenantId(tenant.getId());
|
||||
env.setSlug("default");
|
||||
env.setDisplayName("Default");
|
||||
env.setBootstrapToken(bootstrapToken != null ? bootstrapToken : "default-bootstrap-token");
|
||||
env.setStatus(EnvironmentStatus.ACTIVE);
|
||||
environmentRepository.save(env);
|
||||
log.info("Created default environment for tenant '{}'", tenantSlug);
|
||||
|
||||
@@ -142,7 +142,7 @@ public class DeploymentService {
|
||||
containerName,
|
||||
runtimeConfig.getDockerNetwork(),
|
||||
Map.of(
|
||||
"CAMELEER_AUTH_TOKEN", env.getBootstrapToken(),
|
||||
"CAMELEER_AUTH_TOKEN", "TODO-api-key",
|
||||
"CAMELEER_EXPORT_TYPE", "HTTP",
|
||||
"CAMELEER_EXPORT_ENDPOINT", runtimeConfig.getCameleer3ServerEndpoint(),
|
||||
"CAMELEER_APPLICATION_ID", app.getSlug(),
|
||||
|
||||
@@ -21,9 +21,6 @@ public class EnvironmentEntity {
|
||||
@Column(name = "display_name", nullable = false)
|
||||
private String displayName;
|
||||
|
||||
@Column(name = "bootstrap_token", nullable = false, columnDefinition = "TEXT")
|
||||
private String bootstrapToken;
|
||||
|
||||
@Enumerated(EnumType.STRING)
|
||||
@Column(nullable = false, length = 20)
|
||||
private EnvironmentStatus status = EnvironmentStatus.ACTIVE;
|
||||
@@ -53,8 +50,6 @@ public class EnvironmentEntity {
|
||||
public void setSlug(String slug) { this.slug = slug; }
|
||||
public String getDisplayName() { return displayName; }
|
||||
public void setDisplayName(String displayName) { this.displayName = displayName; }
|
||||
public String getBootstrapToken() { return bootstrapToken; }
|
||||
public void setBootstrapToken(String bootstrapToken) { this.bootstrapToken = bootstrapToken; }
|
||||
public EnvironmentStatus getStatus() { return status; }
|
||||
public void setStatus(EnvironmentStatus status) { this.status = status; }
|
||||
public Instant getCreatedAt() { return createdAt; }
|
||||
|
||||
@@ -4,7 +4,6 @@ import net.siegeln.cameleer.saas.audit.AuditAction;
|
||||
import net.siegeln.cameleer.saas.audit.AuditService;
|
||||
import net.siegeln.cameleer.saas.license.LicenseDefaults;
|
||||
import net.siegeln.cameleer.saas.license.LicenseRepository;
|
||||
import net.siegeln.cameleer.saas.runtime.RuntimeConfig;
|
||||
import net.siegeln.cameleer.saas.tenant.Tier;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -18,16 +17,13 @@ public class EnvironmentService {
|
||||
private final EnvironmentRepository environmentRepository;
|
||||
private final LicenseRepository licenseRepository;
|
||||
private final AuditService auditService;
|
||||
private final RuntimeConfig runtimeConfig;
|
||||
|
||||
public EnvironmentService(EnvironmentRepository environmentRepository,
|
||||
LicenseRepository licenseRepository,
|
||||
AuditService auditService,
|
||||
RuntimeConfig runtimeConfig) {
|
||||
AuditService auditService) {
|
||||
this.environmentRepository = environmentRepository;
|
||||
this.licenseRepository = licenseRepository;
|
||||
this.auditService = auditService;
|
||||
this.runtimeConfig = runtimeConfig;
|
||||
}
|
||||
|
||||
public EnvironmentEntity create(UUID tenantId, String slug, String displayName, UUID actorId) {
|
||||
@@ -41,7 +37,6 @@ public class EnvironmentService {
|
||||
entity.setTenantId(tenantId);
|
||||
entity.setSlug(slug);
|
||||
entity.setDisplayName(displayName);
|
||||
entity.setBootstrapToken(runtimeConfig.getBootstrapToken());
|
||||
|
||||
var saved = environmentRepository.save(entity);
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@ public class AgentStatusService {
|
||||
@SuppressWarnings("unchecked")
|
||||
List<Map<String, Object>> agents = restClient.get()
|
||||
.uri("/api/v1/agents")
|
||||
.header("Authorization", "Bearer " + runtimeConfig.getBootstrapToken())
|
||||
.header("Authorization", "Bearer " + "TODO-api-key")
|
||||
.retrieve()
|
||||
.body(List.class);
|
||||
|
||||
|
||||
@@ -83,7 +83,6 @@ class AppControllerTest {
|
||||
env.setTenantId(tenantId);
|
||||
env.setSlug("default");
|
||||
env.setDisplayName("Default");
|
||||
env.setBootstrapToken("test-bootstrap-token");
|
||||
var savedEnv = environmentRepository.save(env);
|
||||
environmentId = savedEnv.getId();
|
||||
}
|
||||
|
||||
@@ -84,7 +84,6 @@ class DeploymentControllerTest {
|
||||
env.setTenantId(tenantId);
|
||||
env.setSlug("default");
|
||||
env.setDisplayName("Default");
|
||||
env.setBootstrapToken("test-bootstrap-token");
|
||||
var savedEnv = environmentRepository.save(env);
|
||||
|
||||
var app = new AppEntity();
|
||||
|
||||
@@ -92,7 +92,6 @@ class DeploymentServiceTest {
|
||||
env.setId(envId);
|
||||
env.setTenantId(tenantId);
|
||||
env.setSlug("prod");
|
||||
env.setBootstrapToken("tok-abc");
|
||||
|
||||
tenant = new TenantEntity();
|
||||
tenant.setSlug("acme");
|
||||
|
||||
@@ -4,7 +4,6 @@ import net.siegeln.cameleer.saas.audit.AuditAction;
|
||||
import net.siegeln.cameleer.saas.audit.AuditService;
|
||||
import net.siegeln.cameleer.saas.license.LicenseEntity;
|
||||
import net.siegeln.cameleer.saas.license.LicenseRepository;
|
||||
import net.siegeln.cameleer.saas.runtime.RuntimeConfig;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
@@ -34,14 +33,11 @@ class EnvironmentServiceTest {
|
||||
@Mock
|
||||
private AuditService auditService;
|
||||
|
||||
@Mock
|
||||
private RuntimeConfig runtimeConfig;
|
||||
|
||||
private EnvironmentService environmentService;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
environmentService = new EnvironmentService(environmentRepository, licenseRepository, auditService, runtimeConfig);
|
||||
environmentService = new EnvironmentService(environmentRepository, licenseRepository, auditService);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -56,7 +52,6 @@ class EnvironmentServiceTest {
|
||||
when(licenseRepository.findFirstByTenantIdAndRevokedAtIsNullOrderByCreatedAtDesc(tenantId))
|
||||
.thenReturn(Optional.of(license));
|
||||
when(environmentRepository.countByTenantId(tenantId)).thenReturn(0L);
|
||||
when(runtimeConfig.getBootstrapToken()).thenReturn("test-token");
|
||||
when(environmentRepository.save(any(EnvironmentEntity.class))).thenAnswer(inv -> inv.getArgument(0));
|
||||
|
||||
var result = environmentService.create(tenantId, "prod", "Production", actorId);
|
||||
@@ -64,7 +59,6 @@ class EnvironmentServiceTest {
|
||||
assertThat(result.getSlug()).isEqualTo("prod");
|
||||
assertThat(result.getDisplayName()).isEqualTo("Production");
|
||||
assertThat(result.getTenantId()).isEqualTo(tenantId);
|
||||
assertThat(result.getBootstrapToken()).isEqualTo("test-token");
|
||||
|
||||
var actionCaptor = ArgumentCaptor.forClass(AuditAction.class);
|
||||
verify(auditService).log(any(), any(), any(), actionCaptor.capture(), any(), any(), any(), any(), any());
|
||||
@@ -175,7 +169,6 @@ class EnvironmentServiceTest {
|
||||
when(licenseRepository.findFirstByTenantIdAndRevokedAtIsNullOrderByCreatedAtDesc(tenantId))
|
||||
.thenReturn(Optional.of(license));
|
||||
when(environmentRepository.countByTenantId(tenantId)).thenReturn(0L);
|
||||
when(runtimeConfig.getBootstrapToken()).thenReturn("test-token");
|
||||
when(environmentRepository.save(any(EnvironmentEntity.class))).thenAnswer(inv -> inv.getArgument(0));
|
||||
|
||||
var result = environmentService.createDefaultForTenant(tenantId);
|
||||
|
||||
Reference in New Issue
Block a user