Skip to content

Commit dfcc5f4

Browse files
strip_cmq_policies => strip_cmq_keys_from_policies
1 parent 1232a29 commit dfcc5f4

File tree

4 files changed

+60
-6
lines changed

4 files changed

+60
-6
lines changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/cli.rs

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1198,10 +1198,10 @@ A comma-separated list of names of the definition transformations to apply.
11981198
11991199
Supported transformations:
12001200
1201-
* strip_cmq_policies
1201+
* strip_cmq_keys_from_policies
12021202
* drop_empty_policies
12031203
1204-
Example use: --transformations strip_cmq_policies,drop_empty_policies
1204+
Example use: --transformations strip_cmq_keys_from_policies,drop_empty_policies
12051205
"#,
12061206
)
12071207
.num_args(1..)
@@ -1259,7 +1259,7 @@ Example use: --transformations strip_cmq_policies,drop_empty_policies
12591259
}
12601260

12611261
fn export_subcommands() -> [Command; 1] {
1262-
[Command::new("definitions")
1262+
let definitions = Command::new("definitions")
12631263
.about("prefer 'definitions export'")
12641264
.after_long_help(color_print::cformat!(
12651265
"<bold>Doc guide</bold>: {}",
@@ -1271,7 +1271,28 @@ fn export_subcommands() -> [Command; 1] {
12711271
.help("output path")
12721272
.required(false)
12731273
.default_value("-"),
1274-
)]
1274+
).arg(
1275+
Arg::new("transformations")
1276+
.long("transformations")
1277+
.short('t')
1278+
.long_help(
1279+
r#"
1280+
A comma-separated list of names of the definition transformations to apply.
1281+
1282+
Supported transformations:
1283+
1284+
* strip_cmq_keys_from_policies
1285+
* drop_empty_policies
1286+
1287+
Example use: --transformations strip_cmq_keys_from_policies,drop_empty_policies
1288+
"#,
1289+
)
1290+
.num_args(1..)
1291+
.value_delimiter(',')
1292+
.action(ArgAction::Append)
1293+
.required(false),
1294+
);
1295+
[definitions]
12751296
}
12761297

12771298
fn import_subcommands() -> [Command; 1] {

src/commands.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ use rabbitmq_http_client::commons::{ExchangeType, SupportedProtocol};
2121
use rabbitmq_http_client::commons::{PolicyTarget, VirtualHostLimitTarget};
2222
use rabbitmq_http_client::commons::{ShovelAcknowledgementMode, UserLimitTarget};
2323
use rabbitmq_http_client::requests::{
24-
Amqp10ShovelDestinationParams, Amqp10ShovelParams, Amqp10ShovelSourceParams,
2524
Amqp091ShovelDestinationParams, Amqp091ShovelParams, Amqp091ShovelSourceParams,
25+
Amqp10ShovelDestinationParams, Amqp10ShovelParams, Amqp10ShovelSourceParams,
2626
EnforcedLimitParams,
2727
};
2828
use std::fs;
@@ -920,6 +920,7 @@ pub fn export_cluster_wide_definitions(
920920
.into_iter()
921921
.map(String::from)
922922
.collect::<Vec<_>>();
923+
923924
export_and_transform_cluster_wide_definitions(client, command_args, transformations)
924925
}
925926
}

tests/definitions_export_tests.rs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,35 @@ fn test_export_vhost_definitions() -> Result<(), Box<dyn std::error::Error>> {
4545

4646
Ok(())
4747
}
48+
49+
#[test]
50+
fn test_export_cluster_wide_definitions_with_transformations_case1() -> Result<(), Box<dyn std::error::Error>> {
51+
let vh = "test_export_cluster_definitions.transformations.1";
52+
delete_vhost(vh).expect("failed to delete a virtual host");
53+
run_succeeds(["declare", "vhost", "--name", vh]);
54+
55+
let p1 = "test_export_cluster_definitions.1";
56+
run_succeeds([
57+
"--vhost", vh,
58+
"declare", "policy",
59+
"--name", p1,
60+
"--pattern", "^matching\\..+", "--apply-to", "classic_queues", "--priority", "10",
61+
"--definition", "{\"max-length\": 10}"]);
62+
63+
let q = "qq.test_export_cluster_definitions.1";
64+
run_succeeds([
65+
"-V", vh, "declare", "queue", "--name", q, "--type", "quorum",
66+
]);
67+
68+
run_succeeds(["--vhost", vh, "definitions", "export"])
69+
.stdout(predicate::str::contains(p1));
70+
// These two cannot be tested on 4.x: empty definitions will be rejected
71+
// by validation and CMQ keys are no longer recognized as known/valid.
72+
// But at least we can test the code path this way.
73+
run_succeeds(["--vhost", vh, "definitions", "export", "--transformations", "strip_cmq_keys_from_policies,drop_empty_policies"])
74+
.stdout(predicate::str::contains(p1));
75+
76+
delete_vhost(vh).expect("failed to delete a virtual host");
77+
78+
Ok(())
79+
}

0 commit comments

Comments
 (0)