Skip to content

Commit fdcf9dd

Browse files
Merge branch 'main' into add-custom-columns
2 parents 78bc79c + 38c8b19 commit fdcf9dd

File tree

14 files changed

+267
-20
lines changed

14 files changed

+267
-20
lines changed

Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ ureq = "2.12"
130130
url = "2.5"
131131
vergen = { version = "9.0", features = ["build", "cargo", "rustc", "si"] }
132132
vergen-gitcl = { version = "1.0", features = ["build", "cargo", "rustc", "si"] }
133-
zip = { version = "2.2", default-features = false, features = ["deflate"] }
133+
zip = { version = "2.3", default-features = false, features = ["deflate"] }
134134
anyhow = "1.0"
135135

136136
[dev-dependencies]

src/alerts/mod.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -886,6 +886,7 @@ pub struct AlertsInfo {
886886
low: u64,
887887
medium: u64,
888888
high: u64,
889+
critical: u64,
889890
}
890891

891892
// TODO: add RBAC
@@ -898,6 +899,7 @@ pub async fn get_alerts_info() -> Result<AlertsInfo, AlertError> {
898899
let mut low = 0;
899900
let mut medium = 0;
900901
let mut high = 0;
902+
let mut critical = 0;
901903

902904
for (_, alert) in alerts.iter() {
903905
total += 1;
@@ -911,7 +913,7 @@ pub async fn get_alerts_info() -> Result<AlertsInfo, AlertError> {
911913
Severity::Low => low += 1,
912914
Severity::Medium => medium += 1,
913915
Severity::High => high += 1,
914-
_ => {}
916+
Severity::Critical => critical += 1,
915917
}
916918
}
917919

@@ -923,5 +925,6 @@ pub async fn get_alerts_info() -> Result<AlertsInfo, AlertError> {
923925
low,
924926
medium,
925927
high,
928+
critical,
926929
})
927930
}

src/cli.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,14 @@ pub struct Options {
270270
)]
271271
pub row_group_size: usize,
272272

273+
#[arg(
274+
long,
275+
env = "P_EXECUTION_BATCH_SIZE",
276+
default_value = "20000",
277+
help = "batch size for query execution"
278+
)]
279+
pub execution_batch_size: usize,
280+
273281
#[arg(
274282
long = "compression-algo",
275283
env = "P_PARQUET_COMPRESSION_ALGO",

src/event/format/mod.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,19 @@ use super::{Event, DEFAULT_TIMESTAMP_KEY};
4040

4141
pub mod json;
4242

43-
static TIME_FIELD_NAME_PARTS: [&str; 2] = ["time", "date"];
43+
static TIME_FIELD_NAME_PARTS: [&str; 11] = [
44+
"time",
45+
"date",
46+
"timestamp",
47+
"created",
48+
"received",
49+
"ingested",
50+
"collected",
51+
"start",
52+
"end",
53+
"ts",
54+
"dt",
55+
];
4456
type EventSchema = Vec<Arc<Field>>;
4557

4658
/// Source of the logs, used to perform special processing for certain sources

src/handlers/http/modal/query_server.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,8 @@ impl ParseableServer for QueryServer {
7676
.service(
7777
web::scope(&prism_base_path())
7878
.service(Server::get_prism_home())
79-
.service(Server::get_prism_logstream()),
79+
.service(Server::get_prism_logstream())
80+
.service(Server::get_prism_datasets()),
8081
)
8182
.service(Server::get_generated());
8283
}

src/handlers/http/modal/server.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,8 @@ impl ParseableServer for Server {
9595
.service(
9696
web::scope(&prism_base_path())
9797
.service(Server::get_prism_home())
98-
.service(Server::get_prism_logstream()),
98+
.service(Server::get_prism_logstream())
99+
.service(Server::get_prism_datasets()),
99100
)
100101
.service(Self::get_ingest_otel_factory())
101102
.service(Self::get_generated());
@@ -180,6 +181,17 @@ impl Server {
180181
)
181182
}
182183

184+
pub fn get_prism_datasets() -> Scope {
185+
web::scope("/datasets").route(
186+
"",
187+
web::post()
188+
.to(http::prism_logstream::post_datasets)
189+
.authorize_for_stream(Action::GetStreamInfo)
190+
.authorize_for_stream(Action::GetStats)
191+
.authorize_for_stream(Action::GetRetention),
192+
)
193+
}
194+
183195
pub fn get_metrics_webscope() -> Scope {
184196
web::scope("/metrics").service(
185197
web::resource("").route(web::get().to(metrics::get).authorize(Action::Metrics)),

src/handlers/http/prism_logstream.rs

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,33 @@
1717
*/
1818

1919
use actix_web::{
20-
web::{self, Path},
21-
Responder,
20+
web::{self, Json, Path},
21+
HttpRequest, Responder,
2222
};
2323

24-
use crate::prism::logstream::{get_prism_logstream_info, PrismLogstreamError};
24+
use crate::{
25+
prism::logstream::{get_prism_logstream_info, PrismDatasetRequest, PrismLogstreamError},
26+
utils::actix::extract_session_key_from_req,
27+
};
2528

2629
/// This API is essentially just combining the responses of /info and /schema together
2730
pub async fn get_info(stream_name: Path<String>) -> Result<impl Responder, PrismLogstreamError> {
2831
let prism_logstream_info = get_prism_logstream_info(&stream_name).await?;
2932

3033
Ok(web::Json(prism_logstream_info))
3134
}
35+
36+
/// A combination of /stats, /retention, /hottier, /info, /counts and /query
37+
pub async fn post_datasets(
38+
dataset_req: Option<Json<PrismDatasetRequest>>,
39+
req: HttpRequest,
40+
) -> Result<impl Responder, PrismLogstreamError> {
41+
let session_key = extract_session_key_from_req(&req)?;
42+
let dataset = dataset_req
43+
.map(|Json(r)| r)
44+
.unwrap_or_default()
45+
.get_datasets(session_key)
46+
.await?;
47+
48+
Ok(web::Json(dataset))
49+
}

src/prism/home/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ pub async fn generate_home_response(key: &SessionKey) -> Result<HomeResponse, Pr
149149
let alerts_info = get_alerts_info().await?;
150150

151151
// generate dates for date-wise stats
152-
let dates = (0..7)
152+
let mut dates = (0..7)
153153
.map(|i| {
154154
Utc::now()
155155
.checked_sub_signed(chrono::Duration::days(i))
@@ -158,6 +158,7 @@ pub async fn generate_home_response(key: &SessionKey) -> Result<HomeResponse, Pr
158158
})
159159
.map(|date| date.format("%Y-%m-%d").to_string())
160160
.collect_vec();
161+
dates.reverse();
161162

162163
let mut stream_details = Vec::new();
163164

0 commit comments

Comments
 (0)