Skip to content

Commit 71d903e

Browse files
committed
Automatically set created_by field when creating new Silence
Currently, when a user creates a new Silence, they can enter anything into the created_by field. If left empty, the user's email will automatically be filled in. In cases where the user doesn't have an email, the value "Promgen" will be set. This can cause ambiguity and make tracking difficult. Therefore, we have removed the ability to input values for created_by and always set the user's username instead to ensure accountability when creating a Silence.
1 parent 5b4a99a commit 71d903e

7 files changed

Lines changed: 29 additions & 27 deletions

File tree

promgen/forms.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,18 +52,13 @@ class SilenceForm(forms.Form):
5252
startsAt = forms.CharField(required=False, validators=[validators.datetime])
5353
endsAt = forms.CharField(required=False, validators=[validators.datetime])
5454
comment = forms.CharField(required=False)
55-
createdBy = forms.CharField(required=False)
55+
createdBy = forms.CharField()
5656

5757
def clean_comment(self):
5858
if self.cleaned_data["comment"]:
5959
return self.cleaned_data["comment"]
6060
return "Silenced from Promgen"
6161

62-
def clean_createdBy(self):
63-
if self.cleaned_data["createdBy"]:
64-
return self.cleaned_data["createdBy"]
65-
return "Promgen"
66-
6762
def clean(self):
6863
data = super().clean()
6964

promgen/proxy.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ def get(self, request):
181181
def post(self, request):
182182
body = json.loads(request.body.decode("utf-8"))
183183
body.setdefault("comment", "Silenced from Promgen")
184-
body.setdefault("createdBy", request.user.email)
184+
body.setdefault("createdBy", request.user.username)
185185

186186
form = forms.SilenceForm(body)
187187
if not form.is_valid():
@@ -222,7 +222,9 @@ class ProxySilencesV2(APIView):
222222
permission_classes = [permissions.AllowAny]
223223

224224
def post(self, request, *args, **kwargs):
225-
serializer = serializers.SilenceSerializer(data=request.data)
225+
serializer = serializers.SilenceSerializer(
226+
data={**request.data, "createdBy": request.user.username}
227+
)
226228
if not serializer.is_valid():
227229
return JsonResponse(
228230
{

promgen/serializers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ class SilenceSerializer(serializers.Serializer):
133133
matchers = MatcherSerializer(many=True)
134134
startsAt = serializers.CharField(required=False)
135135
endsAt = serializers.CharField(required=False)
136-
createdBy = serializers.CharField(default="Promgen")
136+
createdBy = serializers.CharField()
137137
comment = serializers.CharField(default="Silenced from Promgen")
138138
duration = serializers.CharField(required=False)
139139

promgen/templates/promgen/vue/silence_create_modal.html

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -86,17 +86,6 @@ <h5>Matcher</h5>
8686
</div>
8787
</div>
8888

89-
<div class="row mb-4">
90-
<div class="col-md-6">
91-
<h5>
92-
Created By
93-
</h5>
94-
<div>
95-
<input v-model="form.createdBy" class="form-control" />
96-
</div>
97-
</div>
98-
</div>
99-
10089
<div class="row mb-4">
10190
<div class="col-md-12">
10291
<h5>

promgen/tests/examples/silence.duration.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"createdBy": "demo@example.com",
2+
"createdBy": "demo",
33
"matchers": [{
44
"value": "example.com:[0-9]*",
55
"isRegex": true,

promgen/tests/examples/silence.range.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"createdBy": "demo@example.com",
2+
"createdBy": "demo",
33
"matchers": [{
44
"value": "example.com:[0-9]*",
55
"isRegex": true,

promgen/tests/test_silence.py

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -64,35 +64,51 @@ def test_range(self, mock_post):
6464

6565
@override_settings(PROMGEN=TEST_SETTINGS)
6666
def test_site_silence_errors(self):
67-
form = forms.SilenceForm(data={"labels": {}, "duration": "1m"})
67+
form = forms.SilenceForm(
68+
data={"labels": {}, "duration": "1m", "createdBy": self.user.username}
69+
)
6870
self.assertEqual(
6971
form.errors.as_data(),
7072
{"__all__": [errors.SilenceError.NOLABEL.error()]},
7173
)
7274

73-
form = forms.SilenceForm(data={"labels": {"alertname": "example-rule"}, "duration": "1m"})
75+
form = forms.SilenceForm(
76+
data={
77+
"labels": {"alertname": "example-rule"},
78+
"duration": "1m",
79+
"createdBy": self.user.username,
80+
}
81+
)
7482
self.assertEqual(
7583
form.errors.as_data(),
7684
{"__all__": [errors.SilenceError.GLOBALSILENCE.error()]},
7785
)
7886

7987
form = forms.SilenceForm(
80-
data={"labels": {"alertname": "example-rule", "foo": "bar"}, "duration": "1m"}
88+
data={
89+
"labels": {"alertname": "example-rule", "foo": "bar"},
90+
"duration": "1m",
91+
"createdBy": self.user.username,
92+
}
8193
)
8294
self.assertEqual(
8395
form.errors.as_data(),
8496
{"__all__": [errors.SilenceError.GLOBALSILENCE.error()]},
8597
)
8698

8799
form = forms.SilenceForm(
88-
data={"labels": {"alertname": "example-rule", "service": "foo"}, "duration": "1m"}
100+
data={
101+
"labels": {"alertname": "example-rule", "service": "foo"},
102+
"duration": "1m",
103+
"createdBy": self.user.username,
104+
}
89105
)
90106
self.assertEqual(form.errors, {}, "Expected no errors")
91107
self.assertEqual(
92108
form.cleaned_data,
93109
{
94110
"comment": "Silenced from Promgen",
95-
"createdBy": "Promgen",
111+
"createdBy": "demo",
96112
"duration": "1m",
97113
"endsAt": "",
98114
"labels": {"alertname": "example-rule", "service": "foo"},

0 commit comments

Comments
 (0)