Pass the kubernetes client as state.
This commit is contained in:
parent
6c15fc00b4
commit
3e3acbab7d
19
src/main.rs
19
src/main.rs
@ -1,4 +1,5 @@
|
|||||||
#![forbid(unsafe_code)]
|
#![forbid(unsafe_code)]
|
||||||
|
use std::sync::Arc;
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
|
||||||
use axum::http::StatusCode;
|
use axum::http::StatusCode;
|
||||||
@ -43,14 +44,14 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
.await
|
.await
|
||||||
.expect("Set KUBECONFIG to a valid kubernetes config.");
|
.expect("Set KUBECONFIG to a valid kubernetes config.");
|
||||||
|
|
||||||
let jobs: Api<PipelineRun> = Api::namespaced(kubernetes_client, "lighthouse");
|
// let jobs: Api<PipelineRun> = Api::namespaced(kubernetes_client, "lighthouse");
|
||||||
// let jobs: Api<PipelineRun> = Api::default_namespaced(kubernetes_client);
|
// let jobs: Api<PipelineRun> = Api::default_namespaced(kubernetes_client);
|
||||||
tracing::info!("Using crd: {}", serde_json::to_string(&PipelineRun::crd())?);
|
// tracing::info!("Using crd: {}", serde_json::to_string(&PipelineRun::crd())?);
|
||||||
|
|
||||||
let test_run: PipelineRun = serde_json::from_str(EXAMPLE_PIPELINE_RUN)?;
|
// let test_run: PipelineRun = serde_json::from_str(EXAMPLE_PIPELINE_RUN)?;
|
||||||
|
|
||||||
let pp = PostParams::default();
|
// let pp = PostParams::default();
|
||||||
let created_run = jobs.create(&pp, &test_run).await?;
|
// let created_run = jobs.create(&pp, &test_run).await?;
|
||||||
|
|
||||||
let app = Router::new()
|
let app = Router::new()
|
||||||
.route("/hook", post(hook))
|
.route("/hook", post(hook))
|
||||||
@ -60,7 +61,8 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
TraceLayer::new_for_http(),
|
TraceLayer::new_for_http(),
|
||||||
// Add a timeout layer so graceful shutdown can't wait forever.
|
// Add a timeout layer so graceful shutdown can't wait forever.
|
||||||
TimeoutLayer::new(Duration::from_secs(600)),
|
TimeoutLayer::new(Duration::from_secs(600)),
|
||||||
));
|
))
|
||||||
|
.with_state(AppState { kubernetes_client });
|
||||||
|
|
||||||
let listener = tokio::net::TcpListener::bind("0.0.0.0:9988").await?;
|
let listener = tokio::net::TcpListener::bind("0.0.0.0:9988").await?;
|
||||||
tracing::info!("listening on {}", listener.local_addr().unwrap());
|
tracing::info!("listening on {}", listener.local_addr().unwrap());
|
||||||
@ -70,6 +72,11 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Clone)]
|
||||||
|
struct AppState {
|
||||||
|
kubernetes_client: Client,
|
||||||
|
}
|
||||||
|
|
||||||
async fn shutdown_signal() {
|
async fn shutdown_signal() {
|
||||||
let ctrl_c = async {
|
let ctrl_c = async {
|
||||||
signal::ctrl_c()
|
signal::ctrl_c()
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
use std::future::Future;
|
use std::future::Future;
|
||||||
|
use std::sync::Arc;
|
||||||
|
|
||||||
use axum::async_trait;
|
use axum::async_trait;
|
||||||
use axum::body::Body;
|
use axum::body::Body;
|
||||||
use axum::body::Bytes;
|
use axum::body::Bytes;
|
||||||
use axum::extract::FromRequest;
|
use axum::extract::FromRequest;
|
||||||
use axum::extract::Request;
|
use axum::extract::Request;
|
||||||
|
use axum::extract::State;
|
||||||
use axum::http::HeaderMap;
|
use axum::http::HeaderMap;
|
||||||
use axum::http::StatusCode;
|
use axum::http::StatusCode;
|
||||||
use axum::middleware::Next;
|
use axum::middleware::Next;
|
||||||
@ -21,11 +23,13 @@ use sha2::Sha256;
|
|||||||
use tracing::debug;
|
use tracing::debug;
|
||||||
|
|
||||||
use crate::hook_push::HookPush;
|
use crate::hook_push::HookPush;
|
||||||
|
use crate::AppState;
|
||||||
|
|
||||||
type HmacSha256 = Hmac<Sha256>;
|
type HmacSha256 = Hmac<Sha256>;
|
||||||
|
|
||||||
pub(crate) async fn hook(
|
pub(crate) async fn hook(
|
||||||
_headers: HeaderMap,
|
_headers: HeaderMap,
|
||||||
|
State(state): State<AppState>,
|
||||||
payload: HookRequest,
|
payload: HookRequest,
|
||||||
) -> (StatusCode, Json<HookResponse>) {
|
) -> (StatusCode, Json<HookResponse>) {
|
||||||
debug!("REQ: {:?}", payload);
|
debug!("REQ: {:?}", payload);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user