generated from kyma-project/template-repository
/
preventCidrChange.go
30 lines (27 loc) · 1.08 KB
/
preventCidrChange.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
package iprange
import (
"context"
cloudresourcesv1beta1 "github.com/kyma-project/cloud-manager/api/cloud-resources/v1beta1"
"github.com/kyma-project/cloud-manager/pkg/composed"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
func preventCidrChange(ctx context.Context, st composed.State) (error, context.Context) {
state := st.(*State)
if len(state.ObjAsIpRange().Status.Cidr) == 0 ||
state.ObjAsIpRange().Spec.Cidr == state.ObjAsIpRange().Status.Cidr {
// status.cidr is empty OR same as spec.cidr
return nil, nil
}
// status.cidr is not empty AND different from spec.cidr
state.ObjAsIpRange().Status.State = cloudresourcesv1beta1.StateError
return composed.UpdateStatus(state.ObjAsIpRange()).
SetCondition(metav1.Condition{
Type: cloudresourcesv1beta1.ConditionTypeError,
Status: "False",
Reason: cloudresourcesv1beta1.ConditionReasonCidrCanNotBeChanged,
Message: "IpRange CIDR can not be changed",
}).
ErrorLogMessage("Error updating IpRange status with CIDR changed condition").
SuccessLogMsg("Forgetting IpRange with changed Cidr").
Run(ctx, state)
}