@@ -43,7 +43,9 @@ async def get_related_username_password(
4343
4444
4545async def deploy_cluster_components (
46- ops_test : OpsTest , num_units_cluster_config : dict | None = None , channel : str | None = None
46+ ops_test : OpsTest ,
47+ num_units_cluster_config : dict | None = None ,
48+ channel : str | None = None ,
4749) -> None :
4850 if not num_units_cluster_config :
4951 num_units_cluster_config = {
@@ -62,44 +64,105 @@ async def deploy_cluster_components(
6264 if channel
6365 else {"mongodb-image" : METADATA ["resources" ]["mongodb-image" ]["upstream-source" ]}
6466 )
65- await ops_test .model .deploy (
66- my_charm ,
67- resources = resources ,
68- num_units = num_units_cluster_config [CONFIG_SERVER_APP_NAME ],
69- config = {"role" : "config-server" },
70- application_name = CONFIG_SERVER_APP_NAME ,
71- channel = channel ,
72- series = "jammy" ,
73- trust = True ,
74- )
75- await ops_test .model .deploy (
76- my_charm ,
77- resources = resources ,
78- num_units = num_units_cluster_config [SHARD_ONE_APP_NAME ],
79- config = {"role" : "shard" },
80- application_name = SHARD_ONE_APP_NAME ,
81- channel = channel ,
82- series = "jammy" ,
83- trust = True ,
84- )
85- await ops_test .model .deploy (
86- my_charm ,
87- resources = resources ,
88- num_units = num_units_cluster_config [SHARD_TWO_APP_NAME ],
89- config = {"role" : "shard" },
90- application_name = SHARD_TWO_APP_NAME ,
91- channel = channel ,
92- series = "jammy" ,
93- trust = True ,
94- )
95-
96- await ops_test .model .wait_for_idle (
97- apps = CLUSTER_COMPONENTS ,
98- idle_period = 20 ,
99- timeout = TIMEOUT ,
100- raise_on_blocked = False ,
101- raise_on_error = False ,
102- )
67+ if channel is None :
68+ await ops_test .model .deploy (
69+ my_charm ,
70+ resources = resources ,
71+ num_units = num_units_cluster_config [CONFIG_SERVER_APP_NAME ],
72+ config = {"role" : "config-server" },
73+ application_name = CONFIG_SERVER_APP_NAME ,
74+ channel = channel ,
75+ series = "jammy" ,
76+ trust = True ,
77+ )
78+ await ops_test .model .deploy (
79+ my_charm ,
80+ resources = resources ,
81+ num_units = num_units_cluster_config [SHARD_ONE_APP_NAME ],
82+ config = {"role" : "shard" },
83+ application_name = SHARD_ONE_APP_NAME ,
84+ channel = channel ,
85+ series = "jammy" ,
86+ trust = True ,
87+ )
88+ await ops_test .model .deploy (
89+ my_charm ,
90+ resources = resources ,
91+ num_units = num_units_cluster_config [SHARD_TWO_APP_NAME ],
92+ config = {"role" : "shard" },
93+ application_name = SHARD_TWO_APP_NAME ,
94+ channel = channel ,
95+ series = "jammy" ,
96+ trust = True ,
97+ )
98+
99+ await ops_test .model .wait_for_idle (
100+ apps = CLUSTER_COMPONENTS ,
101+ idle_period = 20 ,
102+ timeout = TIMEOUT ,
103+ raise_on_blocked = False ,
104+ raise_on_error = False ,
105+ )
106+ # FIXME: (revert this) Deploy 1 and scale up due to silly bug fixed but unreleased
107+ else :
108+ await ops_test .model .deploy (
109+ my_charm ,
110+ resources = resources ,
111+ num_units = 1 ,
112+ config = {"role" : "config-server" },
113+ application_name = CONFIG_SERVER_APP_NAME ,
114+ channel = channel ,
115+ series = "jammy" ,
116+ trust = True ,
117+ )
118+ await ops_test .model .deploy (
119+ my_charm ,
120+ resources = resources ,
121+ num_units = 1 ,
122+ config = {"role" : "shard" },
123+ application_name = SHARD_ONE_APP_NAME ,
124+ channel = channel ,
125+ series = "jammy" ,
126+ trust = True ,
127+ )
128+ await ops_test .model .deploy (
129+ my_charm ,
130+ resources = resources ,
131+ num_units = 1 ,
132+ config = {"role" : "shard" },
133+ application_name = SHARD_TWO_APP_NAME ,
134+ channel = channel ,
135+ series = "jammy" ,
136+ trust = True ,
137+ )
138+ # Wait a bit before scaling up
139+ await ops_test .model .wait_for_idle (
140+ apps = CLUSTER_COMPONENTS ,
141+ idle_period = 20 ,
142+ timeout = TIMEOUT ,
143+ raise_on_blocked = False ,
144+ raise_on_error = False ,
145+ )
146+ if num_units_cluster_config [CONFIG_SERVER_APP_NAME ] != 1 :
147+ await ops_test .model .applications [CONFIG_SERVER_APP_NAME ].scale (
148+ num_units_cluster_config [CONFIG_SERVER_APP_NAME ]
149+ )
150+
151+ if num_units_cluster_config [SHARD_ONE_APP_NAME ] != 1 :
152+ await ops_test .model .applications [SHARD_ONE_APP_NAME ].scale (
153+ num_units_cluster_config [SHARD_ONE_APP_NAME ]
154+ )
155+ if num_units_cluster_config [SHARD_TWO_APP_NAME ] != 1 :
156+ await ops_test .model .applications [SHARD_TWO_APP_NAME ].scale (
157+ num_units_cluster_config [SHARD_TWO_APP_NAME ]
158+ )
159+ await ops_test .model .wait_for_idle (
160+ apps = CLUSTER_COMPONENTS ,
161+ idle_period = 20 ,
162+ timeout = TIMEOUT ,
163+ raise_on_blocked = False ,
164+ raise_on_error = False ,
165+ )
103166
104167
105168async def integrate_cluster (ops_test : OpsTest ) -> None :
0 commit comments