generated from kyma-project/template-repository
/
served_filter.go
38 lines (33 loc) · 1.03 KB
/
served_filter.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
package state
import (
"context"
"fmt"
"github.com/kyma-project/serverless-manager/api/v1alpha1"
ctrl "sigs.k8s.io/controller-runtime"
)
func sFnServedFilter(ctx context.Context, r *reconciler, s *systemState) (stateFn, *ctrl.Result, error) {
if s.instance.IsServedEmpty() {
servedServerless, err := GetServedServerless(ctx, r.k8s.client)
if err != nil {
return stopWithError(err)
}
if servedServerless == nil {
s.setServed(v1alpha1.ServedTrue)
return nextState(sFnUpdateStatusAndRequeue)
}
s.setServed(v1alpha1.ServedFalse)
s.setState(v1alpha1.StateError)
err = fmt.Errorf("only one instance of Serverless is allowed (current served instance: %s/%s)",
servedServerless.GetNamespace(), servedServerless.GetName())
s.instance.UpdateConditionFalse(
v1alpha1.ConditionTypeConfigured,
v1alpha1.ConditionReasonServerlessDuplicated,
err,
)
return nextState(sFnUpdateStatusWithError(err))
}
if s.instance.Status.Served == v1alpha1.ServedFalse {
return nil, nil, nil
}
return nextState(sFnInitialize)
}