Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use settings models vended by bottlerocket-settings-sdk #4057

Merged
merged 1 commit into from
Jun 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
466 changes: 180 additions & 286 deletions sources/Cargo.lock

Large diffs are not rendered by default.

19 changes: 0 additions & 19 deletions sources/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -34,25 +34,6 @@ members = [
"settings-defaults/vmware-dev",
"settings-defaults/vmware-k8s-1.30",

"settings-extensions/autoscaling",
"settings-extensions/aws",
"settings-extensions/bootstrap-containers",
"settings-extensions/cloudformation",
"settings-extensions/container-registry",
"settings-extensions/container-runtime",
"settings-extensions/dns",
"settings-extensions/ecs",
"settings-extensions/host-containers",
"settings-extensions/kernel",
"settings-extensions/metrics",
"settings-extensions/motd",
"settings-extensions/network",
"settings-extensions/ntp",
"settings-extensions/oci-defaults",
"settings-extensions/oci-hooks",
"settings-extensions/pki",
"settings-extensions/updates",

# (all previous migrations archived; add new ones after this line)
"settings-migrations/v1.21.0/pluto-remove-generators-v0-1-0",
"settings-migrations/v1.21.0/pod-infra-container-image-affected-services",
Expand Down
10 changes: 10 additions & 0 deletions sources/api/schnauzer/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,16 @@ tokio = { version = "~1.32", default-features = false, features = ["macros", "rt
toml = "0.8"
url = "2"

[dependencies.bottlerocket-modeled-types]
git = "https://github.com/bottlerocket-os/bottlerocket-settings-sdk"
tag = "bottlerocket-settings-models-v0.1.0"
version = "0.1.0"

[dependencies.settings-extension-oci-defaults]
git = "https://github.com/bottlerocket-os/bottlerocket-settings-sdk"
tag = "bottlerocket-settings-models-v0.1.0"
version = "0.1.0"

[dev-dependencies]
# Workaround to enable a feature during integration tests.
schnauzer = { path = ".", version = "0.1.0", features = ["testfakes"] }
Expand Down
32 changes: 17 additions & 15 deletions sources/api/schnauzer/src/helpers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,17 @@
// text at render time.

use base64::Engine;
use bottlerocket_modeled_types::{OciDefaultsCapability, OciDefaultsResourceLimitType};
use dns_lookup::lookup_host;
use handlebars::{
handlebars_helper, Context, Handlebars, Helper, HelperDef, Output, RenderContext, RenderError,
Renderable,
};
use lazy_static::lazy_static;
use model::modeled_types::{OciDefaultsCapability, OciDefaultsResourceLimitType};
use model::OciDefaultsResourceLimit;
use serde::Deserialize;
use serde_json::value::Value;
use serde_plain::derive_fromstr_from_deserialize;
use settings_extension_oci_defaults::OciDefaultsResourceLimitV1;
use snafu::{OptionExt, ResultExt};
use std::borrow::Borrow;
use std::collections::HashMap;
Expand Down Expand Up @@ -1263,7 +1263,7 @@ pub fn localhost_aliases(

let mut results: Vec<String> = vec![];

let hosts: Option<model::modeled_types::EtcHostsEntries> = (!hosts_value.is_null())
let hosts: Option<bottlerocket_modeled_types::EtcHostsEntries> = (!hosts_value.is_null())
.then(|| {
serde_json::from_value(hosts_value.clone()).context(
error::UnparseableTemplateValueSnafu {
Expand Down Expand Up @@ -1342,12 +1342,14 @@ pub fn etc_hosts_entries(
// Otherwise we need to generate /etc/hosts lines, ignoring loopback.
let mut result_lines: Vec<String> = Vec::new();

let hosts: model::modeled_types::EtcHostsEntries = serde_json::from_value(hosts_value.clone())
.context(error::UnparseableTemplateValueSnafu {
expected: "EtcHostsEntries",
value: hosts_value.to_owned(),
template: template_name.to_owned(),
})?;
let hosts: bottlerocket_modeled_types::EtcHostsEntries = serde_json::from_value(
hosts_value.clone(),
)
.context(error::UnparseableTemplateValueSnafu {
expected: "EtcHostsEntries",
value: hosts_value.to_owned(),
template: template_name.to_owned(),
})?;
trace!("Hosts from template: {:?}", hosts);

hosts
Expand Down Expand Up @@ -1565,7 +1567,7 @@ impl Runtime {
fn get_resource_limits(
&self,
rlimit_type: &OciDefaultsResourceLimitType,
values: &OciDefaultsResourceLimit,
values: &OciDefaultsResourceLimitV1,
) -> String {
match self {
Self::Docker => Docker::get_resource_limits(rlimit_type, values),
Expand All @@ -1586,7 +1588,7 @@ impl Docker {
/// Formats resource limits for Docker
fn get_resource_limits(
rlimit_type: &OciDefaultsResourceLimitType,
values: &OciDefaultsResourceLimit,
values: &OciDefaultsResourceLimitV1,
) -> String {
format!(
r#" "{}":{{ "Name": "{}", "Hard": {}, "Soft": {} }}"#,
Expand Down Expand Up @@ -1628,7 +1630,7 @@ impl Containerd {
/// Formats resource limits for Containerd
fn get_resource_limits(
rlimit_type: &OciDefaultsResourceLimitType,
values: &OciDefaultsResourceLimit,
values: &OciDefaultsResourceLimitV1,
) -> String {
format!(
r#"{{ "type": "{}", "hard": {}, "soft": {} }}"#,
Expand Down Expand Up @@ -1771,7 +1773,7 @@ fn oci_spec_capabilities(value: &Value) -> Result<String, RenderError> {
/// the settings data from the datastore (`settings.oci-defaults.resource-limits`).
fn oci_spec_resource_limits(
value: &Value,
) -> Result<HashMap<OciDefaultsResourceLimitType, OciDefaultsResourceLimit>, RenderError> {
) -> Result<HashMap<OciDefaultsResourceLimitType, OciDefaultsResourceLimitV1>, RenderError> {
Ok(serde_json::from_value(value.clone())?)
}

Expand Down Expand Up @@ -1915,7 +1917,7 @@ fn kube_cpu_helper(num_cores: usize) -> Result<String, TemplateHelperError> {
/// If `configured_hosts` is set, the hostname will be considered resolvable if it is listed as an alias for any given IP address.
fn hostname_resolveable(
hostname: &str,
configured_hosts: Option<&model::modeled_types::EtcHostsEntries>,
configured_hosts: Option<&bottlerocket_modeled_types::EtcHostsEntries>,
) -> bool {
// If the hostname is in our configured hosts, then it *will* be resolvable when /etc/hosts is rendered.
// Note that DNS search paths in /etc/resolv.conf are not relevant here, as they are not checked when searching /etc/hosts.
Expand Down Expand Up @@ -2836,7 +2838,7 @@ mod test_etc_hosts_helpers {
assert!(hostname_resolveable(
"unresolveable.irrelevanthostname.tld",
Some(
&serde_json::from_str::<model::modeled_types::EtcHostsEntries>(
&serde_json::from_str::<bottlerocket_modeled_types::EtcHostsEntries>(
r#"[["10.0.0.1", ["unresolveable.irrelevanthostname.tld"]]]"#
)
.unwrap()
Expand Down
27 changes: 5 additions & 22 deletions sources/models/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,38 +12,21 @@ exclude = ["README.md"]
[dependencies]
bottlerocket-release = { path = "../bottlerocket-release", version = "0.1" }
libc = "0.2"
model-derive = { path = "model-derive", version = "0.1" }
modeled-types = { path = "modeled-types", version = "0.1" }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
toml = "0.8"

# settings extensions
settings-extension-autoscaling = { path = "../settings-extensions/autoscaling", version = "0.1" }
settings-extension-aws = { path = "../settings-extensions/aws", version = "0.1" }
settings-extension-bootstrap-containers = { path = "../settings-extensions/bootstrap-containers", version = "0.1" }
settings-extension-cloudformation = { path = "../settings-extensions/cloudformation", version = "0.1" }
settings-extension-container-registry = { path = "../settings-extensions/container-registry", version = "0.1" }
settings-extension-container-runtime = { path = "../settings-extensions/container-runtime", version = "0.1" }
settings-extension-dns = { path = "../settings-extensions/dns", version = "0.1" }
settings-extension-ecs = { path = "../settings-extensions/ecs", version = "0.1" }
settings-extension-host-containers = { path = "../settings-extensions/host-containers", version = "0.1" }
settings-extension-kernel = { path = "../settings-extensions/kernel", version = "0.1" }
settings-extension-metrics = { path = "../settings-extensions/metrics", version = "0.1" }
settings-extension-motd = { path = "../settings-extensions/motd", version = "0.1" }
settings-extension-network = { path = "../settings-extensions/network", version = "0.1" }
settings-extension-ntp = { path = "../settings-extensions/ntp", version = "0.1" }
settings-extension-oci-defaults = { path = "../settings-extensions/oci-defaults", version = "0.1" }
settings-extension-oci-hooks = { path = "../settings-extensions/oci-hooks", version = "0.1" }
settings-extension-pki = { path = "../settings-extensions/pki", version = "0.1" }
settings-extension-updates = { path = "../settings-extensions/updates", version = "0.1" }

# settings plugins
[dependencies.bottlerocket-settings-plugin]
git = "https://github.com/bottlerocket-os/bottlerocket-settings-sdk"
tag = "bottlerocket-settings-plugin-v0.1.0"
version = "0.1.0"

[dependencies.bottlerocket-settings-models]
git = "https://github.com/bottlerocket-os/bottlerocket-settings-sdk"
tag = "bottlerocket-settings-models-v0.1.0"
version = "0.1.0"

[build-dependencies]
generate-readme = { version = "0.1", path = "../generate-readme" }

Expand Down
22 changes: 0 additions & 22 deletions sources/models/model-derive/Cargo.toml

This file was deleted.

44 changes: 0 additions & 44 deletions sources/models/model-derive/README.md

This file was deleted.

9 changes: 0 additions & 9 deletions sources/models/model-derive/README.tpl

This file was deleted.

3 changes: 0 additions & 3 deletions sources/models/model-derive/build.rs

This file was deleted.

Loading