Skip to content

Commit 25bcd07

Browse files
committed
update the volumereplication condition
this commit updates the volumereplication conditions to include descriptive message for every operations Signed-off-by: yati1998 <[email protected]>
1 parent ed2c2a5 commit 25bcd07

File tree

3 files changed

+96
-29
lines changed

3 files changed

+96
-29
lines changed

api/replication.storage/v1alpha1/volumereplication_types.go

+22
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,28 @@ const (
3636
ConditionValidated = "Validated"
3737
)
3838

39+
// These are valid messages for various conditions and states of volume replication.
40+
const (
41+
MessagePromoted = "is promoted to primary and replicating to secondary"
42+
MessageHealthy = "is healthy"
43+
MessageNotResyncing = "is not resyncing"
44+
MessageValidated = "is validated and met all prerequisites"
45+
MessageFailedPromoted = "failed to promote"
46+
MessageFailedDemoted = "failed to demote"
47+
MessageFailedPreCondition = "failed to meet prerequisite"
48+
MessageDemoted = "is demoted to secondary"
49+
MessageDegraded = "is degraded"
50+
MessageResyncTriggered = "is resyncing changes from primary to secondary"
51+
MessageResyncFailed = "failed to resync"
52+
)
53+
54+
type Source string
55+
56+
const (
57+
Volume Source = "volume"
58+
VolumeGroup Source = "volume group"
59+
)
60+
3961
// These are valid conditions.
4062

4163
const (

internal/controller/replication.storage/status.go

+53-8
Original file line numberDiff line numberDiff line change
@@ -17,27 +17,42 @@ limitations under the License.
1717
package controller
1818

1919
import (
20+
"fmt"
2021
"time"
2122

2223
"github.com/csi-addons/kubernetes-csi-addons/api/replication.storage/v1alpha1"
2324
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2425
)
2526

27+
func getSource(dataSource string) v1alpha1.Source {
28+
if dataSource == pvcDataSource {
29+
return v1alpha1.Volume
30+
} else if dataSource == volumeGroupReplicationDataSource {
31+
return v1alpha1.VolumeGroup
32+
} else {
33+
return ""
34+
}
35+
}
36+
2637
// sets conditions when volume was promoted successfully.
27-
func setPromotedCondition(conditions *[]metav1.Condition, observedGeneration int64) {
38+
func setPromotedCondition(conditions *[]metav1.Condition, observedGeneration int64, dataSource string) {
39+
source := getSource(dataSource)
2840
setStatusCondition(conditions, &metav1.Condition{
41+
Message: fmt.Sprintf("%s %s", source, v1alpha1.MessagePromoted),
2942
Type: v1alpha1.ConditionCompleted,
3043
Reason: v1alpha1.Promoted,
3144
ObservedGeneration: observedGeneration,
3245
Status: metav1.ConditionTrue,
3346
})
3447
setStatusCondition(conditions, &metav1.Condition{
48+
Message: fmt.Sprintf("%s %s", source, v1alpha1.MessageHealthy),
3549
Type: v1alpha1.ConditionDegraded,
3650
Reason: v1alpha1.Healthy,
3751
ObservedGeneration: observedGeneration,
3852
Status: metav1.ConditionFalse,
3953
})
4054
setStatusCondition(conditions, &metav1.Condition{
55+
Message: fmt.Sprintf("%s %s", source, v1alpha1.MessageNotResyncing),
4156
Type: v1alpha1.ConditionResyncing,
4257
Reason: v1alpha1.NotResyncing,
4358
ObservedGeneration: observedGeneration,
@@ -46,26 +61,31 @@ func setPromotedCondition(conditions *[]metav1.Condition, observedGeneration int
4661
}
4762

4863
// sets conditions when volume promotion was failed.
49-
func setFailedPromotionCondition(conditions *[]metav1.Condition, observedGeneration int64) {
64+
func setFailedPromotionCondition(conditions *[]metav1.Condition, observedGeneration int64, dataSource, completedMessage, degradedDetailedMessage string) {
65+
source := getSource(dataSource)
5066
setStatusCondition(conditions, &metav1.Condition{
67+
Message: completedMessage,
5168
Type: v1alpha1.ConditionCompleted,
5269
Reason: v1alpha1.FailedToPromote,
5370
ObservedGeneration: observedGeneration,
5471
Status: metav1.ConditionFalse,
5572
})
5673
setStatusCondition(conditions, &metav1.Condition{
74+
Message: fmt.Sprintf("%s %s: %s", source, v1alpha1.MessageFailedPromoted, degradedDetailedMessage),
5775
Type: v1alpha1.ConditionDegraded,
5876
Reason: v1alpha1.Error,
5977
ObservedGeneration: observedGeneration,
6078
Status: metav1.ConditionTrue,
6179
})
6280
setStatusCondition(conditions, &metav1.Condition{
81+
Message: fmt.Sprintf("%s %s", source, v1alpha1.MessageNotResyncing),
6382
Type: v1alpha1.ConditionResyncing,
6483
Reason: v1alpha1.NotResyncing,
6584
ObservedGeneration: observedGeneration,
6685
Status: metav1.ConditionFalse,
6786
})
6887
setStatusCondition(conditions, &metav1.Condition{
88+
Message: fmt.Sprintf("%s %s", source, v1alpha1.MessageValidated),
6989
Type: v1alpha1.ConditionValidated,
7090
Reason: v1alpha1.PrerequisiteMet,
7191
ObservedGeneration: observedGeneration,
@@ -74,26 +94,31 @@ func setFailedPromotionCondition(conditions *[]metav1.Condition, observedGenerat
7494
}
7595

7696
// sets conditions when volume promotion was failed due to failed validation.
77-
func setFailedValidationCondition(conditions *[]metav1.Condition, observedGeneration int64) {
97+
func setFailedValidationCondition(conditions *[]metav1.Condition, observedGeneration int64, dataSource, degradedMessage, validationDetailedMessage string) {
98+
source := getSource(dataSource)
7899
setStatusCondition(conditions, &metav1.Condition{
100+
Message: fmt.Sprintf("%s %s", source, v1alpha1.MessageFailedPromoted),
79101
Type: v1alpha1.ConditionCompleted,
80102
Reason: v1alpha1.FailedToPromote,
81103
ObservedGeneration: observedGeneration,
82104
Status: metav1.ConditionFalse,
83105
})
84106
setStatusCondition(conditions, &metav1.Condition{
107+
Message: degradedMessage,
85108
Type: v1alpha1.ConditionDegraded,
86109
Reason: v1alpha1.Error,
87110
ObservedGeneration: observedGeneration,
88111
Status: metav1.ConditionTrue,
89112
})
90113
setStatusCondition(conditions, &metav1.Condition{
114+
Message: fmt.Sprintf("%s %s", source, v1alpha1.MessageNotResyncing),
91115
Type: v1alpha1.ConditionResyncing,
92116
Reason: v1alpha1.NotResyncing,
93117
ObservedGeneration: observedGeneration,
94118
Status: metav1.ConditionFalse,
95119
})
96120
setStatusCondition(conditions, &metav1.Condition{
121+
Message: fmt.Sprintf("%s: %s", v1alpha1.MessageFailedPreCondition, validationDetailedMessage),
97122
Type: v1alpha1.ConditionValidated,
98123
Reason: v1alpha1.PrerequisiteNotMet,
99124
ObservedGeneration: observedGeneration,
@@ -102,14 +127,17 @@ func setFailedValidationCondition(conditions *[]metav1.Condition, observedGenera
102127
}
103128

104129
// sets conditions when volume is demoted and ready to use (resync completed).
105-
func setNotDegradedCondition(conditions *[]metav1.Condition, observedGeneration int64) {
130+
func setNotDegradedCondition(conditions *[]metav1.Condition, observedGeneration int64, dataSource string) {
131+
source := getSource(dataSource)
106132
setStatusCondition(conditions, &metav1.Condition{
133+
Message: fmt.Sprintf("%s %s", source, v1alpha1.MessageDemoted),
107134
Type: v1alpha1.ConditionDegraded,
108135
Reason: v1alpha1.Healthy,
109136
ObservedGeneration: observedGeneration,
110137
Status: metav1.ConditionFalse,
111138
})
112139
setStatusCondition(conditions, &metav1.Condition{
140+
Message: fmt.Sprintf("%s %s", source, v1alpha1.MessageNotResyncing),
113141
Type: v1alpha1.ConditionResyncing,
114142
Reason: v1alpha1.NotResyncing,
115143
ObservedGeneration: observedGeneration,
@@ -118,20 +146,24 @@ func setNotDegradedCondition(conditions *[]metav1.Condition, observedGeneration
118146
}
119147

120148
// sets conditions when volume was demoted successfully.
121-
func setDemotedCondition(conditions *[]metav1.Condition, observedGeneration int64) {
149+
func setDemotedCondition(conditions *[]metav1.Condition, observedGeneration int64, dataSource string) {
150+
source := getSource(dataSource)
122151
setStatusCondition(conditions, &metav1.Condition{
152+
Message: fmt.Sprintf("%s %s", source, v1alpha1.MessageDemoted),
123153
Type: v1alpha1.ConditionCompleted,
124154
Reason: v1alpha1.Demoted,
125155
ObservedGeneration: observedGeneration,
126156
Status: metav1.ConditionTrue,
127157
})
128158
setStatusCondition(conditions, &metav1.Condition{
159+
Message: fmt.Sprintf("%s %s", source, v1alpha1.MessageDegraded),
129160
Type: v1alpha1.ConditionDegraded,
130161
Reason: v1alpha1.VolumeDegraded,
131162
ObservedGeneration: observedGeneration,
132163
Status: metav1.ConditionTrue,
133164
})
134165
setStatusCondition(conditions, &metav1.Condition{
166+
Message: fmt.Sprintf("%s %s", source, v1alpha1.MessageNotResyncing),
135167
Type: v1alpha1.ConditionResyncing,
136168
Reason: v1alpha1.NotResyncing,
137169
ObservedGeneration: observedGeneration,
@@ -140,20 +172,24 @@ func setDemotedCondition(conditions *[]metav1.Condition, observedGeneration int6
140172
}
141173

142174
// sets conditions when volume demotion was failed.
143-
func setFailedDemotionCondition(conditions *[]metav1.Condition, observedGeneration int64) {
175+
func setFailedDemotionCondition(conditions *[]metav1.Condition, observedGeneration int64, dataSource, completedMessage, degradedDetailedMessage string) {
176+
source := getSource(dataSource)
144177
setStatusCondition(conditions, &metav1.Condition{
178+
Message: completedMessage,
145179
Type: v1alpha1.ConditionCompleted,
146180
Reason: v1alpha1.FailedToDemote,
147181
ObservedGeneration: observedGeneration,
148182
Status: metav1.ConditionFalse,
149183
})
150184
setStatusCondition(conditions, &metav1.Condition{
185+
Message: fmt.Sprintf("%s %s: %s", source, v1alpha1.MessageFailedDemoted, degradedDetailedMessage),
151186
Type: v1alpha1.ConditionDegraded,
152187
Reason: v1alpha1.Error,
153188
ObservedGeneration: observedGeneration,
154189
Status: metav1.ConditionTrue,
155190
})
156191
setStatusCondition(conditions, &metav1.Condition{
192+
Message: fmt.Sprintf("%s %s", source, v1alpha1.MessageNotResyncing),
157193
Type: v1alpha1.ConditionResyncing,
158194
Reason: v1alpha1.NotResyncing,
159195
ObservedGeneration: observedGeneration,
@@ -162,20 +198,24 @@ func setFailedDemotionCondition(conditions *[]metav1.Condition, observedGenerati
162198
}
163199

164200
// sets conditions when volume resync was triggered successfully.
165-
func setResyncCondition(conditions *[]metav1.Condition, observedGeneration int64) {
201+
func setResyncCondition(conditions *[]metav1.Condition, observedGeneration int64, dataSource string) {
202+
source := getSource(dataSource)
166203
setStatusCondition(conditions, &metav1.Condition{
204+
Message: fmt.Sprintf("%s %s", source, v1alpha1.MessageDemoted),
167205
Type: v1alpha1.ConditionCompleted,
168206
Reason: v1alpha1.Demoted,
169207
ObservedGeneration: observedGeneration,
170208
Status: metav1.ConditionTrue,
171209
})
172210
setStatusCondition(conditions, &metav1.Condition{
211+
Message: fmt.Sprintf("%s %s", source, v1alpha1.MessageDegraded),
173212
Type: v1alpha1.ConditionDegraded,
174213
Reason: v1alpha1.VolumeDegraded,
175214
ObservedGeneration: observedGeneration,
176215
Status: metav1.ConditionTrue,
177216
})
178217
setStatusCondition(conditions, &metav1.Condition{
218+
Message: fmt.Sprintf("%s %s", source, v1alpha1.MessageResyncTriggered),
179219
Type: v1alpha1.ConditionResyncing,
180220
Reason: v1alpha1.ResyncTriggered,
181221
ObservedGeneration: observedGeneration,
@@ -184,20 +224,24 @@ func setResyncCondition(conditions *[]metav1.Condition, observedGeneration int64
184224
}
185225

186226
// sets conditions when volume resync failed.
187-
func setFailedResyncCondition(conditions *[]metav1.Condition, observedGeneration int64) {
227+
func setFailedResyncCondition(conditions *[]metav1.Condition, observedGeneration int64, dataSource, completedMessage, degradedDetailedMessage string) {
228+
source := getSource(dataSource)
188229
setStatusCondition(conditions, &metav1.Condition{
230+
Message: completedMessage,
189231
Type: v1alpha1.ConditionCompleted,
190232
Reason: v1alpha1.FailedToResync,
191233
ObservedGeneration: observedGeneration,
192234
Status: metav1.ConditionFalse,
193235
})
194236
setStatusCondition(conditions, &metav1.Condition{
237+
Message: fmt.Sprintf("%s %s: %s", source, v1alpha1.MessageResyncFailed, degradedDetailedMessage),
195238
Type: v1alpha1.ConditionDegraded,
196239
Reason: v1alpha1.Error,
197240
ObservedGeneration: observedGeneration,
198241
Status: metav1.ConditionTrue,
199242
})
200243
setStatusCondition(conditions, &metav1.Condition{
244+
Message: fmt.Sprintf("%s %s", source, v1alpha1.MessageNotResyncing),
201245
Type: v1alpha1.ConditionResyncing,
202246
Reason: v1alpha1.FailedToResync,
203247
ObservedGeneration: observedGeneration,
@@ -223,6 +267,7 @@ func setStatusCondition(existingConditions *[]metav1.Condition, newCondition *me
223267
existingCondition.LastTransitionTime = metav1.NewTime(time.Now())
224268
}
225269

270+
existingCondition.Message = newCondition.Message
226271
existingCondition.Reason = newCondition.Reason
227272
existingCondition.ObservedGeneration = newCondition.ObservedGeneration
228273
}

0 commit comments

Comments
 (0)