/
bluegreen.go
51 lines (45 loc) · 1.58 KB
/
bluegreen.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package clusterinstallation
import (
"github.com/go-logr/logr"
mattermostv1alpha1 "github.com/mattermost/mattermost-operator/apis/mattermost/v1alpha1"
)
func (r *ClusterInstallationReconciler) checkBlueGreen(mattermost *mattermostv1alpha1.ClusterInstallation, reqLogger logr.Logger) error {
if mattermost.Spec.BlueGreen.Enable {
reqLogger = reqLogger.WithValues("Reconcile", "mattermost")
blueGreen := []mattermostv1alpha1.AppDeployment{mattermost.Spec.BlueGreen.Blue, mattermost.Spec.BlueGreen.Green}
for _, deployment := range blueGreen {
err := r.checkMattermostService(mattermost, deployment.Name, deployment.Name, reqLogger)
if err != nil {
return err
}
if !mattermost.Spec.UseServiceLoadBalancer {
err = r.checkMattermostIngress(mattermost, deployment.Name, deployment.IngressName, mattermost.Spec.IngressAnnotations, reqLogger)
if err != nil {
return err
}
}
err = r.checkMattermostDeployment(mattermost, deployment.Name, deployment.IngressName, mattermost.Name, deployment.GetDeploymentImageName(), reqLogger)
if err != nil {
return err
}
}
err := r.deleteMattermostDeployment(mattermost, mattermost.GetName(), reqLogger)
if err != nil {
return err
}
} else {
if mattermost.Status.BlueName != "" {
err := r.deleteAllMattermostComponents(mattermost, mattermost.Status.BlueName, reqLogger)
if err != nil {
return err
}
}
if mattermost.Status.GreenName != "" {
err := r.deleteAllMattermostComponents(mattermost, mattermost.Status.GreenName, reqLogger)
if err != nil {
return err
}
}
}
return nil
}