Skip to content

Commit

Permalink
Merge pull request #4057 from cbgbt/sdk-vended-models
Browse files Browse the repository at this point in the history
Use settings models vended by bottlerocket-settings-sdk
  • Loading branch information
cbgbt committed Jun 20, 2024
2 parents f36b20a 468f205 commit a9d39ea
Show file tree
Hide file tree
Showing 136 changed files with 391 additions and 9,239 deletions.
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

0 comments on commit a9d39ea

Please sign in to comment.