mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-09-18 23:39:30 +00:00
Merge pull request #8941 from malt3/genpolicy-flags
genpolicy: allow separate paths for rules and settings files
This commit is contained in:
@@ -83,10 +83,10 @@ $ genpolicy -j my-settings.json -y test.yaml
|
|||||||
|
|
||||||
# Use a custom path to `genpolicy` input files
|
# Use a custom path to `genpolicy` input files
|
||||||
|
|
||||||
By default, the `genpolicy` input files [`rules.rego`](rules.rego) and [`genpolicy-settings.json`](genpolicy-settings.json) must be present in the current directory - otherwise `genpolicy` returns an error. Users can specify a different path to these two files, using the `-i` command line parameter - e.g.,
|
By default, the `genpolicy` input files [`rules.rego`](rules.rego) and [`genpolicy-settings.json`](genpolicy-settings.json) must be present in the current directory - otherwise `genpolicy` returns an error. Users can specify different paths to these two files, using the `-p` and `-j` command line parameters - e.g.,
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ genpolicy -i /tmp -y test.yaml
|
$ genpolicy -p /tmp/rules.rego -j /tmp/genpolicy-settings.json -y test.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
# Silently ignore unsupported input `YAML` fields
|
# Silently ignore unsupported input `YAML` fields
|
||||||
|
@@ -392,7 +392,7 @@ impl AgentPolicy {
|
|||||||
resources.push(resource);
|
resources.push(resource);
|
||||||
}
|
}
|
||||||
|
|
||||||
let settings = settings::Settings::new(&config.settings_file);
|
let settings = settings::Settings::new(&config.json_settings_path);
|
||||||
|
|
||||||
if let Some(config_map_files) = &config.config_map_files {
|
if let Some(config_map_files) = &config.config_map_files {
|
||||||
for file in config_map_files {
|
for file in config_map_files {
|
||||||
@@ -400,7 +400,7 @@ impl AgentPolicy {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Ok(rules) = read_to_string(&config.rules_file) {
|
if let Ok(rules) = read_to_string(&config.rego_rules_path) {
|
||||||
Ok(AgentPolicy {
|
Ok(AgentPolicy {
|
||||||
resources,
|
resources,
|
||||||
rules,
|
rules,
|
||||||
@@ -410,8 +410,8 @@ impl AgentPolicy {
|
|||||||
config: config.clone(),
|
config: config.clone(),
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
panic!("Cannot open file {}. Please copy it to the current directory or specify the path to it using the -i parameter.",
|
panic!("Cannot open file {}. Please copy it to the current directory or specify the path to it using the -p parameter.",
|
||||||
&config.rules_file);
|
&config.rego_rules_path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -65,15 +65,15 @@ pub struct KataConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Settings {
|
impl Settings {
|
||||||
pub fn new(settings_file: &str) -> Self {
|
pub fn new(json_settings_path: &str) -> Self {
|
||||||
debug!("Loading settings file...");
|
debug!("Loading settings file...");
|
||||||
if let Ok(file) = File::open(settings_file) {
|
if let Ok(file) = File::open(json_settings_path) {
|
||||||
let settings: Self = serde_json::from_reader(file).unwrap();
|
let settings: Self = serde_json::from_reader(file).unwrap();
|
||||||
debug!("settings = {:?}", &settings);
|
debug!("settings = {:?}", &settings);
|
||||||
settings
|
settings
|
||||||
} else {
|
} else {
|
||||||
panic!("Cannot open file {}. Please copy it to the current directory or specify the path to it using the -i parameter.",
|
panic!("Cannot open file {}. Please copy it to the current directory or specify the path to it using the -p parameter.",
|
||||||
settings_file);
|
json_settings_path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -4,7 +4,6 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
use log::debug;
|
|
||||||
|
|
||||||
#[derive(Debug, Parser)]
|
#[derive(Debug, Parser)]
|
||||||
struct CommandLineOptions {
|
struct CommandLineOptions {
|
||||||
@@ -22,21 +21,21 @@ struct CommandLineOptions {
|
|||||||
)]
|
)]
|
||||||
config_map_file: Option<String>,
|
config_map_file: Option<String>,
|
||||||
|
|
||||||
|
#[clap(
|
||||||
|
short = 'p',
|
||||||
|
long,
|
||||||
|
default_value_t = String::from("rules.rego"),
|
||||||
|
help = "Path to rego rules file"
|
||||||
|
)]
|
||||||
|
rego_rules_path: String,
|
||||||
|
|
||||||
#[clap(
|
#[clap(
|
||||||
short = 'j',
|
short = 'j',
|
||||||
long,
|
long,
|
||||||
default_value_t = String::from("genpolicy-settings.json"),
|
default_value_t = String::from("genpolicy-settings.json"),
|
||||||
help = "genpolicy settings file name"
|
help = "Path to genpolicy settings file"
|
||||||
)]
|
)]
|
||||||
settings_file_name: String,
|
json_settings_path: String,
|
||||||
|
|
||||||
#[clap(
|
|
||||||
short,
|
|
||||||
long,
|
|
||||||
default_value_t = String::from("."),
|
|
||||||
help = "Path to the rules.rego and settings input files"
|
|
||||||
)]
|
|
||||||
input_files_path: String,
|
|
||||||
|
|
||||||
#[clap(
|
#[clap(
|
||||||
short,
|
short,
|
||||||
@@ -73,8 +72,8 @@ pub struct Config {
|
|||||||
pub use_cache: bool,
|
pub use_cache: bool,
|
||||||
|
|
||||||
pub yaml_file: Option<String>,
|
pub yaml_file: Option<String>,
|
||||||
pub rules_file: String,
|
pub rego_rules_path: String,
|
||||||
pub settings_file: String,
|
pub json_settings_path: String,
|
||||||
pub config_map_files: Option<Vec<String>>,
|
pub config_map_files: Option<Vec<String>>,
|
||||||
|
|
||||||
pub silent_unsupported_fields: bool,
|
pub silent_unsupported_fields: bool,
|
||||||
@@ -97,17 +96,11 @@ impl Config {
|
|||||||
None
|
None
|
||||||
};
|
};
|
||||||
|
|
||||||
let rules_file = format!("{}/rules.rego", &args.input_files_path);
|
|
||||||
debug!("Rules file: {rules_file}");
|
|
||||||
|
|
||||||
let settings_file = format!("{}/{}", &args.input_files_path, &args.settings_file_name);
|
|
||||||
debug!("Settings file: {settings_file}");
|
|
||||||
|
|
||||||
Self {
|
Self {
|
||||||
use_cache: args.use_cached_files,
|
use_cache: args.use_cached_files,
|
||||||
yaml_file: args.yaml_file,
|
yaml_file: args.yaml_file,
|
||||||
rules_file,
|
rego_rules_path: args.rego_rules_path,
|
||||||
settings_file,
|
json_settings_path: args.json_settings_path,
|
||||||
config_map_files: cm_files,
|
config_map_files: cm_files,
|
||||||
silent_unsupported_fields: args.silent_unsupported_fields,
|
silent_unsupported_fields: args.silent_unsupported_fields,
|
||||||
raw_out: args.raw_out,
|
raw_out: args.raw_out,
|
||||||
|
Reference in New Issue
Block a user