@@ -134,23 +134,8 @@ func (o *Options) RunReset(ctx context.Context) error {
134134 return err
135135 }
136136
137- // Delete gateway client on cluster 1
138- if err := cluster1 .DeleteGatewayClient (ctx , forge .DefaultGatewayClientName (cluster2 .localClusterID )); err != nil {
139- return err
140- }
141-
142- // Delete gateway client on cluster 2
143- if err := cluster2 .DeleteGatewayClient (ctx , forge .DefaultGatewayClientName (cluster1 .localClusterID )); err != nil {
144- return err
145- }
146-
147- // Delete gateway server on cluster 1
148- if err := cluster1 .DeleteGatewayServer (ctx , forge .DefaultGatewayServerName (cluster2 .localClusterID )); err != nil {
149- return err
150- }
151-
152- // Delete gateway server on cluster 2
153- if err := cluster2 .DeleteGatewayServer (ctx , forge .DefaultGatewayServerName (cluster1 .localClusterID )); err != nil {
137+ // Run disconnect command to remove gateways.
138+ if err := o .RunDisconnect (ctx , cluster1 , cluster2 ); err != nil {
154139 return err
155140 }
156141
@@ -294,27 +279,44 @@ func (o *Options) RunConnect(ctx context.Context) error {
294279}
295280
296281// RunDisconnect disconnects two clusters.
297- func (o * Options ) RunDisconnect (ctx context.Context ) error {
282+ // It deletes the gateways (if present) on both clusters.
283+ // Cluster1 and Cluster2 are optional, if not provided they will be created and initialized.
284+ func (o * Options ) RunDisconnect (ctx context.Context , cluster1 , cluster2 * Cluster ) error {
285+ var err error
298286 ctx , cancel := context .WithTimeout (ctx , o .Timeout )
299287 defer cancel ()
300288
301- // Create and initialize cluster 1.
302- cluster1 , err := NewCluster (ctx , o .LocalFactory , o .RemoteFactory , false )
303- if err != nil {
304- return err
289+ if cluster1 == nil {
290+ // Create and initialize cluster 1.
291+ cluster1 , err = NewCluster (ctx , o .LocalFactory , o .RemoteFactory , false )
292+ if err != nil {
293+ return err
294+ }
305295 }
306296
307- // Create and initialize cluster 2.
308- cluster2 , err := NewCluster (ctx , o .RemoteFactory , o .LocalFactory , false )
309- if err != nil {
310- return err
297+ if cluster2 == nil {
298+ // Create and initialize cluster 2.
299+ cluster2 , err = NewCluster (ctx , o .RemoteFactory , o .LocalFactory , false )
300+ if err != nil {
301+ return err
302+ }
311303 }
312304
313305 // Delete gateway client on cluster 1
314306 if err := cluster1 .DeleteGatewayClient (ctx , forge .DefaultGatewayClientName (cluster2 .localClusterID )); err != nil {
315307 return err
316308 }
317309
310+ // Delete gateway client on cluster 2
311+ if err := cluster2 .DeleteGatewayClient (ctx , forge .DefaultGatewayClientName (cluster1 .localClusterID )); err != nil {
312+ return err
313+ }
314+
315+ // Delete gateway server on cluster 1
316+ if err := cluster1 .DeleteGatewayServer (ctx , forge .DefaultGatewayServerName (cluster2 .localClusterID )); err != nil {
317+ return err
318+ }
319+
318320 // Delete gateway server on cluster 2
319321 return cluster2 .DeleteGatewayServer (ctx , forge .DefaultGatewayServerName (cluster1 .localClusterID ))
320322}
0 commit comments