Skip to content

Commit bc0f7db

Browse files
committed
try out new test instead
1 parent 4d195b2 commit bc0f7db

File tree

5 files changed

+153
-31
lines changed

5 files changed

+153
-31
lines changed

.evergreen-tasks.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -783,6 +783,11 @@ tasks:
783783
commands:
784784
- func: "e2e_test"
785785

786+
- name: e2e_om_appdb_tls_disable
787+
tags: [ "patch-run" ]
788+
commands:
789+
- func: "e2e_test"
790+
786791
- name: e2e_om_appdb_multi_change
787792
tags: [ "patch-run" ]
788793
commands:

.evergreen.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -968,6 +968,7 @@ task_groups:
968968
- e2e_om_appdb_flags_and_config
969969
- e2e_om_appdb_upgrade
970970
- e2e_om_appdb_monitoring_tls
971+
- e2e_om_appdb_tls_disable
971972
- e2e_om_ops_manager_backup
972973
- e2e_om_ops_manager_backup_light
973974
- e2e_om_ops_manager_backup_liveness_probe
@@ -1022,6 +1023,7 @@ task_groups:
10221023
- e2e_om_appdb_flags_and_config
10231024
- e2e_om_appdb_upgrade
10241025
- e2e_om_appdb_monitoring_tls
1026+
- e2e_om_appdb_tls_disable
10251027
- e2e_om_ops_manager_backup
10261028
- e2e_om_ops_manager_backup_light
10271029
- e2e_om_ops_manager_backup_liveness_probe
@@ -1076,6 +1078,7 @@ task_groups:
10761078
- e2e_om_appdb_external_connectivity
10771079
- e2e_om_appdb_flags_and_config
10781080
- e2e_om_appdb_monitoring_tls
1081+
- e2e_om_appdb_tls_disable
10791082
- e2e_om_appdb_multi_change
10801083
- e2e_om_appdb_scale_up_down
10811084
- e2e_om_appdb_upgrade
@@ -1120,6 +1123,7 @@ task_groups:
11201123
- e2e_om_appdb_external_connectivity
11211124
- e2e_om_appdb_flags_and_config
11221125
- e2e_om_appdb_monitoring_tls
1126+
- e2e_om_appdb_tls_disable
11231127
- e2e_om_appdb_multi_change
11241128
- e2e_om_appdb_scale_up_down
11251129
- e2e_om_appdb_upgrade
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
apiVersion: mongodb.com/v1
2+
kind: MongoDBOpsManager
3+
metadata:
4+
name: om-tls-disable-test
5+
spec:
6+
replicas: 1
7+
version: 4.4.1
8+
adminCredentials: ops-manager-admin-secret
9+
security:
10+
tls:
11+
secretRef:
12+
name: certs-for-ops-manager
13+
ca: issuer-ca
14+
backup:
15+
enabled: false
16+
applicationDatabase:
17+
members: 3
18+
version: 5.0.14-ent
19+
security:
20+
certsSecretPrefix: appdb
21+
tls:
22+
ca: issuer-ca
23+
24+
# adding this just to avoid wizard when opening OM UI
25+
configuration:
26+
automation.versions.source: mongodb
27+
mms.adminEmailAddr: cloud-manager-support@mongodb.com
28+
mms.fromEmailAddr: cloud-manager-support@mongodb.com
29+
mms.ignoreInitialUiSetup: "true"
30+
mms.mail.hostname: email-smtp.us-east-1.amazonaws.com
31+
mms.mail.port: "465"
32+
mms.mail.ssl: "true"
33+
mms.mail.transport: smtp
34+
mms.minimumTLSVersion: TLSv1.2
35+
mms.replyToEmailAddr: cloud-manager-support@mongodb.com
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
"""
2+
CLOUDP-351614: Test that TLS can be disabled on AppDB without breaking monitoring.
3+
4+
This is a dedicated test file to verify that when TLS is disabled on AppDB,
5+
the operator correctly clears stale TLS params from the monitoring configuration.
6+
"""
7+
from typing import Optional
8+
9+
from kubetester import create_or_update_secret, try_load
10+
from kubetester.certs import create_ops_manager_tls_certs
11+
from kubetester.kubetester import fixture as yaml_fixture
12+
from kubetester.opsmanager import MongoDBOpsManager
13+
from kubetester.phase import Phase
14+
from pytest import fixture, mark
15+
from tests.common.cert.cert_issuer import create_appdb_certs
16+
from tests.conftest import is_multi_cluster
17+
from tests.opsmanager.withMonitoredAppDB.conftest import enable_multi_cluster_deployment
18+
19+
OM_NAME = "om-tls-disable-test"
20+
APPDB_NAME = f"{OM_NAME}-db"
21+
22+
23+
@fixture(scope="module")
24+
def ops_manager_certs(namespace: str, issuer: str):
25+
return create_ops_manager_tls_certs(issuer, namespace, OM_NAME)
26+
27+
28+
@fixture(scope="module")
29+
def appdb_certs(namespace: str, issuer: str):
30+
return create_appdb_certs(namespace, issuer, APPDB_NAME)
31+
32+
33+
@fixture(scope="module")
34+
@mark.usefixtures("appdb_certs", "ops_manager_certs", "issuer_ca_configmap")
35+
def ops_manager(
36+
namespace: str,
37+
issuer_ca_configmap: str,
38+
appdb_certs: str,
39+
ops_manager_certs: str,
40+
custom_version: Optional[str],
41+
custom_appdb_version: str,
42+
) -> MongoDBOpsManager:
43+
"""Create an Ops Manager with TLS-enabled AppDB for testing TLS disable."""
44+
om = MongoDBOpsManager.from_yaml(yaml_fixture("om_appdb_tls_disable.yaml"), namespace=namespace)
45+
om.set_version(custom_version)
46+
om.set_appdb_version(custom_appdb_version)
47+
48+
if try_load(om):
49+
return om
50+
51+
if is_multi_cluster():
52+
enable_multi_cluster_deployment(om)
53+
54+
om.update()
55+
return om
56+
57+
58+
@mark.e2e_om_appdb_tls_disable
59+
def test_om_created_with_tls(ops_manager: MongoDBOpsManager):
60+
"""Verify OM and AppDB are running with TLS enabled."""
61+
ops_manager.om_status().assert_reaches_phase(Phase.Running, timeout=900)
62+
ops_manager.appdb_status().assert_reaches_phase(Phase.Running, timeout=600)
63+
64+
65+
@mark.e2e_om_appdb_tls_disable
66+
def test_appdb_monitoring_works_with_tls(ops_manager: MongoDBOpsManager):
67+
"""Verify monitoring works with TLS enabled before we disable it."""
68+
ops_manager.assert_appdb_monitoring_group_was_created()
69+
ops_manager.assert_monitoring_data_exists(timeout=600, all_hosts=False)
70+
71+
72+
@mark.e2e_om_appdb_tls_disable
73+
def test_disable_tls_on_appdb(ops_manager: MongoDBOpsManager):
74+
"""
75+
CLOUDP-351614: Disable TLS on AppDB and verify the operator correctly handles
76+
the transition without leaving stale TLS params in monitoring config.
77+
"""
78+
ops_manager.load()
79+
80+
# Step 1: Transition to allowTLS mode first (required before fully disabling TLS)
81+
ops_manager["spec"]["applicationDatabase"]["additionalMongodConfig"] = {
82+
"net": {"tls": {"mode": "allowTLS"}}
83+
}
84+
ops_manager.update()
85+
ops_manager.appdb_status().assert_reaches_phase(Phase.Running, timeout=1200)
86+
87+
# Step 2: Fully disable TLS on AppDB
88+
# Must remove certsSecretPrefix, disable TLS, and remove additionalMongodConfig
89+
ops_manager["spec"]["applicationDatabase"]["security"]["certsSecretPrefix"] = None
90+
ops_manager["spec"]["applicationDatabase"]["security"]["tls"]["enabled"] = False
91+
del ops_manager["spec"]["applicationDatabase"]["additionalMongodConfig"]
92+
ops_manager.update()
93+
94+
# Wait for AppDB to reach Running state after TLS disable
95+
ops_manager.appdb_status().assert_reaches_phase(Phase.Running, timeout=1200)
96+
97+
98+
@mark.e2e_om_appdb_tls_disable
99+
def test_monitoring_works_after_tls_disable(ops_manager: MongoDBOpsManager):
100+
"""
101+
CLOUDP-351614: Verify monitoring data can still be collected after TLS disable.
102+
103+
After TLS is disabled, monitoring agents switch from x509 to SCRAM authentication.
104+
This test verifies that:
105+
1. The operator correctly cleared stale TLS params from monitoring config
106+
2. Monitoring agents can reconnect and collect data
107+
"""
108+
# Use a longer timeout as monitoring agents need time to reconnect with SCRAM auth
109+
ops_manager.assert_monitoring_data_exists(timeout=1200, all_hosts=False)

docker/mongodb-kubernetes-tests/tests/opsmanager/withMonitoredAppDB/om_ops_manager_appdb_monitoring_tls.py

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -101,34 +101,3 @@ def test_new_database_is_monitored_after_restart(ops_manager: MongoDBOpsManager)
101101
# We want to retrieve measurements from "new_database" which will indicate
102102
# that the monitoring agents are working with the new credentials.
103103
ops_manager.assert_monitoring_data_exists(database_name=database_name, timeout=1200, all_hosts=False)
104-
105-
106-
@mark.e2e_om_appdb_monitoring_tls
107-
def test_monitoring_works_after_tls_disable(ops_manager: MongoDBOpsManager):
108-
"""
109-
CLOUDP-351614: Verify monitoring continues to work after disabling TLS.
110-
When TLS is disabled, the monitoring config should not contain stale TLS params.
111-
"""
112-
ops_manager.load()
113-
114-
# Transition to allowTLS mode first (required before disabling TLS)
115-
ops_manager["spec"]["applicationDatabase"]["additionalMongodConfig"] = {
116-
"net": {"tls": {"mode": "allowTLS"}}
117-
}
118-
ops_manager.update()
119-
ops_manager.appdb_status().assert_reaches_phase(Phase.Running, timeout=1200)
120-
121-
# Disable TLS on AppDB - must also remove additionalMongodConfig that had allowTLS
122-
ops_manager["spec"]["applicationDatabase"]["security"]["certsSecretPrefix"] = None
123-
ops_manager["spec"]["applicationDatabase"]["security"]["tls"]["enabled"] = False
124-
del ops_manager["spec"]["applicationDatabase"]["additionalMongodConfig"]
125-
ops_manager.update()
126-
ops_manager.appdb_status().assert_reaches_phase(Phase.Running, timeout=1200)
127-
128-
# Verify monitoring agents are still healthy after TLS disable
129-
tester = ops_manager.get_om_tester(ops_manager.app_db_name())
130-
agents_after = tester.api_read_monitoring_agents()
131-
appdb_hostnames = ops_manager.get_appdb_hostnames_for_monitoring()
132-
appdb_agents_after = [a for a in agents_after if a["hostname"] in appdb_hostnames]
133-
assert all(a["stateName"] in ["ACTIVE", "STANDBY"] for a in appdb_agents_after), \
134-
f"Monitoring agents should be healthy after TLS disable: {appdb_agents_after}"

0 commit comments

Comments
 (0)