Merge ~mthaddon/charm-k8s-ingress/+git/charm-k8s-ingress:proxy-body-size-default into charm-k8s-ingress:master

Proposed by Tom Haddon
Status: Merged
Approved by: Jon Seager
Approved revision: 2f07888a6cc21c53d234b931f2011f588bff9123
Merged at revision: a8d4cf034d918b501dfd6ccc0e5f23ebd6c134c8
Proposed branch: ~mthaddon/charm-k8s-ingress/+git/charm-k8s-ingress:proxy-body-size-default
Merge into: charm-k8s-ingress:master
Diff against target: 135 lines (+16/-11)
3 files modified
config.yaml (+1/-1)
src/charm.py (+2/-7)
tests/unit/test_charm.py (+13/-3)
Reviewer Review Type Date Requested Status
🤖 prod-jenkaas-is (community) continuous-integration Approve
ingress-charmers Pending
Review via email: mp+405552@code.launchpad.net

Commit message

Set default proxy-body-size to 20m but ensure this can be overridden to be unlimited by setting to 0.

Description of the change

Set default proxy-body-size to 20m but ensure this can be overridden to be unlimited by setting to 0.

To post a comment you must log in.
Revision history for this message
🤖 Canonical IS Merge Bot (canonical-is-mergebot) wrote :

This merge proposal is being monitored by mergebot. Change the status to Approved to merge.

Revision history for this message
🤖 prod-jenkaas-is (prod-jenkaas-is) wrote :

A CI job is currently in progress. A follow up comment will be added when it completes.

Revision history for this message
🤖 prod-jenkaas-is (prod-jenkaas-is) wrote :
review: Approve (continuous-integration)
Revision history for this message
🤖 Canonical IS Merge Bot (canonical-is-mergebot) wrote :

Change successfully merged at revision a8d4cf034d918b501dfd6ccc0e5f23ebd6c134c8

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/config.yaml b/config.yaml
2index c5d5957..9e95591 100644
3--- a/config.yaml
4+++ b/config.yaml
5@@ -44,7 +44,7 @@ options:
6 is a comma-separated list of CIDRs.
7 type: string
8 max-body-size:
9- default: 0
10+ default: 20
11 description: Max allowed body-size (for file uploads) in megabytes, set to 0 to disable limits.
12 type: int
13 path-routes:
14diff --git a/src/charm.py b/src/charm.py
15index 4926723..287a954 100755
16--- a/src/charm.py
17+++ b/src/charm.py
18@@ -118,10 +118,7 @@ class NginxIngressCharm(CharmBase):
19 def _max_body_size(self):
20 """Return the max-body-size to use for k8s ingress."""
21 max_body_size = self._get_config_or_relation_data("max-body-size", 0)
22- if max_body_size:
23- return "{}m".format(max_body_size)
24- # Don't return "0m" which would evaluate to True.
25- return ""
26+ return "{}m".format(max_body_size)
27
28 @property
29 def _rewrite_enabled(self):
30@@ -258,15 +255,13 @@ class NginxIngressCharm(CharmBase):
31
32 spec = kubernetes.client.NetworkingV1beta1IngressSpec(rules=ingress_rules)
33
34- annotations = {}
35+ annotations = {"nginx.ingress.kubernetes.io/proxy-body-size": self._max_body_size}
36 if self._rewrite_enabled:
37 annotations["nginx.ingress.kubernetes.io/rewrite-target"] = self._rewrite_target
38 if self._limit_rps:
39 annotations["nginx.ingress.kubernetes.io/limit-rps"] = self._limit_rps
40 if self._limit_whitelist:
41 annotations["nginx.ingress.kubernetes.io/limit-whitelist"] = self._limit_whitelist
42- if self._max_body_size:
43- annotations["nginx.ingress.kubernetes.io/proxy-body-size"] = self._max_body_size
44 if self._retry_errors:
45 annotations["nginx.ingress.kubernetes.io/proxy-next-upstream"] = self._retry_errors
46 if self._session_cookie_max_age:
47diff --git a/tests/unit/test_charm.py b/tests/unit/test_charm.py
48index 949d8f9..86628b1 100644
49--- a/tests/unit/test_charm.py
50+++ b/tests/unit/test_charm.py
51@@ -308,6 +308,7 @@ class TestCharm(unittest.TestCase):
52 )
53 result_dict = self.harness.charm._get_k8s_ingress().to_dict()
54 expected = {
55+ "nginx.ingress.kubernetes.io/proxy-body-size": "20m",
56 "nginx.ingress.kubernetes.io/rewrite-target": "/",
57 "nginx.ingress.kubernetes.io/ssl-redirect": "false",
58 }
59@@ -315,13 +316,17 @@ class TestCharm(unittest.TestCase):
60
61 self.harness.update_config({"rewrite-enabled": False})
62 result_dict = self.harness.charm._get_k8s_ingress().to_dict()
63- expected = {"nginx.ingress.kubernetes.io/ssl-redirect": "false"}
64+ expected = {
65+ "nginx.ingress.kubernetes.io/proxy-body-size": "20m",
66+ "nginx.ingress.kubernetes.io/ssl-redirect": "false",
67+ }
68 self.assertEqual(result_dict["metadata"]["annotations"], expected)
69
70 self.harness.update_config({"rewrite-target": "/test-target"})
71 self.harness.update_config({"rewrite-enabled": True})
72
73 expected = {
74+ "nginx.ingress.kubernetes.io/proxy-body-size": "20m",
75 "nginx.ingress.kubernetes.io/rewrite-target": "/test-target",
76 "nginx.ingress.kubernetes.io/ssl-redirect": "false",
77 }
78@@ -381,6 +386,7 @@ class TestCharm(unittest.TestCase):
79 metadata=kubernetes.client.V1ObjectMeta(
80 name="gunicorn-ingress",
81 annotations={
82+ "nginx.ingress.kubernetes.io/proxy-body-size": "20m",
83 "nginx.ingress.kubernetes.io/rewrite-target": "/",
84 "nginx.ingress.kubernetes.io/ssl-redirect": "false",
85 },
86@@ -413,6 +419,7 @@ class TestCharm(unittest.TestCase):
87 metadata=kubernetes.client.V1ObjectMeta(
88 name="gunicorn-ingress",
89 annotations={
90+ "nginx.ingress.kubernetes.io/proxy-body-size": "20m",
91 "nginx.ingress.kubernetes.io/rewrite-target": "/",
92 "nginx.ingress.kubernetes.io/ssl-redirect": "false",
93 },
94@@ -473,6 +480,7 @@ class TestCharm(unittest.TestCase):
95 metadata=kubernetes.client.V1ObjectMeta(
96 name="gunicorn-ingress",
97 annotations={
98+ "nginx.ingress.kubernetes.io/proxy-body-size": "20m",
99 "nginx.ingress.kubernetes.io/rewrite-target": "/",
100 "nginx.ingress.kubernetes.io/ssl-redirect": "false",
101 },
102@@ -513,6 +521,7 @@ class TestCharm(unittest.TestCase):
103 metadata=kubernetes.client.V1ObjectMeta(
104 name="gunicorn-ingress",
105 annotations={
106+ "nginx.ingress.kubernetes.io/proxy-body-size": "20m",
107 "nginx.ingress.kubernetes.io/rewrite-target": "/",
108 },
109 ),
110@@ -548,7 +557,7 @@ class TestCharm(unittest.TestCase):
111 self.harness.update_config(
112 {
113 "ingress-class": "nginx",
114- "max-body-size": 20,
115+ "max-body-size": 10,
116 "retry-errors": "error,timeout,http_502,http_503",
117 "session-cookie-max-age": 3600,
118 "tls-secret-name": "",
119@@ -562,7 +571,7 @@ class TestCharm(unittest.TestCase):
120 annotations={
121 "nginx.ingress.kubernetes.io/affinity": "cookie",
122 "nginx.ingress.kubernetes.io/affinity-mode": "balanced",
123- "nginx.ingress.kubernetes.io/proxy-body-size": "20m",
124+ "nginx.ingress.kubernetes.io/proxy-body-size": "10m",
125 "nginx.ingress.kubernetes.io/proxy-next-upstream": (
126 "error timeout http_502 http_503"
127 ),
128@@ -615,6 +624,7 @@ class TestCharm(unittest.TestCase):
129 annotations={
130 "nginx.ingress.kubernetes.io/limit-rps": "5",
131 "nginx.ingress.kubernetes.io/limit-whitelist": "10.0.0.0/16",
132+ "nginx.ingress.kubernetes.io/proxy-body-size": "0m",
133 "nginx.ingress.kubernetes.io/rewrite-target": "/",
134 "nginx.ingress.kubernetes.io/ssl-redirect": "false",
135 },

Subscribers

People subscribed via source and target branches

to all changes: