Skip to content

Commit 712d373

Browse files
authored
Fix after upgrading in the boxer-issuer project (#27)
* Add the K8S -> HTTP status code conversion * Fix formatting issues and compilation warnings * Fix unit tests * Fix unit tests
1 parent f6cf428 commit 712d373

File tree

11 files changed

+56
-38
lines changed

11 files changed

+56
-38
lines changed

Cargo.lock

Lines changed: 10 additions & 0 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 & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ schemars = "0.8.6"
2828
assert_matches = "1.5.0"
2929
test-context = "0.4.1"
3030
actix-web = "4.11.0"
31+
duration-string = { version = "0.5.2", features = ["serde"] }
3132

3233
[dev-dependencies]
3334
serde_yml = "0.0.12"

src/configuration/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
pub mod models;

src/configuration/models/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
pub mod repository_settings;
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
use crate::services::backends::kubernetes::kubernetes_resource_manager::ListenerConfig;
2+
use duration_string::DurationString;
3+
use serde::Deserialize;
4+
5+
#[derive(Debug, Deserialize)]
6+
pub struct RepositorySettings {
7+
pub label_selector_key: String,
8+
pub label_selector_value: String,
9+
pub operation_timeout: DurationString,
10+
}
11+
impl Into<ListenerConfig> for &RepositorySettings {
12+
fn into(self) -> ListenerConfig {
13+
ListenerConfig {
14+
label_selector_key: self.label_selector_key.clone(),
15+
label_selector_value: self.label_selector_value.clone(),
16+
operation_timeout: self.operation_timeout.into(),
17+
}
18+
}
19+
}

src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@ pub mod http;
22
pub mod services;
33

44
// #[cfg(feature = "testing")]
5+
pub mod configuration;
56
pub mod testing;

src/services/backends/kubernetes/kubernetes_resource_manager/spin_lock/tests.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::services::backends::kubernetes::repositories::schema_repository::models::{
1+
use crate::services::backends::kubernetes::repositories::schema_repository::schema_document::{
22
SchemaDocument, SchemaDocumentSpec,
33
};
44
use crate::testing::api_extensions::WaitForResource;

src/services/backends/kubernetes/repositories/schema_repository.rs

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,37 +2,21 @@
22
#[cfg(test)]
33
mod tests;
44

5-
pub mod models;
5+
pub mod schema_document;
66
mod test_reduced_schema;
77
#[cfg(test)]
88
mod test_schema;
99

1010
use crate::services::backends::kubernetes::kubernetes_resource_manager::status::Status;
11-
use crate::services::backends::kubernetes::repositories::schema_repository::models::{
11+
use crate::services::backends::kubernetes::repositories::schema_repository::schema_document::{
1212
SchemaDocument, SchemaDocumentSpec,
1313
};
14-
use crate::services::backends::kubernetes::repositories::{
15-
KubernetesRepository, SoftDeleteResource, ToResource, TryFromResource,
16-
};
14+
use crate::services::backends::kubernetes::repositories::{KubernetesRepository, ToResource, TryFromResource};
1715
use crate::services::base::upsert_repository::UpsertRepositoryWithDelete;
1816
use cedar_policy::SchemaFragment;
1917
use k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
2018
use std::sync::Arc;
2119

22-
impl SoftDeleteResource for SchemaDocument {
23-
fn is_deleted(&self) -> bool {
24-
!self.spec.active
25-
}
26-
27-
fn set_deleted(&mut self) {
28-
self.spec.active = false;
29-
}
30-
31-
fn clear_managed_fields(&mut self) {
32-
self.metadata.managed_fields = None;
33-
}
34-
}
35-
3620
impl ToResource<SchemaDocument> for SchemaFragment {
3721
fn to_resource(&self, object_meta: &ObjectMeta) -> Result<SchemaDocument, Status> {
3822
let serialized = self

src/services/backends/kubernetes/repositories/schema_repository/models.rs renamed to src/services/backends/kubernetes/repositories/schema_repository/schema_document.rs

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use crate::services::backends::kubernetes::kubernetes_resource_manager::UpdateLabels;
2+
use crate::services::backends::kubernetes::repositories::SoftDeleteResource;
23
use anyhow::anyhow;
34
use cedar_policy::SchemaFragment;
45
use k8s_openapi::apimachinery::pkg::apis::meta::v1::ObjectMeta;
@@ -38,20 +39,6 @@ impl TryInto<SchemaFragment> for SchemaDocumentSpec {
3839
}
3940
}
4041

41-
impl TryFrom<SchemaFragment> for SchemaDocumentSpec {
42-
type Error = anyhow::Error;
43-
44-
fn try_from(schema: SchemaFragment) -> Result<Self, Self::Error> {
45-
let serialized = schema
46-
.to_json_value()
47-
.map_err(|err| anyhow!("Failed to convert schema to JSON string: {}", err))?;
48-
Ok(SchemaDocumentSpec {
49-
active: true,
50-
schema: serde_json::to_string_pretty(&serialized)?,
51-
})
52-
}
53-
}
54-
5542
impl Default for SchemaDocument {
5643
fn default() -> Self {
5744
SchemaDocument {
@@ -60,3 +47,17 @@ impl Default for SchemaDocument {
6047
}
6148
}
6249
}
50+
51+
impl SoftDeleteResource for SchemaDocument {
52+
fn is_deleted(&self) -> bool {
53+
!self.spec.active
54+
}
55+
56+
fn set_deleted(&mut self) {
57+
self.spec.active = false;
58+
}
59+
60+
fn clear_managed_fields(&mut self) {
61+
self.metadata.managed_fields = None;
62+
}
63+
}

src/services/backends/kubernetes/repositories/schema_repository/tests.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,9 @@ async fn test_update_schema(ctx: &mut KubernetesSchemaRepositoryTest) {
7373
.upsert(name.to_string(), schema_fragment.clone())
7474
.await
7575
.expect("Failed to upsert schema");
76-
// ctx.api
77-
// .wait_for_creation(&ObjectRef::new(name), DEFAULT_TEST_TIMEOUT)
78-
// .await;
76+
ctx.api
77+
.wait_for_creation(name.to_string(), ctx.namespace.to_string(), DEFAULT_TEST_TIMEOUT)
78+
.await;
7979
let before = ctx.repository.get(name.to_string()).await.unwrap();
8080

8181
// Act

0 commit comments

Comments
 (0)