Skip to content

Commit 80aa2f7

Browse files
authored
Add extra configuration for problem-operator (#105)
* Add configuration for HIGH_CPU_USAGE_BROKER_SERVICE_NAME and HIGH_CPU_USAGE_FLAG_NAME * Adjust helm chart to detup HIGH_CPU_USAGE_BROKER_SERVICE_NAME
1 parent b66514d commit 80aa2f7

File tree

3 files changed

+39
-15
lines changed

3 files changed

+39
-15
lines changed

helm/easytrade/values.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,7 @@ problem-operator:
332332
env:
333333
POD_NAMESPACE: "{{ .Release.Namespace }}"
334334
HIGH_CPU_USAGE_BROKER_SERVICE_CPU_LIMIT: "300m"
335+
HIGH_CPU_USAGE_BROKER_SERVICE_NAME: "{{ .Release.Name }}-broker-service"
335336
FEATURE_FLAG_SERVICE_PROTOCOL: http
336337
FEATURE_FLAG_SERVICE_BASE_URL: "{{ .Release.Name }}-feature-flag-service"
337338
FEATURE_FLAG_SERVICE_PORT: "8080"

src/problem-operator/README.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,8 @@ When the `high_cpu_usage` feature flag is turned on, a CPU limits is applied to
7272

7373
This controller behavior can be altered using environment variables:
7474

75-
| Name | Description | Default |
76-
| --------------------------------------- | -------------------------------------------------------------------- | ------- |
77-
| HIGH_CPU_USAGE_BROKER_SERVICE_CPU_LIMIT | CPU resource value that should be applied during the problem pattern | 300m |
75+
| Name | Description | Default |
76+
| --------------------------------------- | -------------------------------------------------------------------- | -------------- |
77+
| HIGH_CPU_USAGE_BROKER_SERVICE_NAME | Name of the broker service deployment to target | broker-service |
78+
| HIGH_CPU_USAGE_FLAG_NAME | Name of the feature flag that triggers this controller | high_cpu_usage |
79+
| HIGH_CPU_USAGE_BROKER_SERVICE_CPU_LIMIT | CPU resource value that should be applied during the problem pattern | 300m |

src/problem-operator/controllers/highcpuusage/brokerservice.go

Lines changed: 33 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,45 @@ import (
1616
)
1717

1818
const (
19-
brokerService = "broker-service"
20-
highCpuUsage = "high_cpu_usage"
19+
brokerServiceDefault = "broker-service"
20+
brokerServiceEnv = "HIGH_CPU_USAGE_BROKER_SERVICE_NAME"
21+
22+
highCpuUsageDefault = "high_cpu_usage"
23+
highCpuUsageEnv = "HIGH_CPU_USAGE_FLAG_NAME"
2124

2225
cpuLimitValueDefault = "300m"
2326
cpuLimitValueEnv = "HIGH_CPU_USAGE_BROKER_SERVICE_CPU_LIMIT"
2427
)
2528

2629
type BrokerController struct {
27-
logger *zap.SugaredLogger
30+
logger *zap.SugaredLogger
31+
brokerService string
32+
highCpuUsage string
33+
cpuLimitValue string
2834
}
2935

3036
func NewBrokerController(l *zap.SugaredLogger) *BrokerController {
31-
return &BrokerController{logger: l}
37+
brokerService := os.Getenv(brokerServiceEnv)
38+
if brokerService == "" {
39+
brokerService = brokerServiceDefault
40+
}
41+
42+
highCpuUsage := os.Getenv(highCpuUsageEnv)
43+
if highCpuUsage == "" {
44+
highCpuUsage = highCpuUsageDefault
45+
}
46+
47+
cpuLimitValue := os.Getenv(cpuLimitValueEnv)
48+
if cpuLimitValue == "" {
49+
cpuLimitValue = cpuLimitValueDefault
50+
}
51+
52+
return &BrokerController{
53+
logger: l,
54+
brokerService: brokerService,
55+
highCpuUsage: highCpuUsage,
56+
cpuLimitValue: cpuLimitValue,
57+
}
3258
}
3359

3460
func (c *BrokerController) ApplyChange(
@@ -42,12 +68,7 @@ func (c *BrokerController) ApplyChange(
4268
return fmt.Errorf("unable to cast %s object to appsv1.Deployment: %w", obj.GetName(), controllers.ErrObjectCast)
4369
}
4470

45-
cpuLimitStr, found := os.LookupEnv(cpuLimitValueEnv)
46-
if !found {
47-
cpuLimitStr = cpuLimitValueDefault
48-
}
49-
50-
cpuLimit, err := resource.ParseQuantity(cpuLimitStr)
71+
cpuLimit, err := resource.ParseQuantity(c.cpuLimitValue)
5172
if err != nil {
5273
return fmt.Errorf("can't use %s as resource quantity: %w", cpuLimit.String(), err)
5374
}
@@ -112,7 +133,7 @@ func (c *BrokerController) GetResource(
112133
namespace string,
113134
client kubernetes.Interface,
114135
) (operator.Object, error) {
115-
deployment, err := client.AppsV1().Deployments(namespace).Get(ctx, brokerService, metav1.GetOptions{})
136+
deployment, err := client.AppsV1().Deployments(namespace).Get(ctx, c.brokerService, metav1.GetOptions{})
116137
if err != nil {
117138
return nil, fmt.Errorf("failed to get the deployment: %w", err)
118139
}
@@ -123,5 +144,5 @@ func (c *BrokerController) GetResource(
123144
}
124145

125146
func (c *BrokerController) GetFlagName() string {
126-
return highCpuUsage
147+
return c.highCpuUsage
127148
}

0 commit comments

Comments
 (0)