Skip to content

Commit 2ec3df8

Browse files
feat: change helm release and helm repository names in cli (#1330)
1 parent f100f0c commit 2ec3df8

File tree

6 files changed

+19
-43
lines changed

6 files changed

+19
-43
lines changed

agent-control/src/bin/main_agent_control_cli.rs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@ use newrelic_agent_control::cli::errors::CliError;
33
use newrelic_agent_control::cli::install_agent_control::{
44
AgentControlInstallData, install_agent_control,
55
};
6-
use newrelic_agent_control::cli::uninstall_agent_control::{
7-
AgentControlUninstallData, uninstall_agent_control,
8-
};
6+
use newrelic_agent_control::cli::uninstall_agent_control::uninstall_agent_control;
97
use newrelic_agent_control::{
108
agent_control::defaults::AGENT_CONTROL_LOG_DIR,
119
http::tls::install_rustls_default_crypto_provider,
@@ -38,7 +36,7 @@ enum Operations {
3836
/// Install agent control chart and create required resources
3937
InstallAgentControl(AgentControlInstallData),
4038
/// Uninstall agent control and delete related resources
41-
UninstallAgentControl(AgentControlUninstallData),
39+
UninstallAgentControl,
4240
}
4341

4442
fn main() -> ExitCode {
@@ -62,9 +60,7 @@ fn main() -> ExitCode {
6260
Operations::InstallAgentControl(agent_control_data) => {
6361
install_agent_control(agent_control_data, cli.namespace)
6462
}
65-
Operations::UninstallAgentControl(agent_control_data) => {
66-
uninstall_agent_control(agent_control_data, cli.namespace)
67-
}
63+
Operations::UninstallAgentControl => uninstall_agent_control(cli.namespace),
6864
};
6965

7066
match result {

agent-control/src/cli/install_agent_control.rs

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use crate::agent_control::config::{helmrelease_v2_type_meta, helmrepository_type_meta};
2+
use crate::agent_control::defaults::AGENT_CONTROL_ID;
23
use crate::cli::errors::CliError;
34
use crate::cli::utils::*;
45
use crate::health::health_checker::HealthChecker;
@@ -20,7 +21,8 @@ use std::thread::sleep;
2021
use std::time::Duration;
2122
use tracing::{debug, info};
2223

23-
pub const REPOSITORY_NAME: &str = "newrelic";
24+
pub const RELEASE_NAME: &str = AC_DEPLOYMENT_CHART_NAME;
25+
pub const REPOSITORY_NAME: &str = AGENT_CONTROL_ID;
2426
const REPOSITORY_URL: &str = "https://helm-charts.newrelic.com";
2527
const FIVE_MINUTES: &str = "300s";
2628
const AC_DEPLOYMENT_CHART_NAME: &str = "agent-control-deployment";
@@ -30,10 +32,6 @@ const INSTALLATION_CHECK_DEFAULT_RETRY_INTERVAL: Duration = Duration::from_secs(
3032

3133
#[derive(Debug, Clone, Parser)]
3234
pub struct AgentControlInstallData {
33-
/// Release name
34-
#[arg(long)]
35-
pub release_name: String,
36-
3735
/// Version of the agent control deployment chart
3836
#[arg(long)]
3937
pub chart_version: String,
@@ -212,7 +210,7 @@ fn helm_release(
212210
DynamicObject {
213211
types: Some(helmrelease_v2_type_meta()),
214212
metadata: ObjectMeta {
215-
name: Some(value.release_name.clone()),
213+
name: Some(RELEASE_NAME.to_string()),
216214
labels: Some(labels),
217215
annotations: Some(annotations),
218216
..Default::default()
@@ -293,12 +291,10 @@ fn check_installation(
293291
mod tests {
294292
use super::*;
295293

296-
const RELEASE_NAME: &str = "agent-control-deployment-release";
297294
const VERSION: &str = "1.0.0";
298295

299296
fn agent_control_data() -> AgentControlInstallData {
300297
AgentControlInstallData {
301-
release_name: RELEASE_NAME.to_string(),
302298
chart_version: VERSION.to_string(),
303299
secrets: None,
304300
extra_labels: None,

agent-control/src/cli/uninstall_agent_control.rs

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,36 +2,24 @@ use crate::agent_control::config::{
22
default_group_version_kinds, helmrelease_v2_type_meta, helmrepository_type_meta,
33
};
44
use crate::cli::errors::CliError;
5-
use crate::cli::install_agent_control::REPOSITORY_NAME;
5+
use crate::cli::install_agent_control::{RELEASE_NAME, REPOSITORY_NAME};
66
use crate::cli::utils::{retry, try_new_k8s_client};
77
#[cfg_attr(test, mockall_double::double)]
88
use crate::k8s::client::SyncK8sClient;
99
use crate::k8s::labels::Labels;
10-
use clap::Parser;
1110
use either::Either;
1211
use kube::api::{DynamicObject, ObjectList, TypeMeta};
1312
use kube::client::Status;
1413
use std::collections::HashSet;
15-
use std::fmt::Debug;
1614
use std::time::Duration;
1715
use tracing::info;
1816

19-
#[derive(Debug, Parser)]
20-
pub struct AgentControlUninstallData {
21-
/// Release name
22-
#[arg(long)]
23-
pub release_name: String,
24-
}
25-
26-
pub fn uninstall_agent_control(
27-
data: AgentControlUninstallData,
28-
namespace: String,
29-
) -> Result<(), CliError> {
17+
pub fn uninstall_agent_control(namespace: String) -> Result<(), CliError> {
3018
let k8s_client = try_new_k8s_client(namespace.clone())?;
3119
let kinds_available = retrieve_api_resources(&k8s_client)?;
3220

3321
// we delete first the AC so that it does not interfere (by recreating resources that we have just deleted).
34-
delete_agent_control_crs(&k8s_client, &kinds_available, data)?;
22+
delete_agent_control_crs(&k8s_client, &kinds_available)?;
3523
// Deleting remaining objects owned by AC
3624
delete_owned_objects(&k8s_client, &kinds_available)?;
3725

@@ -99,10 +87,9 @@ fn objects_to_delete(kinds_available: &HashSet<TypeMeta>) -> Vec<TypeMeta> {
9987
fn delete_agent_control_crs(
10088
k8s_client: &SyncK8sClient,
10189
kinds_available: &HashSet<TypeMeta>,
102-
data: AgentControlUninstallData,
10390
) -> Result<(), CliError> {
10491
let mut crs_to_delete: Vec<(TypeMeta, &str)> = vec![
105-
(helmrelease_v2_type_meta(), data.release_name.as_str()),
92+
(helmrelease_v2_type_meta(), RELEASE_NAME),
10693
(helmrepository_type_meta(), REPOSITORY_NAME),
10794
];
10895

agent-control/tests/k8s/agent_control_cli/dynamic_objects.rs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use assert_cmd::Command;
2+
use newrelic_agent_control::cli::install_agent_control::{RELEASE_NAME, REPOSITORY_NAME};
23
use newrelic_agent_control::sub_agent::identity::AgentIdentity;
34

45
use crate::k8s::tools::k8s_env::K8sEnv;
@@ -7,9 +8,6 @@ use newrelic_agent_control::agent_control::config::{
78
};
89
use newrelic_agent_control::k8s::client::SyncK8sClient;
910

10-
const REPOSITORY_NAME: &str = "newrelic";
11-
const RELEASE_NAME: &str = "agent-control-deployment";
12-
1311
#[test]
1412
#[ignore = "needs k8s cluster"]
1513
fn k8s_cli_install_agent_control_creates_resources() {
@@ -20,7 +18,6 @@ fn k8s_cli_install_agent_control_creates_resources() {
2018

2119
let mut cmd = Command::cargo_bin("newrelic-agent-control-cli").unwrap();
2220
cmd.arg("install-agent-control");
23-
cmd.arg("--release-name").arg(RELEASE_NAME);
2421
cmd.arg("--chart-version").arg("1.0.0");
2522
cmd.arg("--namespace").arg(namespace.clone());
2623
cmd.arg("--extra-labels")
@@ -122,7 +119,6 @@ fn k8s_cli_install_agent_control_creates_resources_with_specific_repository_url(
122119
let repository_url = "https://cli-charts.newrelic.com";
123120
let mut cmd = Command::cargo_bin("newrelic-agent-control-cli").unwrap();
124121
cmd.arg("install-agent-control");
125-
cmd.arg("--release-name").arg(RELEASE_NAME);
126122
cmd.arg("--chart-version").arg("1.0.0");
127123
cmd.arg("--namespace").arg(namespace.clone());
128124
cmd.arg("--skip-installation-check"); // Skipping checks because we are merely checking that the resources are created.

agent-control/tests/k8s/agent_control_cli/installation.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,6 @@ fn k8s_cli_install_agent_control_installation_failed_upgrade() {
8989
pub fn ac_install_cmd(namespace: &str, chart_version: &str, secrets: &str) -> Command {
9090
let mut cmd = Command::cargo_bin("newrelic-agent-control-cli").unwrap();
9191
cmd.arg("install-agent-control");
92-
cmd.arg("--release-name").arg("test-release");
9392
cmd.arg("--chart-version").arg(chart_version);
9493
cmd.arg("--namespace").arg(namespace);
9594
cmd.arg("--secrets").arg(secrets);
@@ -108,6 +107,7 @@ pub(crate) fn create_simple_values_secret(
108107
// We set cleanupManagedResources: false to avoid race conditions between the old way to uninstall and the new one
109108
// TODO remove it once it is not needed anymore.
110109
let values = serde_json::json!({
110+
"nameOverride": "",
111111
"cleanupManagedResources": false,
112112
"config": {
113113
"fleet_control": {

agent-control/tests/k8s/agent_control_cli/uninstallation.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ use assert_cmd::Command;
55
use k8s_openapi::api::apps::v1::Deployment;
66
use k8s_openapi::api::core::v1::{ConfigMap, Secret};
77
use kube::Api;
8+
use newrelic_agent_control::cli::install_agent_control::RELEASE_NAME;
89
use predicates::prelude::predicate;
910
use std::time::Duration;
1011

1112
#[test]
1213
fn cli_uninstall_agent_control_fails_when_no_kubernetes() {
1314
let mut cmd = Command::cargo_bin("newrelic-agent-control-cli").unwrap();
1415
cmd.arg("uninstall-agent-control");
15-
cmd.arg("--release-name").arg("agent-control-release");
1616

1717
cmd.assert().failure();
1818
cmd.assert().code(predicate::eq(69));
@@ -45,7 +45,10 @@ fn k8s_cli_install_agent_control_installation_and_uninstallation() {
4545
let secrets: Api<Secret> = Api::namespaced(k8s_env.client.clone(), &namespace);
4646

4747
retry(10, Duration::from_secs(1), || {
48-
let _ = runtime.block_on(deployments.get("test-release-agent-control"))?;
48+
// We set "nameOverride" in the secret values to force the deployment name
49+
// to be equal to the release name. This avoids breaking the test if the
50+
// default value changes in the chart.
51+
let _ = runtime.block_on(deployments.get(RELEASE_NAME))?;
4952
Ok(())
5053
});
5154
retry(10, Duration::from_secs(1), || {
@@ -61,7 +64,7 @@ fn k8s_cli_install_agent_control_installation_and_uninstallation() {
6164
cmd.assert().success();
6265

6366
let _ = runtime
64-
.block_on(deployments.get("test-release-agent-control"))
67+
.block_on(deployments.get("agent-control"))
6568
.expect_err("AC deployment should be deleted");
6669
let _ = runtime
6770
.block_on(config_maps.get("local-data-nr-infra"))
@@ -76,7 +79,6 @@ fn k8s_cli_install_agent_control_installation_and_uninstallation() {
7679
fn cli_uninstall_agent_control_fails_when_no_kubernetes_namespace() {
7780
let mut cmd = Command::cargo_bin("newrelic-agent-control-cli").unwrap();
7881
cmd.arg("uninstall-agent-control");
79-
cmd.arg("--release-name").arg("agent-control-release");
8082
cmd.arg("--namespace").arg("not-existing-namespace");
8183

8284
cmd.assert().failure();
@@ -102,7 +104,6 @@ fn k8s_cli_uninstall_agent_control_clean_empty_cluster() {
102104
fn ac_uninstall_cmd(namespace: &str) -> Command {
103105
let mut cmd = Command::cargo_bin("newrelic-agent-control-cli").unwrap();
104106
cmd.arg("uninstall-agent-control");
105-
cmd.arg("--release-name").arg("test-release");
106107
cmd.arg("--namespace").arg(namespace);
107108
cmd
108109
}

0 commit comments

Comments
 (0)