Skip to content

Commit 1f1f8ff

Browse files
authored
Ensure the operator runs correctly after MEKO uninstallation (#65)
# Summary Add a last step to the mck -> meko upgrade, to ensure the multi cluster member list configmap is still present and correct after uninstalling the helm release of MEKO. Passing patch: https://spruce.mongodb.com/version/68124020fead0f0007f00929/tasks?sorts=STATUS%3AASC%3BBASE_STATUS%3ADESC
1 parent ccf22c8 commit 1f1f8ff

File tree

4 files changed

+43
-5
lines changed

4 files changed

+43
-5
lines changed

docker/mongodb-kubernetes-tests/tests/conftest.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@
7070
DATABASE_SA_NAME = "mongodb-kubernetes-database-pods"
7171
OM_SA_NAME = "mongodb-kubernetes-ops-manager"
7272
TELEMETRY_CONFIGMAP_NAME = LEGACY_OPERATOR_NAME + "-telemetry"
73+
MULTI_CLUSTER_MEMBER_LIST_CONFIGMAP = LEGACY_OPERATOR_NAME + "-member-list"
7374

7475
logger = test_logger.get_test_logger(__name__)
7576

docker/mongodb-kubernetes-tests/tests/multicluster_appdb/multicluster_appdb_disaster_recovery.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,11 @@
1414
from kubetester.mongodb import Phase
1515
from kubetester.opsmanager import MongoDBOpsManager
1616
from pytest import fixture, mark
17-
from tests.conftest import create_appdb_certs, get_member_cluster_api_client
17+
from tests.conftest import (
18+
MULTI_CLUSTER_MEMBER_LIST_CONFIGMAP,
19+
create_appdb_certs,
20+
get_member_cluster_api_client,
21+
)
1822
from tests.multicluster.conftest import cluster_spec_list
1923

2024
FAILED_MEMBER_CLUSTER_NAME = "kind-e2e-cluster-3"
@@ -121,7 +125,7 @@ def test_remove_cluster_from_operator_member_list_to_simulate_it_is_unhealthy(
121125
):
122126
member_list_cm = read_configmap(
123127
namespace,
124-
"mongodb-enterprise-operator-member-list",
128+
MULTI_CLUSTER_MEMBER_LIST_CONFIGMAP,
125129
api_client=central_cluster_client,
126130
)
127131
# this if is only for allowing re-running the test locally
@@ -132,7 +136,7 @@ def test_remove_cluster_from_operator_member_list_to_simulate_it_is_unhealthy(
132136
# this will trigger operators restart as it panics on changing the configmap
133137
update_configmap(
134138
namespace,
135-
"mongodb-enterprise-operator-member-list",
139+
MULTI_CLUSTER_MEMBER_LIST_CONFIGMAP,
136140
member_list_cm,
137141
api_client=central_cluster_client,
138142
)

docker/mongodb-kubernetes-tests/tests/multicluster_shardedcluster/multi_cluster_sharded_disaster_recovery.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,11 @@
2525
from kubetester.opsmanager import MongoDBOpsManager
2626
from pytest import fixture, mark
2727
from tests import test_logger
28-
from tests.conftest import get_central_cluster_client, get_member_cluster_api_client
28+
from tests.conftest import (
29+
MULTI_CLUSTER_MEMBER_LIST_CONFIGMAP,
30+
get_central_cluster_client,
31+
get_member_cluster_api_client,
32+
)
2933
from tests.multicluster.conftest import cluster_spec_list
3034
from tests.shardedcluster.conftest import (
3135
enable_multi_cluster_deployment,
@@ -157,7 +161,7 @@ def test_create_sharded_cluster(self, sc: MongoDB, config_version_store):
157161
def test_remove_cluster_from_operator_member_list_to_simulate_it_is_unhealthy(
158162
self, namespace, central_cluster_client: kubernetes.client.ApiClient, multi_cluster_operator: Operator
159163
):
160-
operator_cm_name = "mongodb-enterprise-operator-member-list"
164+
operator_cm_name = MULTI_CLUSTER_MEMBER_LIST_CONFIGMAP
161165
logger.debug(f"Deleting cluster {FAILED_MEMBER_CLUSTER_NAME} from configmap {operator_cm_name}")
162166
member_list_cm = read_configmap(
163167
namespace,

docker/mongodb-kubernetes-tests/tests/upgrades/meko_mck_upgrade.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,18 @@
1515
from tests.conftest import (
1616
LEGACY_MULTI_CLUSTER_OPERATOR_NAME,
1717
LEGACY_OPERATOR_NAME,
18+
MULTI_CLUSTER_MEMBER_LIST_CONFIGMAP,
19+
MULTI_CLUSTER_OPERATOR_NAME,
20+
OPERATOR_NAME,
1821
get_multi_cluster_operator,
1922
is_multi_cluster,
2023
log_deployments_info,
2124
setup_log_rotate_for_agents,
2225
)
2326
from tests.multicluster.conftest import cluster_spec_list
27+
from tests.multicluster_appdb.multicluster_appdb_state_operator_upgrade_downgrade import (
28+
assert_cm_expected_data,
29+
)
2430
from tests.upgrades import downscale_operator_deployment
2531

2632
logger = test_logger.get_test_logger(__name__)
@@ -152,3 +158,26 @@ def test_replicaset_reconciled(replica_set: MongoDB):
152158
def test_uninstall_latest_official_operator(namespace: str):
153159
helm_uninstall("mongodb-enterprise-operator-multi-cluster" if is_multi_cluster() else "mongodb-enterprise-operator")
154160
log_deployments_info(namespace)
161+
162+
163+
@mark.e2e_meko_mck_upgrade
164+
def test_operator_still_running(namespace: str, central_cluster_client: client.ApiClient, member_cluster_names):
165+
operator_name = MULTI_CLUSTER_OPERATOR_NAME if is_multi_cluster() else OPERATOR_NAME
166+
operator_instance = Operator(
167+
name=operator_name,
168+
namespace=namespace,
169+
)
170+
logger.info(f"Checking status of operator '{operator_name}' in namespace '{namespace}'")
171+
operator_instance.assert_is_running()
172+
log_deployments_info(namespace)
173+
174+
if is_multi_cluster():
175+
# Check if member-list configmap is present and content is correct
176+
logger.info(f"Checking correctness of member list configmap")
177+
expected_data = {name: "" for name in member_cluster_names}
178+
assert_cm_expected_data(
179+
name=MULTI_CLUSTER_MEMBER_LIST_CONFIGMAP,
180+
namespace=namespace,
181+
expected_data=expected_data,
182+
central_cluster_client=central_cluster_client,
183+
)

0 commit comments

Comments
 (0)