refactor: rename Java packages com.cameleer.{server,license} → io.cameleer
Brand-aligned reverse-DNS: io.cameleer matches the owned cameleer.io
domain. Part of institutionalization prep — clean break, no compat shims.
Scope:
- 613 .java files: package + import declarations and directory layout
- 5 POMs: groupId for cameleer-server-parent and 4 modules; mainClass FQN
in cameleer-license-minter; internal inter-module dep coordinates
- .claude/rules/{core,app}-classes.md + CLAUDE.md: keep class/API maps in
sync per the maintenance rule in CLAUDE.md
Out of scope (intentionally preserved on com.cameleer):
- com.cameleer:cameleer-common — external dep from the agent repo
- Spring config namespaces (cameleer.server.*) — they're property keys,
not Java packages
Consumer heads-up:
- cameleer-saas pulls io.cameleer:cameleer-license-{api,minter} on next
sync; their POMs need the matching groupId bump.
Verification: mvn install -DskipITs (273 server-app unit tests pass under
io.cameleer.* package names; license-api / server-core / license-minter
modules all green). The repackage step's JAR-rename failure during the run
was a file lock from a co-running dev server, unrelated to the rename.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -5,7 +5,7 @@ paths:
|
||||
|
||||
# App Module Key Classes
|
||||
|
||||
`cameleer-server-app/src/main/java/com/cameleer/server/app/`
|
||||
`cameleer-server-app/src/main/java/io/cameleer/server/app/`
|
||||
|
||||
## URL taxonomy
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ paths:
|
||||
|
||||
# Core Module Key Classes
|
||||
|
||||
`cameleer-server-core/src/main/java/com/cameleer/server/core/`
|
||||
`cameleer-server-core/src/main/java/io/cameleer/server/core/`
|
||||
|
||||
## agent/ — Agent lifecycle and commands
|
||||
|
||||
@@ -47,9 +47,9 @@ paths:
|
||||
|
||||
## license/ — License domain (signed-token tier system)
|
||||
|
||||
The pure license **contract types** live in the separate `cameleer-license-api` module under package `com.cameleer.license` (no Spring, no server-runtime deps) so consumers like `cameleer-license-minter` and `cameleer-saas` can use them without inheriting server internals. Server-core only contains the runtime state holder (`LicenseGate`).
|
||||
The pure license **contract types** live in the separate `cameleer-license-api` module under package `io.cameleer.license` (no Spring, no server-runtime deps) so consumers like `cameleer-license-minter` and `cameleer-saas` can use them without inheriting server internals. Server-core only contains the runtime state holder (`LicenseGate`).
|
||||
|
||||
Contract types in `cameleer-license-api` (package `com.cameleer.license`):
|
||||
Contract types in `cameleer-license-api` (package `io.cameleer.license`):
|
||||
- `LicenseInfo` — record: `(UUID licenseId, String tenantId, String label, Map<String,Integer> limits, Instant issuedAt, Instant expiresAt, int gracePeriodDays)`. `isExpired()` true once `now > expiresAt + gracePeriodDays`; `isAfterRawExpiry()` true once `now > expiresAt`. Constructed via `LicenseValidator`; canonical ctor null-checks all required fields and rejects blank tenantId / negative grace.
|
||||
- `LicenseLimits` — typed limits container backed by `Map<String,Integer>`. `defaultsOnly()` returns the `DefaultTierLimits.DEFAULTS` view; `mergeOverDefaults(overrides)` produces the license-overrides UNION default tier. `get(String key)` returns the cap; throws `IllegalArgumentException` for unknown keys (programmer error). `isDefaultSourced(key, license)` reports whether a key fell through to the default tier.
|
||||
- `DefaultTierLimits` — immutable `LinkedHashMap` of constants for the no-license fallback tier: `max_environments=1, max_apps=3, max_agents=5, max_users=3, max_outbound_connections=1, max_alert_rules=2, max_total_cpu_millis=2000, max_total_memory_mb=2048, max_total_replicas=5, max_execution_retention_days=1, max_log_retention_days=1, max_metric_retention_days=1, max_jar_retention_count=3`.
|
||||
@@ -57,7 +57,7 @@ Contract types in `cameleer-license-api` (package `com.cameleer.license`):
|
||||
- `LicenseStateMachine` — pure classifier. `classify(LicenseInfo, String invalidReason)` returns `INVALID` if a reason is set, `ABSENT` if no license, `ACTIVE` if `now <= expiresAt`, `GRACE` if expired but within grace window, `EXPIRED` otherwise.
|
||||
- `LicenseState` — enum: `ABSENT, ACTIVE, GRACE, EXPIRED, INVALID`.
|
||||
|
||||
Runtime state holder in server-core (package `com.cameleer.server.core.license`):
|
||||
Runtime state holder in server-core (package `io.cameleer.server.core.license`):
|
||||
- `LicenseGate` — runtime state holder (thread-safe via `AtomicReference<Snapshot>`). `getCurrent()` returns the current `LicenseInfo` (null when ABSENT/INVALID); `getState()` delegates to `LicenseStateMachine.classify(...)`; `getEffectiveLimits()` returns license-overrides UNION defaults in `ACTIVE`/`GRACE`, defaults-only otherwise. `getInvalidReason()`, `load(LicenseInfo)`, `markInvalid(String reason)`, `clear()` are the mutators. `getLimit(key, defaultValue)` shorthand swallows unknown-key errors.
|
||||
|
||||
## search/ — Execution search and stats
|
||||
|
||||
@@ -14,7 +14,7 @@ Cameleer Server — observability server that receives, stores, and serves Camel
|
||||
|
||||
## Modules
|
||||
|
||||
- `cameleer-license-api` — pure license contract types (`LicenseInfo`, `LicenseValidator`, `LicenseState`, `LicenseStateMachine`, `LicenseLimits`, `DefaultTierLimits`) under package `com.cameleer.license`. No Spring or server-runtime deps; consumed by `cameleer-server-core` (validation/runtime gate) and `cameleer-license-minter` (vendor signing) — and transitively by `cameleer-saas` via the minter — without inheriting server internals.
|
||||
- `cameleer-license-api` — pure license contract types (`LicenseInfo`, `LicenseValidator`, `LicenseState`, `LicenseStateMachine`, `LicenseLimits`, `DefaultTierLimits`) under package `io.cameleer.license`. No Spring or server-runtime deps; consumed by `cameleer-server-core` (validation/runtime gate) and `cameleer-license-minter` (vendor signing) — and transitively by `cameleer-saas` via the minter — without inheriting server internals.
|
||||
- `cameleer-server-core` — domain logic, storage interfaces, services (no Spring dependencies)
|
||||
- `cameleer-server-app` — Spring Boot web app, REST controllers, SSE, persistence, Docker orchestration
|
||||
- `cameleer-license-minter` — vendor-only Ed25519 license signing library + CLI. Depends only on `cameleer-license-api` so consumers don't pull in `cameleer-server-core`.
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>com.cameleer</groupId>
|
||||
<groupId>io.cameleer</groupId>
|
||||
<artifactId>cameleer-server-parent</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cameleer.license;
|
||||
package io.cameleer.license;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedHashMap;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cameleer.license;
|
||||
package io.cameleer.license;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.Map;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cameleer.license;
|
||||
package io.cameleer.license;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedHashMap;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cameleer.license;
|
||||
package io.cameleer.license;
|
||||
|
||||
public enum LicenseState {
|
||||
ABSENT,
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cameleer.license;
|
||||
package io.cameleer.license;
|
||||
|
||||
public final class LicenseStateMachine {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cameleer.license;
|
||||
package io.cameleer.license;
|
||||
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cameleer.license;
|
||||
package io.cameleer.license;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cameleer.license;
|
||||
package io.cameleer.license;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cameleer.license;
|
||||
package io.cameleer.license;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cameleer.license;
|
||||
package io.cameleer.license;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>com.cameleer</groupId>
|
||||
<groupId>io.cameleer</groupId>
|
||||
<artifactId>cameleer-server-parent</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.cameleer</groupId>
|
||||
<groupId>io.cameleer</groupId>
|
||||
<artifactId>cameleer-license-api</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
@@ -59,7 +59,7 @@
|
||||
</goals>
|
||||
<configuration>
|
||||
<classifier>cli</classifier>
|
||||
<mainClass>com.cameleer.license.minter.cli.LicenseMinterCli</mainClass>
|
||||
<mainClass>io.cameleer.license.minter.cli.LicenseMinterCli</mainClass>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.cameleer.license.minter;
|
||||
package io.cameleer.license.minter;
|
||||
|
||||
import com.cameleer.license.LicenseInfo;
|
||||
import io.cameleer.license.LicenseInfo;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.SerializationFeature;
|
||||
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.cameleer.license.minter.cli;
|
||||
package io.cameleer.license.minter.cli;
|
||||
|
||||
import com.cameleer.license.minter.LicenseMinter;
|
||||
import com.cameleer.license.LicenseInfo;
|
||||
import io.cameleer.license.minter.LicenseMinter;
|
||||
import io.cameleer.license.LicenseInfo;
|
||||
|
||||
import java.io.PrintStream;
|
||||
import java.nio.file.Files;
|
||||
@@ -107,7 +107,7 @@ public final class LicenseMinterCli {
|
||||
}
|
||||
try {
|
||||
String pubB64 = Files.readString(Path.of(pubPath)).trim();
|
||||
new com.cameleer.license.LicenseValidator(pubB64, tenant).validate(token);
|
||||
new io.cameleer.license.LicenseValidator(pubB64, tenant).validate(token);
|
||||
out.println("verified ok");
|
||||
} catch (Exception ve) {
|
||||
err.println("VERIFY FAILED: " + ve.getMessage());
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.cameleer.license.minter;
|
||||
package io.cameleer.license.minter;
|
||||
|
||||
import com.cameleer.license.LicenseInfo;
|
||||
import com.cameleer.license.LicenseValidator;
|
||||
import io.cameleer.license.LicenseInfo;
|
||||
import io.cameleer.license.LicenseValidator;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.security.KeyPair;
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.cameleer.license.minter.cli;
|
||||
package io.cameleer.license.minter.cli;
|
||||
|
||||
import com.cameleer.license.LicenseValidator;
|
||||
import io.cameleer.license.LicenseValidator;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.io.TempDir;
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>com.cameleer</groupId>
|
||||
<groupId>io.cameleer</groupId>
|
||||
<artifactId>cameleer-server-parent</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
@@ -16,11 +16,11 @@
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.cameleer</groupId>
|
||||
<groupId>io.cameleer</groupId>
|
||||
<artifactId>cameleer-server-core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.cameleer</groupId>
|
||||
<groupId>io.cameleer</groupId>
|
||||
<artifactId>cameleer-license-minter</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<scope>test</scope>
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
package com.cameleer.server.app.alerting.eval;
|
||||
|
||||
import com.cameleer.server.core.alerting.AlertCondition;
|
||||
import com.cameleer.server.core.alerting.AlertRule;
|
||||
import com.cameleer.server.core.alerting.ConditionKind;
|
||||
|
||||
public interface ConditionEvaluator<C extends AlertCondition> {
|
||||
|
||||
ConditionKind kind();
|
||||
|
||||
EvalResult evaluate(C condition, AlertRule rule, EvalContext ctx);
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.cameleer.server.app;
|
||||
package io.cameleer.server.app;
|
||||
|
||||
import com.cameleer.server.app.config.AgentRegistryConfig;
|
||||
import com.cameleer.server.app.config.IngestionConfig;
|
||||
import io.cameleer.server.app.config.AgentRegistryConfig;
|
||||
import io.cameleer.server.app.config.IngestionConfig;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
@@ -13,11 +13,11 @@ import java.util.TimeZone;
|
||||
/**
|
||||
* Main entry point for the Cameleer Server application.
|
||||
* <p>
|
||||
* Scans {@code com.cameleer.server.app} and {@code com.cameleer.server.core} packages.
|
||||
* Scans {@code io.cameleer.server.app} and {@code io.cameleer.server.core} packages.
|
||||
*/
|
||||
@SpringBootApplication(scanBasePackages = {
|
||||
"com.cameleer.server.app",
|
||||
"com.cameleer.server.core"
|
||||
"io.cameleer.server.app",
|
||||
"io.cameleer.server.core"
|
||||
})
|
||||
@EnableAsync
|
||||
@EnableScheduling
|
||||
@@ -1,10 +1,10 @@
|
||||
package com.cameleer.server.app.agent;
|
||||
package io.cameleer.server.app.agent;
|
||||
|
||||
import com.cameleer.server.app.metrics.ServerMetrics;
|
||||
import com.cameleer.server.core.agent.AgentEventService;
|
||||
import com.cameleer.server.core.agent.AgentInfo;
|
||||
import com.cameleer.server.core.agent.AgentRegistryService;
|
||||
import com.cameleer.server.core.agent.AgentState;
|
||||
import io.cameleer.server.app.metrics.ServerMetrics;
|
||||
import io.cameleer.server.core.agent.AgentEventService;
|
||||
import io.cameleer.server.core.agent.AgentInfo;
|
||||
import io.cameleer.server.core.agent.AgentRegistryService;
|
||||
import io.cameleer.server.core.agent.AgentState;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
@@ -1,9 +1,9 @@
|
||||
package com.cameleer.server.app.agent;
|
||||
package io.cameleer.server.app.agent;
|
||||
|
||||
import com.cameleer.server.app.config.AgentRegistryConfig;
|
||||
import com.cameleer.server.core.agent.AgentCommand;
|
||||
import com.cameleer.server.core.agent.AgentEventListener;
|
||||
import com.cameleer.server.core.agent.AgentRegistryService;
|
||||
import io.cameleer.server.app.config.AgentRegistryConfig;
|
||||
import io.cameleer.server.core.agent.AgentCommand;
|
||||
import io.cameleer.server.core.agent.AgentEventListener;
|
||||
import io.cameleer.server.core.agent.AgentRegistryService;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import jakarta.annotation.PostConstruct;
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.cameleer.server.app.agent;
|
||||
package io.cameleer.server.app.agent;
|
||||
|
||||
import com.cameleer.server.core.security.Ed25519SigningService;
|
||||
import io.cameleer.server.core.security.Ed25519SigningService;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
@@ -1,12 +1,12 @@
|
||||
package com.cameleer.server.app.alerting.config;
|
||||
package io.cameleer.server.app.alerting.config;
|
||||
|
||||
import com.cameleer.server.app.alerting.eval.PerKindCircuitBreaker;
|
||||
import com.cameleer.server.app.alerting.metrics.AlertingMetrics;
|
||||
import com.cameleer.server.app.alerting.storage.*;
|
||||
import com.cameleer.server.core.alerting.AlertInstanceRepository;
|
||||
import com.cameleer.server.core.alerting.AlertNotificationRepository;
|
||||
import com.cameleer.server.core.alerting.AlertRuleRepository;
|
||||
import com.cameleer.server.core.alerting.AlertSilenceRepository;
|
||||
import io.cameleer.server.app.alerting.eval.PerKindCircuitBreaker;
|
||||
import io.cameleer.server.app.alerting.metrics.AlertingMetrics;
|
||||
import io.cameleer.server.app.alerting.storage.*;
|
||||
import io.cameleer.server.core.alerting.AlertInstanceRepository;
|
||||
import io.cameleer.server.core.alerting.AlertNotificationRepository;
|
||||
import io.cameleer.server.core.alerting.AlertRuleRepository;
|
||||
import io.cameleer.server.core.alerting.AlertSilenceRepository;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cameleer.server.app.alerting.config;
|
||||
package io.cameleer.server.app.alerting.config;
|
||||
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
package com.cameleer.server.app.alerting.controller;
|
||||
package io.cameleer.server.app.alerting.controller;
|
||||
|
||||
import com.cameleer.server.app.alerting.dto.AlertDto;
|
||||
import com.cameleer.server.app.alerting.dto.BulkIdsRequest;
|
||||
import com.cameleer.server.app.alerting.dto.UnreadCountResponse;
|
||||
import com.cameleer.server.app.alerting.notify.InAppInboxQuery;
|
||||
import com.cameleer.server.app.web.EnvPath;
|
||||
import com.cameleer.server.core.alerting.AlertInstance;
|
||||
import com.cameleer.server.core.alerting.AlertInstanceRepository;
|
||||
import com.cameleer.server.core.alerting.AlertSeverity;
|
||||
import com.cameleer.server.core.alerting.AlertState;
|
||||
import com.cameleer.server.core.runtime.Environment;
|
||||
import io.cameleer.server.app.alerting.dto.AlertDto;
|
||||
import io.cameleer.server.app.alerting.dto.BulkIdsRequest;
|
||||
import io.cameleer.server.app.alerting.dto.UnreadCountResponse;
|
||||
import io.cameleer.server.app.alerting.notify.InAppInboxQuery;
|
||||
import io.cameleer.server.app.web.EnvPath;
|
||||
import io.cameleer.server.core.alerting.AlertInstance;
|
||||
import io.cameleer.server.core.alerting.AlertInstanceRepository;
|
||||
import io.cameleer.server.core.alerting.AlertSeverity;
|
||||
import io.cameleer.server.core.alerting.AlertState;
|
||||
import io.cameleer.server.core.runtime.Environment;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.http.HttpStatus;
|
||||
@@ -1,11 +1,11 @@
|
||||
package com.cameleer.server.app.alerting.controller;
|
||||
package io.cameleer.server.app.alerting.controller;
|
||||
|
||||
import com.cameleer.server.app.alerting.dto.AlertNotificationDto;
|
||||
import com.cameleer.server.app.web.EnvPath;
|
||||
import com.cameleer.server.core.alerting.AlertNotification;
|
||||
import com.cameleer.server.core.alerting.AlertNotificationRepository;
|
||||
import com.cameleer.server.core.alerting.NotificationStatus;
|
||||
import com.cameleer.server.core.runtime.Environment;
|
||||
import io.cameleer.server.app.alerting.dto.AlertNotificationDto;
|
||||
import io.cameleer.server.app.web.EnvPath;
|
||||
import io.cameleer.server.core.alerting.AlertNotification;
|
||||
import io.cameleer.server.core.alerting.AlertNotificationRepository;
|
||||
import io.cameleer.server.core.alerting.NotificationStatus;
|
||||
import io.cameleer.server.core.runtime.Environment;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
@@ -1,33 +1,33 @@
|
||||
package com.cameleer.server.app.alerting.controller;
|
||||
package io.cameleer.server.app.alerting.controller;
|
||||
|
||||
import com.cameleer.server.app.alerting.dto.AlertRuleRequest;
|
||||
import com.cameleer.server.app.alerting.dto.AlertRuleResponse;
|
||||
import com.cameleer.server.app.alerting.dto.RenderPreviewRequest;
|
||||
import com.cameleer.server.app.alerting.dto.RenderPreviewResponse;
|
||||
import com.cameleer.server.app.alerting.dto.TestEvaluateRequest;
|
||||
import com.cameleer.server.app.alerting.dto.TestEvaluateResponse;
|
||||
import com.cameleer.server.app.alerting.dto.WebhookBindingRequest;
|
||||
import com.cameleer.server.app.alerting.eval.ConditionEvaluator;
|
||||
import com.cameleer.server.app.alerting.eval.EvalContext;
|
||||
import com.cameleer.server.app.alerting.eval.EvalResult;
|
||||
import com.cameleer.server.app.alerting.eval.TickCache;
|
||||
import com.cameleer.server.app.alerting.notify.MustacheRenderer;
|
||||
import com.cameleer.server.app.license.LicenseEnforcer;
|
||||
import com.cameleer.server.app.web.EnvPath;
|
||||
import com.cameleer.server.core.admin.AuditCategory;
|
||||
import com.cameleer.server.core.admin.AuditResult;
|
||||
import com.cameleer.server.core.admin.AuditService;
|
||||
import com.cameleer.server.core.alerting.AlertCondition;
|
||||
import com.cameleer.server.core.alerting.AlertRule;
|
||||
import com.cameleer.server.core.alerting.AlertRuleRepository;
|
||||
import com.cameleer.server.core.alerting.AlertRuleTarget;
|
||||
import com.cameleer.server.core.alerting.ConditionKind;
|
||||
import com.cameleer.server.core.alerting.ExchangeMatchCondition;
|
||||
import com.cameleer.server.core.alerting.FireMode;
|
||||
import com.cameleer.server.core.alerting.WebhookBinding;
|
||||
import com.cameleer.server.core.outbound.OutboundConnection;
|
||||
import com.cameleer.server.core.outbound.OutboundConnectionService;
|
||||
import com.cameleer.server.core.runtime.Environment;
|
||||
import io.cameleer.server.app.alerting.dto.AlertRuleRequest;
|
||||
import io.cameleer.server.app.alerting.dto.AlertRuleResponse;
|
||||
import io.cameleer.server.app.alerting.dto.RenderPreviewRequest;
|
||||
import io.cameleer.server.app.alerting.dto.RenderPreviewResponse;
|
||||
import io.cameleer.server.app.alerting.dto.TestEvaluateRequest;
|
||||
import io.cameleer.server.app.alerting.dto.TestEvaluateResponse;
|
||||
import io.cameleer.server.app.alerting.dto.WebhookBindingRequest;
|
||||
import io.cameleer.server.app.alerting.eval.ConditionEvaluator;
|
||||
import io.cameleer.server.app.alerting.eval.EvalContext;
|
||||
import io.cameleer.server.app.alerting.eval.EvalResult;
|
||||
import io.cameleer.server.app.alerting.eval.TickCache;
|
||||
import io.cameleer.server.app.alerting.notify.MustacheRenderer;
|
||||
import io.cameleer.server.app.license.LicenseEnforcer;
|
||||
import io.cameleer.server.app.web.EnvPath;
|
||||
import io.cameleer.server.core.admin.AuditCategory;
|
||||
import io.cameleer.server.core.admin.AuditResult;
|
||||
import io.cameleer.server.core.admin.AuditService;
|
||||
import io.cameleer.server.core.alerting.AlertCondition;
|
||||
import io.cameleer.server.core.alerting.AlertRule;
|
||||
import io.cameleer.server.core.alerting.AlertRuleRepository;
|
||||
import io.cameleer.server.core.alerting.AlertRuleTarget;
|
||||
import io.cameleer.server.core.alerting.ConditionKind;
|
||||
import io.cameleer.server.core.alerting.ExchangeMatchCondition;
|
||||
import io.cameleer.server.core.alerting.FireMode;
|
||||
import io.cameleer.server.core.alerting.WebhookBinding;
|
||||
import io.cameleer.server.core.outbound.OutboundConnection;
|
||||
import io.cameleer.server.core.outbound.OutboundConnectionService;
|
||||
import io.cameleer.server.core.runtime.Environment;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.validation.Valid;
|
||||
@@ -1,14 +1,14 @@
|
||||
package com.cameleer.server.app.alerting.controller;
|
||||
package io.cameleer.server.app.alerting.controller;
|
||||
|
||||
import com.cameleer.server.app.alerting.dto.AlertSilenceRequest;
|
||||
import com.cameleer.server.app.alerting.dto.AlertSilenceResponse;
|
||||
import com.cameleer.server.app.web.EnvPath;
|
||||
import com.cameleer.server.core.admin.AuditCategory;
|
||||
import com.cameleer.server.core.admin.AuditResult;
|
||||
import com.cameleer.server.core.admin.AuditService;
|
||||
import com.cameleer.server.core.alerting.AlertSilence;
|
||||
import com.cameleer.server.core.alerting.AlertSilenceRepository;
|
||||
import com.cameleer.server.core.runtime.Environment;
|
||||
import io.cameleer.server.app.alerting.dto.AlertSilenceRequest;
|
||||
import io.cameleer.server.app.alerting.dto.AlertSilenceResponse;
|
||||
import io.cameleer.server.app.web.EnvPath;
|
||||
import io.cameleer.server.core.admin.AuditCategory;
|
||||
import io.cameleer.server.core.admin.AuditResult;
|
||||
import io.cameleer.server.core.admin.AuditService;
|
||||
import io.cameleer.server.core.alerting.AlertSilence;
|
||||
import io.cameleer.server.core.alerting.AlertSilenceRepository;
|
||||
import io.cameleer.server.core.runtime.Environment;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.validation.Valid;
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.cameleer.server.app.alerting.dto;
|
||||
package io.cameleer.server.app.alerting.dto;
|
||||
|
||||
import com.cameleer.server.core.alerting.AlertInstance;
|
||||
import com.cameleer.server.core.alerting.AlertSeverity;
|
||||
import com.cameleer.server.core.alerting.AlertState;
|
||||
import io.cameleer.server.core.alerting.AlertInstance;
|
||||
import io.cameleer.server.core.alerting.AlertSeverity;
|
||||
import io.cameleer.server.core.alerting.AlertState;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.Map;
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.cameleer.server.app.alerting.dto;
|
||||
package io.cameleer.server.app.alerting.dto;
|
||||
|
||||
import com.cameleer.server.core.alerting.AlertNotification;
|
||||
import com.cameleer.server.core.alerting.NotificationStatus;
|
||||
import io.cameleer.server.core.alerting.AlertNotification;
|
||||
import io.cameleer.server.core.alerting.NotificationStatus;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.UUID;
|
||||
@@ -1,9 +1,9 @@
|
||||
package com.cameleer.server.app.alerting.dto;
|
||||
package io.cameleer.server.app.alerting.dto;
|
||||
|
||||
import com.cameleer.server.core.alerting.AlertCondition;
|
||||
import com.cameleer.server.core.alerting.AlertRuleTarget;
|
||||
import com.cameleer.server.core.alerting.AlertSeverity;
|
||||
import com.cameleer.server.core.alerting.ConditionKind;
|
||||
import io.cameleer.server.core.alerting.AlertCondition;
|
||||
import io.cameleer.server.core.alerting.AlertRuleTarget;
|
||||
import io.cameleer.server.core.alerting.AlertSeverity;
|
||||
import io.cameleer.server.core.alerting.ConditionKind;
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
@@ -1,10 +1,10 @@
|
||||
package com.cameleer.server.app.alerting.dto;
|
||||
package io.cameleer.server.app.alerting.dto;
|
||||
|
||||
import com.cameleer.server.core.alerting.AlertCondition;
|
||||
import com.cameleer.server.core.alerting.AlertRule;
|
||||
import com.cameleer.server.core.alerting.AlertRuleTarget;
|
||||
import com.cameleer.server.core.alerting.AlertSeverity;
|
||||
import com.cameleer.server.core.alerting.ConditionKind;
|
||||
import io.cameleer.server.core.alerting.AlertCondition;
|
||||
import io.cameleer.server.core.alerting.AlertRule;
|
||||
import io.cameleer.server.core.alerting.AlertRuleTarget;
|
||||
import io.cameleer.server.core.alerting.AlertSeverity;
|
||||
import io.cameleer.server.core.alerting.ConditionKind;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.List;
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.cameleer.server.app.alerting.dto;
|
||||
package io.cameleer.server.app.alerting.dto;
|
||||
|
||||
import com.cameleer.server.core.alerting.SilenceMatcher;
|
||||
import io.cameleer.server.core.alerting.SilenceMatcher;
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.cameleer.server.app.alerting.dto;
|
||||
package io.cameleer.server.app.alerting.dto;
|
||||
|
||||
import com.cameleer.server.core.alerting.AlertSilence;
|
||||
import com.cameleer.server.core.alerting.SilenceMatcher;
|
||||
import io.cameleer.server.core.alerting.AlertSilence;
|
||||
import io.cameleer.server.core.alerting.SilenceMatcher;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.UUID;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cameleer.server.app.alerting.dto;
|
||||
package io.cameleer.server.app.alerting.dto;
|
||||
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import jakarta.validation.constraints.Size;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cameleer.server.app.alerting.dto;
|
||||
package io.cameleer.server.app.alerting.dto;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
package com.cameleer.server.app.alerting.dto;
|
||||
package io.cameleer.server.app.alerting.dto;
|
||||
|
||||
public record RenderPreviewResponse(String title, String message) {}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cameleer.server.app.alerting.dto;
|
||||
package io.cameleer.server.app.alerting.dto;
|
||||
|
||||
/**
|
||||
* Request body for POST {id}/test-evaluate.
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.cameleer.server.app.alerting.dto;
|
||||
package io.cameleer.server.app.alerting.dto;
|
||||
|
||||
import com.cameleer.server.app.alerting.eval.EvalResult;
|
||||
import io.cameleer.server.app.alerting.eval.EvalResult;
|
||||
|
||||
/**
|
||||
* Result of a one-shot evaluator run against live data (does not persist any state).
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.cameleer.server.app.alerting.dto;
|
||||
package io.cameleer.server.app.alerting.dto;
|
||||
|
||||
import com.cameleer.server.core.alerting.AlertSeverity;
|
||||
import io.cameleer.server.core.alerting.AlertSeverity;
|
||||
|
||||
import java.util.EnumMap;
|
||||
import java.util.Map;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cameleer.server.app.alerting.dto;
|
||||
package io.cameleer.server.app.alerting.dto;
|
||||
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.cameleer.server.app.alerting.dto;
|
||||
package io.cameleer.server.app.alerting.dto;
|
||||
|
||||
import com.cameleer.server.core.alerting.WebhookBinding;
|
||||
import io.cameleer.server.core.alerting.WebhookBinding;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
@@ -1,13 +1,13 @@
|
||||
package com.cameleer.server.app.alerting.eval;
|
||||
package io.cameleer.server.app.alerting.eval;
|
||||
|
||||
import com.cameleer.server.core.agent.AgentEventRecord;
|
||||
import com.cameleer.server.core.agent.AgentEventRepository;
|
||||
import com.cameleer.server.core.alerting.AgentLifecycleCondition;
|
||||
import com.cameleer.server.core.alerting.AgentLifecycleEventType;
|
||||
import com.cameleer.server.core.alerting.AlertRule;
|
||||
import com.cameleer.server.core.alerting.AlertScope;
|
||||
import com.cameleer.server.core.alerting.ConditionKind;
|
||||
import com.cameleer.server.core.runtime.EnvironmentRepository;
|
||||
import io.cameleer.server.core.agent.AgentEventRecord;
|
||||
import io.cameleer.server.core.agent.AgentEventRepository;
|
||||
import io.cameleer.server.core.alerting.AgentLifecycleCondition;
|
||||
import io.cameleer.server.core.alerting.AgentLifecycleEventType;
|
||||
import io.cameleer.server.core.alerting.AlertRule;
|
||||
import io.cameleer.server.core.alerting.AlertScope;
|
||||
import io.cameleer.server.core.alerting.ConditionKind;
|
||||
import io.cameleer.server.core.runtime.EnvironmentRepository;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.time.Instant;
|
||||
@@ -1,12 +1,12 @@
|
||||
package com.cameleer.server.app.alerting.eval;
|
||||
package io.cameleer.server.app.alerting.eval;
|
||||
|
||||
import com.cameleer.server.core.agent.AgentInfo;
|
||||
import com.cameleer.server.core.agent.AgentRegistryService;
|
||||
import com.cameleer.server.core.agent.AgentState;
|
||||
import com.cameleer.server.core.alerting.AgentStateCondition;
|
||||
import com.cameleer.server.core.alerting.AlertRule;
|
||||
import com.cameleer.server.core.alerting.AlertScope;
|
||||
import com.cameleer.server.core.alerting.ConditionKind;
|
||||
import io.cameleer.server.core.agent.AgentInfo;
|
||||
import io.cameleer.server.core.agent.AgentRegistryService;
|
||||
import io.cameleer.server.core.agent.AgentState;
|
||||
import io.cameleer.server.core.alerting.AgentStateCondition;
|
||||
import io.cameleer.server.core.alerting.AlertRule;
|
||||
import io.cameleer.server.core.alerting.AlertScope;
|
||||
import io.cameleer.server.core.alerting.ConditionKind;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.time.Instant;
|
||||
@@ -1,12 +1,12 @@
|
||||
package com.cameleer.server.app.alerting.eval;
|
||||
package io.cameleer.server.app.alerting.eval;
|
||||
|
||||
import com.cameleer.server.app.alerting.config.AlertingProperties;
|
||||
import com.cameleer.server.app.alerting.metrics.AlertingMetrics;
|
||||
import com.cameleer.server.app.alerting.notify.MustacheRenderer;
|
||||
import com.cameleer.server.app.alerting.notify.NotificationContextBuilder;
|
||||
import com.cameleer.server.core.alerting.*;
|
||||
import com.cameleer.server.core.runtime.Environment;
|
||||
import com.cameleer.server.core.runtime.EnvironmentRepository;
|
||||
import io.cameleer.server.app.alerting.config.AlertingProperties;
|
||||
import io.cameleer.server.app.alerting.metrics.AlertingMetrics;
|
||||
import io.cameleer.server.app.alerting.notify.MustacheRenderer;
|
||||
import io.cameleer.server.app.alerting.notify.NotificationContextBuilder;
|
||||
import io.cameleer.server.core.alerting.*;
|
||||
import io.cameleer.server.core.runtime.Environment;
|
||||
import io.cameleer.server.core.runtime.EnvironmentRepository;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@@ -1,11 +1,11 @@
|
||||
package com.cameleer.server.app.alerting.eval;
|
||||
package io.cameleer.server.app.alerting.eval;
|
||||
|
||||
import com.cameleer.server.core.alerting.AlertInstance;
|
||||
import com.cameleer.server.core.alerting.AlertRule;
|
||||
import com.cameleer.server.core.alerting.AlertRuleTarget;
|
||||
import com.cameleer.server.core.alerting.AlertSeverity;
|
||||
import com.cameleer.server.core.alerting.AlertState;
|
||||
import com.cameleer.server.core.alerting.TargetKind;
|
||||
import io.cameleer.server.core.alerting.AlertInstance;
|
||||
import io.cameleer.server.core.alerting.AlertRule;
|
||||
import io.cameleer.server.core.alerting.AlertRuleTarget;
|
||||
import io.cameleer.server.core.alerting.AlertSeverity;
|
||||
import io.cameleer.server.core.alerting.AlertState;
|
||||
import io.cameleer.server.core.alerting.TargetKind;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.List;
|
||||
@@ -1,10 +1,10 @@
|
||||
package com.cameleer.server.app.alerting.eval;
|
||||
package io.cameleer.server.app.alerting.eval;
|
||||
|
||||
import com.cameleer.server.app.alerting.notify.MustacheRenderer;
|
||||
import com.cameleer.server.app.alerting.notify.NotificationContextBuilder;
|
||||
import com.cameleer.server.core.alerting.*;
|
||||
import com.cameleer.server.core.runtime.Environment;
|
||||
import com.cameleer.server.core.runtime.EnvironmentRepository;
|
||||
import io.cameleer.server.app.alerting.notify.MustacheRenderer;
|
||||
import io.cameleer.server.app.alerting.notify.NotificationContextBuilder;
|
||||
import io.cameleer.server.core.alerting.*;
|
||||
import io.cameleer.server.core.runtime.Environment;
|
||||
import io.cameleer.server.core.runtime.EnvironmentRepository;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@@ -0,0 +1,12 @@
|
||||
package io.cameleer.server.app.alerting.eval;
|
||||
|
||||
import io.cameleer.server.core.alerting.AlertCondition;
|
||||
import io.cameleer.server.core.alerting.AlertRule;
|
||||
import io.cameleer.server.core.alerting.ConditionKind;
|
||||
|
||||
public interface ConditionEvaluator<C extends AlertCondition> {
|
||||
|
||||
ConditionKind kind();
|
||||
|
||||
EvalResult evaluate(C condition, AlertRule rule, EvalContext ctx);
|
||||
}
|
||||
@@ -1,12 +1,12 @@
|
||||
package com.cameleer.server.app.alerting.eval;
|
||||
package io.cameleer.server.app.alerting.eval;
|
||||
|
||||
import com.cameleer.server.core.alerting.AlertRule;
|
||||
import com.cameleer.server.core.alerting.ConditionKind;
|
||||
import com.cameleer.server.core.alerting.DeploymentStateCondition;
|
||||
import com.cameleer.server.core.runtime.App;
|
||||
import com.cameleer.server.core.runtime.AppRepository;
|
||||
import com.cameleer.server.core.runtime.Deployment;
|
||||
import com.cameleer.server.core.runtime.DeploymentRepository;
|
||||
import io.cameleer.server.core.alerting.AlertRule;
|
||||
import io.cameleer.server.core.alerting.ConditionKind;
|
||||
import io.cameleer.server.core.alerting.DeploymentStateCondition;
|
||||
import io.cameleer.server.core.runtime.App;
|
||||
import io.cameleer.server.core.runtime.AppRepository;
|
||||
import io.cameleer.server.core.runtime.Deployment;
|
||||
import io.cameleer.server.core.runtime.DeploymentRepository;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cameleer.server.app.alerting.eval;
|
||||
package io.cameleer.server.app.alerting.eval;
|
||||
|
||||
import java.time.Instant;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cameleer.server.app.alerting.eval;
|
||||
package io.cameleer.server.app.alerting.eval;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -1,16 +1,16 @@
|
||||
package com.cameleer.server.app.alerting.eval;
|
||||
package io.cameleer.server.app.alerting.eval;
|
||||
|
||||
import com.cameleer.server.app.alerting.config.AlertingProperties;
|
||||
import com.cameleer.server.app.search.ClickHouseSearchIndex;
|
||||
import com.cameleer.server.core.alerting.AlertMatchSpec;
|
||||
import com.cameleer.server.core.alerting.AlertRule;
|
||||
import com.cameleer.server.core.alerting.ConditionKind;
|
||||
import com.cameleer.server.core.alerting.ExchangeMatchCondition;
|
||||
import com.cameleer.server.core.alerting.FireMode;
|
||||
import com.cameleer.server.core.runtime.EnvironmentRepository;
|
||||
import com.cameleer.server.core.search.ExecutionSummary;
|
||||
import com.cameleer.server.core.search.SearchRequest;
|
||||
import com.cameleer.server.core.search.SearchResult;
|
||||
import io.cameleer.server.app.alerting.config.AlertingProperties;
|
||||
import io.cameleer.server.app.search.ClickHouseSearchIndex;
|
||||
import io.cameleer.server.core.alerting.AlertMatchSpec;
|
||||
import io.cameleer.server.core.alerting.AlertRule;
|
||||
import io.cameleer.server.core.alerting.ConditionKind;
|
||||
import io.cameleer.server.core.alerting.ExchangeMatchCondition;
|
||||
import io.cameleer.server.core.alerting.FireMode;
|
||||
import io.cameleer.server.core.runtime.EnvironmentRepository;
|
||||
import io.cameleer.server.core.search.ExecutionSummary;
|
||||
import io.cameleer.server.core.search.SearchRequest;
|
||||
import io.cameleer.server.core.search.SearchResult;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.time.Instant;
|
||||
@@ -1,11 +1,11 @@
|
||||
package com.cameleer.server.app.alerting.eval;
|
||||
package io.cameleer.server.app.alerting.eval;
|
||||
|
||||
import com.cameleer.server.core.alerting.AggregationOp;
|
||||
import com.cameleer.server.core.alerting.AlertRule;
|
||||
import com.cameleer.server.core.alerting.ConditionKind;
|
||||
import com.cameleer.server.core.alerting.JvmMetricCondition;
|
||||
import com.cameleer.server.core.storage.MetricsQueryStore;
|
||||
import com.cameleer.server.core.storage.model.MetricTimeSeries;
|
||||
import io.cameleer.server.core.alerting.AggregationOp;
|
||||
import io.cameleer.server.core.alerting.AlertRule;
|
||||
import io.cameleer.server.core.alerting.ConditionKind;
|
||||
import io.cameleer.server.core.alerting.JvmMetricCondition;
|
||||
import io.cameleer.server.core.storage.MetricsQueryStore;
|
||||
import io.cameleer.server.core.storage.model.MetricTimeSeries;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
@@ -1,11 +1,11 @@
|
||||
package com.cameleer.server.app.alerting.eval;
|
||||
package io.cameleer.server.app.alerting.eval;
|
||||
|
||||
import com.cameleer.server.app.search.ClickHouseLogStore;
|
||||
import com.cameleer.server.core.alerting.AlertRule;
|
||||
import com.cameleer.server.core.alerting.ConditionKind;
|
||||
import com.cameleer.server.core.alerting.LogPatternCondition;
|
||||
import com.cameleer.server.core.runtime.EnvironmentRepository;
|
||||
import com.cameleer.server.core.search.LogSearchRequest;
|
||||
import io.cameleer.server.app.search.ClickHouseLogStore;
|
||||
import io.cameleer.server.core.alerting.AlertRule;
|
||||
import io.cameleer.server.core.alerting.ConditionKind;
|
||||
import io.cameleer.server.core.alerting.LogPatternCondition;
|
||||
import io.cameleer.server.core.runtime.EnvironmentRepository;
|
||||
import io.cameleer.server.core.search.LogSearchRequest;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.time.Instant;
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.cameleer.server.app.alerting.eval;
|
||||
package io.cameleer.server.app.alerting.eval;
|
||||
|
||||
import com.cameleer.server.app.alerting.metrics.AlertingMetrics;
|
||||
import com.cameleer.server.core.alerting.ConditionKind;
|
||||
import io.cameleer.server.app.alerting.metrics.AlertingMetrics;
|
||||
import io.cameleer.server.core.alerting.ConditionKind;
|
||||
|
||||
import java.time.Clock;
|
||||
import java.time.Duration;
|
||||
@@ -1,11 +1,11 @@
|
||||
package com.cameleer.server.app.alerting.eval;
|
||||
package io.cameleer.server.app.alerting.eval;
|
||||
|
||||
import com.cameleer.server.core.alerting.AlertRule;
|
||||
import com.cameleer.server.core.alerting.ConditionKind;
|
||||
import com.cameleer.server.core.alerting.RouteMetricCondition;
|
||||
import com.cameleer.server.core.runtime.EnvironmentRepository;
|
||||
import com.cameleer.server.core.search.ExecutionStats;
|
||||
import com.cameleer.server.core.storage.StatsStore;
|
||||
import io.cameleer.server.core.alerting.AlertRule;
|
||||
import io.cameleer.server.core.alerting.ConditionKind;
|
||||
import io.cameleer.server.core.alerting.RouteMetricCondition;
|
||||
import io.cameleer.server.core.runtime.EnvironmentRepository;
|
||||
import io.cameleer.server.core.search.ExecutionStats;
|
||||
import io.cameleer.server.core.storage.StatsStore;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.time.Instant;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cameleer.server.app.alerting.eval;
|
||||
package io.cameleer.server.app.alerting.eval;
|
||||
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.function.Supplier;
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.cameleer.server.app.alerting.metrics;
|
||||
package io.cameleer.server.app.alerting.metrics;
|
||||
|
||||
import com.cameleer.server.core.alerting.AlertState;
|
||||
import com.cameleer.server.core.alerting.ConditionKind;
|
||||
import com.cameleer.server.core.alerting.NotificationStatus;
|
||||
import io.cameleer.server.core.alerting.AlertState;
|
||||
import io.cameleer.server.core.alerting.ConditionKind;
|
||||
import io.cameleer.server.core.alerting.NotificationStatus;
|
||||
import io.micrometer.core.instrument.Counter;
|
||||
import io.micrometer.core.instrument.Gauge;
|
||||
import io.micrometer.core.instrument.MeterRegistry;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cameleer.server.app.alerting.notify;
|
||||
package io.cameleer.server.app.alerting.notify;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package com.cameleer.server.app.alerting.notify;
|
||||
package io.cameleer.server.app.alerting.notify;
|
||||
|
||||
import com.cameleer.server.app.alerting.dto.UnreadCountResponse;
|
||||
import com.cameleer.server.core.alerting.AlertInstance;
|
||||
import com.cameleer.server.core.alerting.AlertInstanceRepository;
|
||||
import com.cameleer.server.core.alerting.AlertSeverity;
|
||||
import com.cameleer.server.core.alerting.AlertState;
|
||||
import com.cameleer.server.core.rbac.RbacService;
|
||||
import io.cameleer.server.app.alerting.dto.UnreadCountResponse;
|
||||
import io.cameleer.server.core.alerting.AlertInstance;
|
||||
import io.cameleer.server.core.alerting.AlertInstanceRepository;
|
||||
import io.cameleer.server.core.alerting.AlertSeverity;
|
||||
import io.cameleer.server.core.alerting.AlertState;
|
||||
import io.cameleer.server.core.rbac.RbacService;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.time.Clock;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cameleer.server.app.alerting.notify;
|
||||
package io.cameleer.server.app.alerting.notify;
|
||||
|
||||
import com.samskivert.mustache.Mustache;
|
||||
import org.slf4j.Logger;
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.cameleer.server.app.alerting.notify;
|
||||
package io.cameleer.server.app.alerting.notify;
|
||||
|
||||
import com.cameleer.server.core.alerting.AlertInstance;
|
||||
import com.cameleer.server.core.alerting.AlertRule;
|
||||
import com.cameleer.server.core.runtime.Environment;
|
||||
import io.cameleer.server.core.alerting.AlertInstance;
|
||||
import io.cameleer.server.core.alerting.AlertRule;
|
||||
import io.cameleer.server.core.runtime.Environment;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
@@ -1,11 +1,11 @@
|
||||
package com.cameleer.server.app.alerting.notify;
|
||||
package io.cameleer.server.app.alerting.notify;
|
||||
|
||||
import com.cameleer.server.app.alerting.config.AlertingProperties;
|
||||
import com.cameleer.server.app.alerting.metrics.AlertingMetrics;
|
||||
import com.cameleer.server.core.alerting.*;
|
||||
import com.cameleer.server.core.outbound.OutboundConnectionRepository;
|
||||
import com.cameleer.server.core.runtime.Environment;
|
||||
import com.cameleer.server.core.runtime.EnvironmentRepository;
|
||||
import io.cameleer.server.app.alerting.config.AlertingProperties;
|
||||
import io.cameleer.server.app.alerting.metrics.AlertingMetrics;
|
||||
import io.cameleer.server.core.alerting.*;
|
||||
import io.cameleer.server.core.outbound.OutboundConnectionRepository;
|
||||
import io.cameleer.server.core.runtime.Environment;
|
||||
import io.cameleer.server.core.runtime.EnvironmentRepository;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
@@ -23,7 +23,7 @@ import java.util.Map;
|
||||
* Claim-polling outbox loop that dispatches {@link AlertNotification} records.
|
||||
* <p>
|
||||
* On each tick, claims a batch of due notifications, resolves the backing
|
||||
* {@link AlertInstance} and {@link com.cameleer.server.core.outbound.OutboundConnection},
|
||||
* {@link AlertInstance} and {@link io.cameleer.server.core.outbound.OutboundConnection},
|
||||
* checks active silences, delegates to {@link WebhookDispatcher}, and persists the outcome.
|
||||
* <p>
|
||||
* Retry backoff: {@code retryAfter × attempts} (30 s, 60 s, 90 s, …).
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.cameleer.server.app.alerting.notify;
|
||||
package io.cameleer.server.app.alerting.notify;
|
||||
|
||||
import com.cameleer.server.core.alerting.AlertInstance;
|
||||
import com.cameleer.server.core.alerting.AlertRule;
|
||||
import com.cameleer.server.core.alerting.SilenceMatcher;
|
||||
import io.cameleer.server.core.alerting.AlertInstance;
|
||||
import io.cameleer.server.core.alerting.AlertRule;
|
||||
import io.cameleer.server.core.alerting.SilenceMatcher;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
@@ -1,16 +1,16 @@
|
||||
package com.cameleer.server.app.alerting.notify;
|
||||
package io.cameleer.server.app.alerting.notify;
|
||||
|
||||
import com.cameleer.server.app.alerting.config.AlertingProperties;
|
||||
import com.cameleer.server.app.outbound.crypto.SecretCipher;
|
||||
import com.cameleer.server.core.alerting.AlertInstance;
|
||||
import com.cameleer.server.core.alerting.AlertNotification;
|
||||
import com.cameleer.server.core.alerting.AlertRule;
|
||||
import com.cameleer.server.core.alerting.NotificationStatus;
|
||||
import com.cameleer.server.core.alerting.WebhookBinding;
|
||||
import com.cameleer.server.core.http.OutboundHttpClientFactory;
|
||||
import com.cameleer.server.core.http.OutboundHttpRequestContext;
|
||||
import com.cameleer.server.core.outbound.OutboundConnection;
|
||||
import com.cameleer.server.core.outbound.OutboundMethod;
|
||||
import io.cameleer.server.app.alerting.config.AlertingProperties;
|
||||
import io.cameleer.server.app.outbound.crypto.SecretCipher;
|
||||
import io.cameleer.server.core.alerting.AlertInstance;
|
||||
import io.cameleer.server.core.alerting.AlertNotification;
|
||||
import io.cameleer.server.core.alerting.AlertRule;
|
||||
import io.cameleer.server.core.alerting.NotificationStatus;
|
||||
import io.cameleer.server.core.alerting.WebhookBinding;
|
||||
import io.cameleer.server.core.http.OutboundHttpClientFactory;
|
||||
import io.cameleer.server.core.http.OutboundHttpRequestContext;
|
||||
import io.cameleer.server.core.outbound.OutboundConnection;
|
||||
import io.cameleer.server.core.outbound.OutboundMethod;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.apache.hc.client5.http.classic.methods.HttpPatch;
|
||||
import org.apache.hc.client5.http.classic.methods.HttpPost;
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.cameleer.server.app.alerting.retention;
|
||||
package io.cameleer.server.app.alerting.retention;
|
||||
|
||||
import com.cameleer.server.app.alerting.config.AlertingProperties;
|
||||
import com.cameleer.server.core.alerting.AlertInstanceRepository;
|
||||
import com.cameleer.server.core.alerting.AlertNotificationRepository;
|
||||
import io.cameleer.server.app.alerting.config.AlertingProperties;
|
||||
import io.cameleer.server.core.alerting.AlertInstanceRepository;
|
||||
import io.cameleer.server.core.alerting.AlertNotificationRepository;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
@@ -15,9 +15,9 @@ import java.time.temporal.ChronoUnit;
|
||||
/**
|
||||
* Nightly retention job for alerting data.
|
||||
* <p>
|
||||
* Deletes RESOLVED {@link com.cameleer.server.core.alerting.AlertInstance} rows older than
|
||||
* Deletes RESOLVED {@link io.cameleer.server.core.alerting.AlertInstance} rows older than
|
||||
* {@code cameleer.server.alerting.eventRetentionDays} and DELIVERED/FAILED
|
||||
* {@link com.cameleer.server.core.alerting.AlertNotification} rows older than
|
||||
* {@link io.cameleer.server.core.alerting.AlertNotification} rows older than
|
||||
* {@code cameleer.server.alerting.notificationRetentionDays}.
|
||||
* <p>
|
||||
* Duplicate runs across replicas are tolerable — the DELETEs are idempotent.
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.cameleer.server.app.alerting.storage;
|
||||
package io.cameleer.server.app.alerting.storage;
|
||||
|
||||
import com.cameleer.server.core.alerting.*;
|
||||
import io.cameleer.server.core.alerting.*;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.slf4j.Logger;
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.cameleer.server.app.alerting.storage;
|
||||
package io.cameleer.server.app.alerting.storage;
|
||||
|
||||
import com.cameleer.server.core.alerting.AlertNotification;
|
||||
import com.cameleer.server.core.alerting.AlertNotificationRepository;
|
||||
import com.cameleer.server.core.alerting.NotificationStatus;
|
||||
import io.cameleer.server.core.alerting.AlertNotification;
|
||||
import io.cameleer.server.core.alerting.AlertNotificationRepository;
|
||||
import io.cameleer.server.core.alerting.NotificationStatus;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.cameleer.server.app.alerting.storage;
|
||||
package io.cameleer.server.app.alerting.storage;
|
||||
|
||||
import com.cameleer.server.core.alerting.*;
|
||||
import io.cameleer.server.core.alerting.*;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
@@ -1,9 +1,9 @@
|
||||
package com.cameleer.server.app.alerting.storage;
|
||||
package io.cameleer.server.app.alerting.storage;
|
||||
|
||||
import com.cameleer.server.core.alerting.AlertSilence;
|
||||
import com.cameleer.server.core.alerting.AlertSilenceRepository;
|
||||
import com.cameleer.server.core.alerting.AlertSeverity;
|
||||
import com.cameleer.server.core.alerting.SilenceMatcher;
|
||||
import io.cameleer.server.core.alerting.AlertSilence;
|
||||
import io.cameleer.server.core.alerting.AlertSilenceRepository;
|
||||
import io.cameleer.server.core.alerting.AlertSeverity;
|
||||
import io.cameleer.server.core.alerting.SilenceMatcher;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
import org.springframework.jdbc.core.RowMapper;
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.cameleer.server.app.analytics;
|
||||
package io.cameleer.server.app.analytics;
|
||||
|
||||
import com.cameleer.server.app.storage.ClickHouseUsageTracker;
|
||||
import io.cameleer.server.app.storage.ClickHouseUsageTracker;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.cameleer.server.app.analytics;
|
||||
package io.cameleer.server.app.analytics;
|
||||
|
||||
import com.cameleer.server.core.analytics.UsageEvent;
|
||||
import com.cameleer.server.core.analytics.UsageTracker;
|
||||
import io.cameleer.server.core.analytics.UsageEvent;
|
||||
import io.cameleer.server.core.analytics.UsageTracker;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import org.springframework.security.core.Authentication;
|
||||
@@ -1,9 +1,9 @@
|
||||
package com.cameleer.server.app.config;
|
||||
package io.cameleer.server.app.config;
|
||||
|
||||
import com.cameleer.server.core.agent.AgentEventRepository;
|
||||
import com.cameleer.server.core.agent.AgentEventService;
|
||||
import com.cameleer.server.core.agent.AgentRegistryService;
|
||||
import com.cameleer.server.core.agent.RouteStateRegistry;
|
||||
import io.cameleer.server.core.agent.AgentEventRepository;
|
||||
import io.cameleer.server.core.agent.AgentEventService;
|
||||
import io.cameleer.server.core.agent.AgentRegistryService;
|
||||
import io.cameleer.server.core.agent.RouteStateRegistry;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@@ -18,7 +18,7 @@ public class AgentRegistryBeanConfig {
|
||||
|
||||
@Bean
|
||||
public AgentRegistryService agentRegistryService(AgentRegistryConfig config,
|
||||
com.cameleer.server.app.license.LicenseEnforcer enforcer) {
|
||||
io.cameleer.server.app.license.LicenseEnforcer enforcer) {
|
||||
return new AgentRegistryService(
|
||||
config.getStaleThresholdMs(),
|
||||
config.getDeadThresholdMs(),
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cameleer.server.app.config;
|
||||
package io.cameleer.server.app.config;
|
||||
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cameleer.server.app.config;
|
||||
package io.cameleer.server.app.config;
|
||||
|
||||
import com.zaxxer.hikari.HikariDataSource;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cameleer.server.app.config;
|
||||
package io.cameleer.server.app.config;
|
||||
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cameleer.server.app.config;
|
||||
package io.cameleer.server.app.config;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.cameleer.server.app.config;
|
||||
package io.cameleer.server.app.config;
|
||||
|
||||
import com.cameleer.server.app.diagram.ElkDiagramRenderer;
|
||||
import com.cameleer.server.core.diagram.DiagramRenderer;
|
||||
import io.cameleer.server.app.diagram.ElkDiagramRenderer;
|
||||
import io.cameleer.server.core.diagram.DiagramRenderer;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package com.cameleer.server.app.config;
|
||||
package io.cameleer.server.app.config;
|
||||
|
||||
import com.cameleer.server.core.ingestion.BufferedLogEntry;
|
||||
import com.cameleer.server.core.ingestion.ChunkAccumulator;
|
||||
import com.cameleer.server.core.ingestion.MergedExecution;
|
||||
import com.cameleer.server.core.ingestion.WriteBuffer;
|
||||
import com.cameleer.server.core.storage.model.MetricsSnapshot;
|
||||
import io.cameleer.server.core.ingestion.BufferedLogEntry;
|
||||
import io.cameleer.server.core.ingestion.ChunkAccumulator;
|
||||
import io.cameleer.server.core.ingestion.MergedExecution;
|
||||
import io.cameleer.server.core.ingestion.WriteBuffer;
|
||||
import io.cameleer.server.core.storage.model.MetricsSnapshot;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@@ -12,7 +12,7 @@ import org.springframework.context.annotation.Configuration;
|
||||
* Creates write buffer beans for the ingestion pipeline.
|
||||
* <p>
|
||||
* Each {@link WriteBuffer} instance is shared between the
|
||||
* {@link com.cameleer.server.core.ingestion.IngestionService} (producer side)
|
||||
* {@link io.cameleer.server.core.ingestion.IngestionService} (producer side)
|
||||
* and the flush scheduler (consumer side).
|
||||
*/
|
||||
@Configuration
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cameleer.server.app.config;
|
||||
package io.cameleer.server.app.config;
|
||||
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package com.cameleer.server.app.config;
|
||||
package io.cameleer.server.app.config;
|
||||
|
||||
import com.cameleer.server.app.license.LicenseRepository;
|
||||
import com.cameleer.server.app.license.LicenseService;
|
||||
import com.cameleer.server.core.admin.AuditService;
|
||||
import com.cameleer.server.core.license.LicenseGate;
|
||||
import com.cameleer.license.LicenseInfo;
|
||||
import com.cameleer.license.LicenseValidator;
|
||||
import io.cameleer.server.app.license.LicenseRepository;
|
||||
import io.cameleer.server.app.license.LicenseService;
|
||||
import io.cameleer.server.core.admin.AuditService;
|
||||
import io.cameleer.server.core.license.LicenseGate;
|
||||
import io.cameleer.license.LicenseInfo;
|
||||
import io.cameleer.license.LicenseValidator;
|
||||
import jakarta.annotation.PostConstruct;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cameleer.server.app.config;
|
||||
package io.cameleer.server.app.config;
|
||||
|
||||
import io.swagger.v3.oas.annotations.enums.SecuritySchemeType;
|
||||
import io.swagger.v3.oas.annotations.security.SecurityScheme;
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.cameleer.server.app.config;
|
||||
package io.cameleer.server.app.config;
|
||||
|
||||
import com.cameleer.server.app.storage.PostgresClaimMappingRepository;
|
||||
import com.cameleer.server.core.rbac.ClaimMappingRepository;
|
||||
import com.cameleer.server.core.rbac.ClaimMappingService;
|
||||
import io.cameleer.server.app.storage.PostgresClaimMappingRepository;
|
||||
import io.cameleer.server.core.rbac.ClaimMappingRepository;
|
||||
import io.cameleer.server.core.rbac.ClaimMappingService;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
@@ -1,19 +1,19 @@
|
||||
package com.cameleer.server.app.config;
|
||||
package io.cameleer.server.app.config;
|
||||
|
||||
import com.cameleer.server.app.storage.FilesystemArtifactStore;
|
||||
import com.cameleer.server.app.storage.PostgresAppRepository;
|
||||
import com.cameleer.server.app.storage.PostgresAppVersionRepository;
|
||||
import com.cameleer.server.app.storage.PostgresDeploymentRepository;
|
||||
import com.cameleer.server.app.storage.PostgresEnvironmentRepository;
|
||||
import com.cameleer.server.core.runtime.AppRepository;
|
||||
import com.cameleer.server.core.runtime.AppService;
|
||||
import com.cameleer.server.core.runtime.AppVersionRepository;
|
||||
import com.cameleer.server.core.runtime.DeploymentRepository;
|
||||
import com.cameleer.server.core.runtime.DeploymentService;
|
||||
import com.cameleer.server.core.runtime.DirtyStateCalculator;
|
||||
import com.cameleer.server.core.runtime.EnvironmentRepository;
|
||||
import com.cameleer.server.core.runtime.EnvironmentService;
|
||||
import com.cameleer.server.core.storage.ArtifactStore;
|
||||
import io.cameleer.server.app.storage.FilesystemArtifactStore;
|
||||
import io.cameleer.server.app.storage.PostgresAppRepository;
|
||||
import io.cameleer.server.app.storage.PostgresAppVersionRepository;
|
||||
import io.cameleer.server.app.storage.PostgresDeploymentRepository;
|
||||
import io.cameleer.server.app.storage.PostgresEnvironmentRepository;
|
||||
import io.cameleer.server.core.runtime.AppRepository;
|
||||
import io.cameleer.server.core.runtime.AppService;
|
||||
import io.cameleer.server.core.runtime.AppVersionRepository;
|
||||
import io.cameleer.server.core.runtime.DeploymentRepository;
|
||||
import io.cameleer.server.core.runtime.DeploymentService;
|
||||
import io.cameleer.server.core.runtime.DirtyStateCalculator;
|
||||
import io.cameleer.server.core.runtime.EnvironmentRepository;
|
||||
import io.cameleer.server.core.runtime.EnvironmentService;
|
||||
import io.cameleer.server.core.storage.ArtifactStore;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
@@ -53,7 +53,7 @@ public class RuntimeBeanConfig {
|
||||
|
||||
@Bean
|
||||
public EnvironmentService environmentService(EnvironmentRepository repo,
|
||||
com.cameleer.server.app.license.LicenseEnforcer enforcer) {
|
||||
io.cameleer.server.app.license.LicenseEnforcer enforcer) {
|
||||
return new EnvironmentService(repo, current ->
|
||||
enforcer.assertWithinCap("max_environments", current, 1));
|
||||
}
|
||||
@@ -67,7 +67,7 @@ public class RuntimeBeanConfig {
|
||||
public AppService appService(AppRepository appRepo, AppVersionRepository versionRepo,
|
||||
ArtifactStore artifactStore,
|
||||
@Value("${cameleer.server.tenant.id:default}") String tenantId,
|
||||
com.cameleer.server.app.license.LicenseEnforcer enforcer) {
|
||||
io.cameleer.server.app.license.LicenseEnforcer enforcer) {
|
||||
return new AppService(appRepo, versionRepo, artifactStore, tenantId,
|
||||
current -> enforcer.assertWithinCap("max_apps", current, 1));
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.cameleer.server.app.config;
|
||||
package io.cameleer.server.app.config;
|
||||
|
||||
import com.cameleer.server.core.search.SearchService;
|
||||
import com.cameleer.server.core.storage.SearchIndex;
|
||||
import com.cameleer.server.core.storage.StatsStore;
|
||||
import io.cameleer.server.core.search.SearchService;
|
||||
import io.cameleer.server.core.storage.SearchIndex;
|
||||
import io.cameleer.server.core.storage.StatsStore;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cameleer.server.app.config;
|
||||
package io.cameleer.server.app.config;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.boot.actuate.health.Health;
|
||||
@@ -1,35 +1,35 @@
|
||||
package com.cameleer.server.app.config;
|
||||
package io.cameleer.server.app.config;
|
||||
|
||||
import com.cameleer.server.app.metrics.ServerMetrics;
|
||||
import com.cameleer.server.app.search.ClickHouseLogStore;
|
||||
import com.cameleer.server.app.storage.ClickHouseAgentEventRepository;
|
||||
import com.cameleer.server.app.storage.ClickHouseUsageTracker;
|
||||
import com.cameleer.server.app.storage.ClickHouseDiagramStore;
|
||||
import com.cameleer.server.app.storage.ClickHouseRouteCatalogStore;
|
||||
import com.cameleer.server.core.storage.RouteCatalogStore;
|
||||
import com.cameleer.server.app.storage.ClickHouseMetricsQueryStore;
|
||||
import com.cameleer.server.app.storage.ClickHouseMetricsStore;
|
||||
import com.cameleer.server.app.storage.ClickHouseServerMetricsQueryStore;
|
||||
import com.cameleer.server.app.storage.ClickHouseServerMetricsStore;
|
||||
import com.cameleer.server.app.storage.ClickHouseStatsStore;
|
||||
import com.cameleer.server.core.admin.AuditRepository;
|
||||
import com.cameleer.server.core.admin.AuditService;
|
||||
import com.cameleer.server.core.agent.AgentEventRepository;
|
||||
import com.cameleer.server.core.agent.AgentInfo;
|
||||
import com.cameleer.server.core.agent.AgentRegistryService;
|
||||
import com.cameleer.server.core.detail.DetailService;
|
||||
import com.cameleer.server.app.ingestion.ExecutionFlushScheduler;
|
||||
import com.cameleer.server.app.search.ClickHouseSearchIndex;
|
||||
import com.cameleer.server.app.storage.ClickHouseExecutionStore;
|
||||
import com.cameleer.server.core.ingestion.BufferedLogEntry;
|
||||
import com.cameleer.server.core.ingestion.ChunkAccumulator;
|
||||
import com.cameleer.server.core.ingestion.IngestionService;
|
||||
import com.cameleer.server.core.ingestion.MergedExecution;
|
||||
import com.cameleer.server.core.ingestion.WriteBuffer;
|
||||
import com.cameleer.server.core.storage.*;
|
||||
import com.cameleer.server.core.storage.LogIndex;
|
||||
import com.cameleer.server.core.storage.StatsStore;
|
||||
import com.cameleer.server.core.storage.model.MetricsSnapshot;
|
||||
import io.cameleer.server.app.metrics.ServerMetrics;
|
||||
import io.cameleer.server.app.search.ClickHouseLogStore;
|
||||
import io.cameleer.server.app.storage.ClickHouseAgentEventRepository;
|
||||
import io.cameleer.server.app.storage.ClickHouseUsageTracker;
|
||||
import io.cameleer.server.app.storage.ClickHouseDiagramStore;
|
||||
import io.cameleer.server.app.storage.ClickHouseRouteCatalogStore;
|
||||
import io.cameleer.server.core.storage.RouteCatalogStore;
|
||||
import io.cameleer.server.app.storage.ClickHouseMetricsQueryStore;
|
||||
import io.cameleer.server.app.storage.ClickHouseMetricsStore;
|
||||
import io.cameleer.server.app.storage.ClickHouseServerMetricsQueryStore;
|
||||
import io.cameleer.server.app.storage.ClickHouseServerMetricsStore;
|
||||
import io.cameleer.server.app.storage.ClickHouseStatsStore;
|
||||
import io.cameleer.server.core.admin.AuditRepository;
|
||||
import io.cameleer.server.core.admin.AuditService;
|
||||
import io.cameleer.server.core.agent.AgentEventRepository;
|
||||
import io.cameleer.server.core.agent.AgentInfo;
|
||||
import io.cameleer.server.core.agent.AgentRegistryService;
|
||||
import io.cameleer.server.core.detail.DetailService;
|
||||
import io.cameleer.server.app.ingestion.ExecutionFlushScheduler;
|
||||
import io.cameleer.server.app.search.ClickHouseSearchIndex;
|
||||
import io.cameleer.server.app.storage.ClickHouseExecutionStore;
|
||||
import io.cameleer.server.core.ingestion.BufferedLogEntry;
|
||||
import io.cameleer.server.core.ingestion.ChunkAccumulator;
|
||||
import io.cameleer.server.core.ingestion.IngestionService;
|
||||
import io.cameleer.server.core.ingestion.MergedExecution;
|
||||
import io.cameleer.server.core.ingestion.WriteBuffer;
|
||||
import io.cameleer.server.core.storage.*;
|
||||
import io.cameleer.server.core.storage.LogIndex;
|
||||
import io.cameleer.server.core.storage.StatsStore;
|
||||
import io.cameleer.server.core.storage.model.MetricsSnapshot;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
@@ -189,26 +189,26 @@ public class StorageBeanConfig {
|
||||
TenantProperties tenantProperties,
|
||||
@Qualifier("clickHouseJdbcTemplate") JdbcTemplate clickHouseJdbc) {
|
||||
return new ClickHouseUsageTracker(tenantProperties.getId(), clickHouseJdbc,
|
||||
new com.cameleer.server.core.ingestion.WriteBuffer<>(5000));
|
||||
new io.cameleer.server.core.ingestion.WriteBuffer<>(5000));
|
||||
}
|
||||
|
||||
@Bean
|
||||
public com.cameleer.server.app.analytics.UsageTrackingInterceptor usageTrackingInterceptor(
|
||||
public io.cameleer.server.app.analytics.UsageTrackingInterceptor usageTrackingInterceptor(
|
||||
ClickHouseUsageTracker usageTracker) {
|
||||
return new com.cameleer.server.app.analytics.UsageTrackingInterceptor(usageTracker);
|
||||
return new io.cameleer.server.app.analytics.UsageTrackingInterceptor(usageTracker);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public com.cameleer.server.app.analytics.UsageFlushScheduler usageFlushScheduler(
|
||||
public io.cameleer.server.app.analytics.UsageFlushScheduler usageFlushScheduler(
|
||||
ClickHouseUsageTracker usageTracker) {
|
||||
return new com.cameleer.server.app.analytics.UsageFlushScheduler(usageTracker);
|
||||
return new io.cameleer.server.app.analytics.UsageFlushScheduler(usageTracker);
|
||||
}
|
||||
|
||||
// ── License Repository ───────────────────────────────────────────
|
||||
|
||||
@Bean
|
||||
public com.cameleer.server.app.license.LicenseRepository licenseRepository(
|
||||
public io.cameleer.server.app.license.LicenseRepository licenseRepository(
|
||||
JdbcTemplate jdbcTemplate) {
|
||||
return new com.cameleer.server.app.license.PostgresLicenseRepository(jdbcTemplate);
|
||||
return new io.cameleer.server.app.license.PostgresLicenseRepository(jdbcTemplate);
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cameleer.server.app.config;
|
||||
package io.cameleer.server.app.config;
|
||||
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -1,9 +1,9 @@
|
||||
package com.cameleer.server.app.config;
|
||||
package io.cameleer.server.app.config;
|
||||
|
||||
import com.cameleer.server.app.analytics.UsageTrackingInterceptor;
|
||||
import com.cameleer.server.app.interceptor.AuditInterceptor;
|
||||
import com.cameleer.server.app.interceptor.ProtocolVersionInterceptor;
|
||||
import com.cameleer.server.app.web.EnvironmentPathResolver;
|
||||
import io.cameleer.server.app.analytics.UsageTrackingInterceptor;
|
||||
import io.cameleer.server.app.interceptor.AuditInterceptor;
|
||||
import io.cameleer.server.app.interceptor.ProtocolVersionInterceptor;
|
||||
import io.cameleer.server.app.web.EnvironmentPathResolver;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
|
||||
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
||||
@@ -1,23 +1,23 @@
|
||||
package com.cameleer.server.app.controller;
|
||||
package io.cameleer.server.app.controller;
|
||||
|
||||
import com.cameleer.server.app.agent.SseConnectionManager;
|
||||
import com.cameleer.server.app.dto.CommandAckRequest;
|
||||
import com.cameleer.server.app.dto.CommandBroadcastResponse;
|
||||
import com.cameleer.server.app.dto.CommandGroupResponse;
|
||||
import com.cameleer.server.app.dto.CommandRequest;
|
||||
import com.cameleer.server.app.dto.CommandSingleResponse;
|
||||
import com.cameleer.server.app.dto.ReplayRequest;
|
||||
import com.cameleer.server.app.dto.ReplayResponse;
|
||||
import com.cameleer.server.core.admin.AuditCategory;
|
||||
import com.cameleer.server.core.admin.AuditResult;
|
||||
import com.cameleer.server.core.admin.AuditService;
|
||||
import com.cameleer.server.core.agent.AgentCommand;
|
||||
import com.cameleer.server.core.agent.AgentEventService;
|
||||
import com.cameleer.server.core.agent.AgentInfo;
|
||||
import com.cameleer.server.core.agent.AgentRegistryService;
|
||||
import com.cameleer.server.core.agent.AgentState;
|
||||
import com.cameleer.server.core.agent.CommandReply;
|
||||
import com.cameleer.server.core.agent.CommandType;
|
||||
import io.cameleer.server.app.agent.SseConnectionManager;
|
||||
import io.cameleer.server.app.dto.CommandAckRequest;
|
||||
import io.cameleer.server.app.dto.CommandBroadcastResponse;
|
||||
import io.cameleer.server.app.dto.CommandGroupResponse;
|
||||
import io.cameleer.server.app.dto.CommandRequest;
|
||||
import io.cameleer.server.app.dto.CommandSingleResponse;
|
||||
import io.cameleer.server.app.dto.ReplayRequest;
|
||||
import io.cameleer.server.app.dto.ReplayResponse;
|
||||
import io.cameleer.server.core.admin.AuditCategory;
|
||||
import io.cameleer.server.core.admin.AuditResult;
|
||||
import io.cameleer.server.core.admin.AuditService;
|
||||
import io.cameleer.server.core.agent.AgentCommand;
|
||||
import io.cameleer.server.core.agent.AgentEventService;
|
||||
import io.cameleer.server.core.agent.AgentInfo;
|
||||
import io.cameleer.server.core.agent.AgentRegistryService;
|
||||
import io.cameleer.server.core.agent.AgentState;
|
||||
import io.cameleer.server.core.agent.CommandReply;
|
||||
import io.cameleer.server.core.agent.CommandType;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
@@ -1,15 +1,15 @@
|
||||
package com.cameleer.server.app.controller;
|
||||
package io.cameleer.server.app.controller;
|
||||
|
||||
import com.cameleer.common.model.ApplicationConfig;
|
||||
import com.cameleer.server.app.dto.AppConfigResponse;
|
||||
import com.cameleer.server.app.security.JwtAuthenticationFilter;
|
||||
import com.cameleer.server.app.storage.PostgresApplicationConfigRepository;
|
||||
import com.cameleer.server.core.admin.SensitiveKeysConfig;
|
||||
import com.cameleer.server.core.admin.SensitiveKeysMerger;
|
||||
import com.cameleer.server.core.admin.SensitiveKeysRepository;
|
||||
import com.cameleer.server.core.agent.AgentInfo;
|
||||
import com.cameleer.server.core.agent.AgentRegistryService;
|
||||
import com.cameleer.server.core.security.JwtService.JwtValidationResult;
|
||||
import io.cameleer.server.app.dto.AppConfigResponse;
|
||||
import io.cameleer.server.app.security.JwtAuthenticationFilter;
|
||||
import io.cameleer.server.app.storage.PostgresApplicationConfigRepository;
|
||||
import io.cameleer.server.core.admin.SensitiveKeysConfig;
|
||||
import io.cameleer.server.core.admin.SensitiveKeysMerger;
|
||||
import io.cameleer.server.core.admin.SensitiveKeysRepository;
|
||||
import io.cameleer.server.core.agent.AgentInfo;
|
||||
import io.cameleer.server.core.agent.AgentRegistryService;
|
||||
import io.cameleer.server.core.security.JwtService.JwtValidationResult;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
@@ -1,11 +1,11 @@
|
||||
package com.cameleer.server.app.controller;
|
||||
package io.cameleer.server.app.controller;
|
||||
|
||||
import com.cameleer.server.app.dto.AgentEventPageResponse;
|
||||
import com.cameleer.server.app.dto.AgentEventResponse;
|
||||
import com.cameleer.server.app.web.EnvPath;
|
||||
import com.cameleer.server.core.agent.AgentEventPage;
|
||||
import com.cameleer.server.core.agent.AgentEventService;
|
||||
import com.cameleer.server.core.runtime.Environment;
|
||||
import io.cameleer.server.app.dto.AgentEventPageResponse;
|
||||
import io.cameleer.server.app.dto.AgentEventResponse;
|
||||
import io.cameleer.server.app.web.EnvPath;
|
||||
import io.cameleer.server.core.agent.AgentEventPage;
|
||||
import io.cameleer.server.core.agent.AgentEventService;
|
||||
import io.cameleer.server.core.runtime.Environment;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.responses.ApiResponse;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
@@ -1,12 +1,12 @@
|
||||
package com.cameleer.server.app.controller;
|
||||
package io.cameleer.server.app.controller;
|
||||
|
||||
import com.cameleer.server.app.dto.AgentInstanceResponse;
|
||||
import com.cameleer.server.app.dto.ErrorResponse;
|
||||
import com.cameleer.server.app.web.EnvPath;
|
||||
import com.cameleer.server.core.agent.AgentInfo;
|
||||
import com.cameleer.server.core.agent.AgentRegistryService;
|
||||
import com.cameleer.server.core.agent.AgentState;
|
||||
import com.cameleer.server.core.runtime.Environment;
|
||||
import io.cameleer.server.app.dto.AgentInstanceResponse;
|
||||
import io.cameleer.server.app.dto.ErrorResponse;
|
||||
import io.cameleer.server.app.web.EnvPath;
|
||||
import io.cameleer.server.core.agent.AgentInfo;
|
||||
import io.cameleer.server.core.agent.AgentRegistryService;
|
||||
import io.cameleer.server.core.agent.AgentState;
|
||||
import io.cameleer.server.core.runtime.Environment;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.media.Content;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
@@ -1,13 +1,13 @@
|
||||
package com.cameleer.server.app.controller;
|
||||
package io.cameleer.server.app.controller;
|
||||
|
||||
import com.cameleer.server.app.dto.AgentMetricsResponse;
|
||||
import com.cameleer.server.app.dto.MetricBucket;
|
||||
import com.cameleer.server.app.web.EnvPath;
|
||||
import com.cameleer.server.core.agent.AgentInfo;
|
||||
import com.cameleer.server.core.agent.AgentRegistryService;
|
||||
import com.cameleer.server.core.runtime.Environment;
|
||||
import com.cameleer.server.core.storage.MetricsQueryStore;
|
||||
import com.cameleer.server.core.storage.model.MetricTimeSeries;
|
||||
import io.cameleer.server.app.dto.AgentMetricsResponse;
|
||||
import io.cameleer.server.app.dto.MetricBucket;
|
||||
import io.cameleer.server.app.web.EnvPath;
|
||||
import io.cameleer.server.core.agent.AgentInfo;
|
||||
import io.cameleer.server.core.agent.AgentRegistryService;
|
||||
import io.cameleer.server.core.runtime.Environment;
|
||||
import io.cameleer.server.core.storage.MetricsQueryStore;
|
||||
import io.cameleer.server.core.storage.model.MetricTimeSeries;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@@ -1,27 +1,27 @@
|
||||
package com.cameleer.server.app.controller;
|
||||
package io.cameleer.server.app.controller;
|
||||
|
||||
import com.cameleer.server.app.config.AgentRegistryConfig;
|
||||
import com.cameleer.server.app.dto.AgentInstanceResponse;
|
||||
import com.cameleer.server.app.dto.AgentRefreshRequest;
|
||||
import com.cameleer.server.app.dto.AgentRefreshResponse;
|
||||
import com.cameleer.server.app.dto.AgentRegistrationRequest;
|
||||
import com.cameleer.server.app.dto.AgentRegistrationResponse;
|
||||
import com.cameleer.server.app.dto.ErrorResponse;
|
||||
import io.cameleer.server.app.config.AgentRegistryConfig;
|
||||
import io.cameleer.server.app.dto.AgentInstanceResponse;
|
||||
import io.cameleer.server.app.dto.AgentRefreshRequest;
|
||||
import io.cameleer.server.app.dto.AgentRefreshResponse;
|
||||
import io.cameleer.server.app.dto.AgentRegistrationRequest;
|
||||
import io.cameleer.server.app.dto.AgentRegistrationResponse;
|
||||
import io.cameleer.server.app.dto.ErrorResponse;
|
||||
import com.cameleer.common.model.HeartbeatRequest;
|
||||
import com.cameleer.server.app.security.BootstrapTokenValidator;
|
||||
import com.cameleer.server.app.security.JwtAuthenticationFilter;
|
||||
import com.cameleer.server.core.admin.AuditCategory;
|
||||
import com.cameleer.server.core.admin.AuditResult;
|
||||
import com.cameleer.server.core.admin.AuditService;
|
||||
import com.cameleer.server.core.agent.AgentEventService;
|
||||
import com.cameleer.server.core.agent.AgentInfo;
|
||||
import com.cameleer.server.core.agent.AgentRegistryService;
|
||||
import com.cameleer.server.core.agent.AgentState;
|
||||
import com.cameleer.server.core.agent.RouteStateRegistry;
|
||||
import com.cameleer.server.core.security.Ed25519SigningService;
|
||||
import com.cameleer.server.core.storage.RouteCatalogStore;
|
||||
import com.cameleer.server.core.security.InvalidTokenException;
|
||||
import com.cameleer.server.core.security.JwtService;
|
||||
import io.cameleer.server.app.security.BootstrapTokenValidator;
|
||||
import io.cameleer.server.app.security.JwtAuthenticationFilter;
|
||||
import io.cameleer.server.core.admin.AuditCategory;
|
||||
import io.cameleer.server.core.admin.AuditResult;
|
||||
import io.cameleer.server.core.admin.AuditService;
|
||||
import io.cameleer.server.core.agent.AgentEventService;
|
||||
import io.cameleer.server.core.agent.AgentInfo;
|
||||
import io.cameleer.server.core.agent.AgentRegistryService;
|
||||
import io.cameleer.server.core.agent.AgentState;
|
||||
import io.cameleer.server.core.agent.RouteStateRegistry;
|
||||
import io.cameleer.server.core.security.Ed25519SigningService;
|
||||
import io.cameleer.server.core.storage.RouteCatalogStore;
|
||||
import io.cameleer.server.core.security.InvalidTokenException;
|
||||
import io.cameleer.server.core.security.JwtService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.media.Content;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
@@ -1,10 +1,10 @@
|
||||
package com.cameleer.server.app.controller;
|
||||
package io.cameleer.server.app.controller;
|
||||
|
||||
import com.cameleer.server.app.agent.SseConnectionManager;
|
||||
import com.cameleer.server.app.security.JwtAuthenticationFilter;
|
||||
import com.cameleer.server.core.agent.AgentInfo;
|
||||
import com.cameleer.server.core.agent.AgentRegistryService;
|
||||
import com.cameleer.server.core.security.JwtService;
|
||||
import io.cameleer.server.app.agent.SseConnectionManager;
|
||||
import io.cameleer.server.app.security.JwtAuthenticationFilter;
|
||||
import io.cameleer.server.core.agent.AgentInfo;
|
||||
import io.cameleer.server.core.agent.AgentRegistryService;
|
||||
import io.cameleer.server.core.security.JwtService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.responses.ApiResponse;
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user