pulumi-kafka 3.10.3__py3-none-any.whl → 3.11.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pulumi-kafka might be problematic. Click here for more details.
- pulumi_kafka/__init__.py +3 -1
- pulumi_kafka/acl.py +326 -99
- pulumi_kafka/config/__init__.py +1 -1
- pulumi_kafka/config/__init__.pyi +1 -2
- pulumi_kafka/config/vars.py +29 -30
- pulumi_kafka/get_topic.py +13 -14
- pulumi_kafka/get_topics.py +85 -0
- pulumi_kafka/outputs.py +71 -0
- pulumi_kafka/provider.py +268 -269
- pulumi_kafka/pulumi-plugin.json +1 -1
- pulumi_kafka/quota.py +296 -55
- pulumi_kafka/topic.py +293 -72
- pulumi_kafka/user_scram_credential.py +145 -86
- {pulumi_kafka-3.10.3.dist-info → pulumi_kafka-3.11.0.dist-info}/METADATA +1 -1
- pulumi_kafka-3.11.0.dist-info/RECORD +19 -0
- pulumi_kafka-3.10.3.dist-info/RECORD +0 -17
- {pulumi_kafka-3.10.3.dist-info → pulumi_kafka-3.11.0.dist-info}/WHEEL +0 -0
- {pulumi_kafka-3.10.3.dist-info → pulumi_kafka-3.11.0.dist-info}/top_level.txt +0 -0
pulumi_kafka/pulumi-plugin.json
CHANGED
pulumi_kafka/quota.py
CHANGED
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
# *** WARNING: this file was generated by pulumi-language-python. ***
|
|
3
3
|
# *** Do not edit by hand unless you're certain you know what you are doing! ***
|
|
4
4
|
|
|
5
|
-
import builtins
|
|
6
|
-
import copy
|
|
5
|
+
import builtins as _builtins
|
|
7
6
|
import warnings
|
|
8
7
|
import sys
|
|
9
8
|
import pulumi
|
|
@@ -20,14 +19,14 @@ __all__ = ['QuotaArgs', 'Quota']
|
|
|
20
19
|
@pulumi.input_type
|
|
21
20
|
class QuotaArgs:
|
|
22
21
|
def __init__(__self__, *,
|
|
23
|
-
entity_type: pulumi.Input[
|
|
24
|
-
config: Optional[pulumi.Input[Mapping[str, pulumi.Input[
|
|
25
|
-
entity_name: Optional[pulumi.Input[
|
|
22
|
+
entity_type: pulumi.Input[_builtins.str],
|
|
23
|
+
config: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
|
|
24
|
+
entity_name: Optional[pulumi.Input[_builtins.str]] = None):
|
|
26
25
|
"""
|
|
27
26
|
The set of arguments for constructing a Quota resource.
|
|
28
|
-
:param pulumi.Input[
|
|
29
|
-
:param pulumi.Input[Mapping[str, pulumi.Input[
|
|
30
|
-
:param pulumi.Input[
|
|
27
|
+
:param pulumi.Input[_builtins.str] entity_type: The type of the entity (client-id, user, ip)
|
|
28
|
+
:param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] config: A map of string k/v properties.
|
|
29
|
+
:param pulumi.Input[_builtins.str] entity_name: The name of the entity (if entity_name is not provided, it will create entity-default Kafka quota)
|
|
31
30
|
"""
|
|
32
31
|
pulumi.set(__self__, "entity_type", entity_type)
|
|
33
32
|
if config is not None:
|
|
@@ -35,54 +34,54 @@ class QuotaArgs:
|
|
|
35
34
|
if entity_name is not None:
|
|
36
35
|
pulumi.set(__self__, "entity_name", entity_name)
|
|
37
36
|
|
|
38
|
-
@property
|
|
37
|
+
@_builtins.property
|
|
39
38
|
@pulumi.getter(name="entityType")
|
|
40
|
-
def entity_type(self) -> pulumi.Input[
|
|
39
|
+
def entity_type(self) -> pulumi.Input[_builtins.str]:
|
|
41
40
|
"""
|
|
42
41
|
The type of the entity (client-id, user, ip)
|
|
43
42
|
"""
|
|
44
43
|
return pulumi.get(self, "entity_type")
|
|
45
44
|
|
|
46
45
|
@entity_type.setter
|
|
47
|
-
def entity_type(self, value: pulumi.Input[
|
|
46
|
+
def entity_type(self, value: pulumi.Input[_builtins.str]):
|
|
48
47
|
pulumi.set(self, "entity_type", value)
|
|
49
48
|
|
|
50
|
-
@property
|
|
49
|
+
@_builtins.property
|
|
51
50
|
@pulumi.getter
|
|
52
|
-
def config(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[
|
|
51
|
+
def config(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
|
|
53
52
|
"""
|
|
54
53
|
A map of string k/v properties.
|
|
55
54
|
"""
|
|
56
55
|
return pulumi.get(self, "config")
|
|
57
56
|
|
|
58
57
|
@config.setter
|
|
59
|
-
def config(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[
|
|
58
|
+
def config(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]):
|
|
60
59
|
pulumi.set(self, "config", value)
|
|
61
60
|
|
|
62
|
-
@property
|
|
61
|
+
@_builtins.property
|
|
63
62
|
@pulumi.getter(name="entityName")
|
|
64
|
-
def entity_name(self) -> Optional[pulumi.Input[
|
|
63
|
+
def entity_name(self) -> Optional[pulumi.Input[_builtins.str]]:
|
|
65
64
|
"""
|
|
66
65
|
The name of the entity (if entity_name is not provided, it will create entity-default Kafka quota)
|
|
67
66
|
"""
|
|
68
67
|
return pulumi.get(self, "entity_name")
|
|
69
68
|
|
|
70
69
|
@entity_name.setter
|
|
71
|
-
def entity_name(self, value: Optional[pulumi.Input[
|
|
70
|
+
def entity_name(self, value: Optional[pulumi.Input[_builtins.str]]):
|
|
72
71
|
pulumi.set(self, "entity_name", value)
|
|
73
72
|
|
|
74
73
|
|
|
75
74
|
@pulumi.input_type
|
|
76
75
|
class _QuotaState:
|
|
77
76
|
def __init__(__self__, *,
|
|
78
|
-
config: Optional[pulumi.Input[Mapping[str, pulumi.Input[
|
|
79
|
-
entity_name: Optional[pulumi.Input[
|
|
80
|
-
entity_type: Optional[pulumi.Input[
|
|
77
|
+
config: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
|
|
78
|
+
entity_name: Optional[pulumi.Input[_builtins.str]] = None,
|
|
79
|
+
entity_type: Optional[pulumi.Input[_builtins.str]] = None):
|
|
81
80
|
"""
|
|
82
81
|
Input properties used for looking up and filtering Quota resources.
|
|
83
|
-
:param pulumi.Input[Mapping[str, pulumi.Input[
|
|
84
|
-
:param pulumi.Input[
|
|
85
|
-
:param pulumi.Input[
|
|
82
|
+
:param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] config: A map of string k/v properties.
|
|
83
|
+
:param pulumi.Input[_builtins.str] entity_name: The name of the entity (if entity_name is not provided, it will create entity-default Kafka quota)
|
|
84
|
+
:param pulumi.Input[_builtins.str] entity_type: The type of the entity (client-id, user, ip)
|
|
86
85
|
"""
|
|
87
86
|
if config is not None:
|
|
88
87
|
pulumi.set(__self__, "config", config)
|
|
@@ -91,40 +90,40 @@ class _QuotaState:
|
|
|
91
90
|
if entity_type is not None:
|
|
92
91
|
pulumi.set(__self__, "entity_type", entity_type)
|
|
93
92
|
|
|
94
|
-
@property
|
|
93
|
+
@_builtins.property
|
|
95
94
|
@pulumi.getter
|
|
96
|
-
def config(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[
|
|
95
|
+
def config(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
|
|
97
96
|
"""
|
|
98
97
|
A map of string k/v properties.
|
|
99
98
|
"""
|
|
100
99
|
return pulumi.get(self, "config")
|
|
101
100
|
|
|
102
101
|
@config.setter
|
|
103
|
-
def config(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[
|
|
102
|
+
def config(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]):
|
|
104
103
|
pulumi.set(self, "config", value)
|
|
105
104
|
|
|
106
|
-
@property
|
|
105
|
+
@_builtins.property
|
|
107
106
|
@pulumi.getter(name="entityName")
|
|
108
|
-
def entity_name(self) -> Optional[pulumi.Input[
|
|
107
|
+
def entity_name(self) -> Optional[pulumi.Input[_builtins.str]]:
|
|
109
108
|
"""
|
|
110
109
|
The name of the entity (if entity_name is not provided, it will create entity-default Kafka quota)
|
|
111
110
|
"""
|
|
112
111
|
return pulumi.get(self, "entity_name")
|
|
113
112
|
|
|
114
113
|
@entity_name.setter
|
|
115
|
-
def entity_name(self, value: Optional[pulumi.Input[
|
|
114
|
+
def entity_name(self, value: Optional[pulumi.Input[_builtins.str]]):
|
|
116
115
|
pulumi.set(self, "entity_name", value)
|
|
117
116
|
|
|
118
|
-
@property
|
|
117
|
+
@_builtins.property
|
|
119
118
|
@pulumi.getter(name="entityType")
|
|
120
|
-
def entity_type(self) -> Optional[pulumi.Input[
|
|
119
|
+
def entity_type(self) -> Optional[pulumi.Input[_builtins.str]]:
|
|
121
120
|
"""
|
|
122
121
|
The type of the entity (client-id, user, ip)
|
|
123
122
|
"""
|
|
124
123
|
return pulumi.get(self, "entity_type")
|
|
125
124
|
|
|
126
125
|
@entity_type.setter
|
|
127
|
-
def entity_type(self, value: Optional[pulumi.Input[
|
|
126
|
+
def entity_type(self, value: Optional[pulumi.Input[_builtins.str]]):
|
|
128
127
|
pulumi.set(self, "entity_type", value)
|
|
129
128
|
|
|
130
129
|
|
|
@@ -134,17 +133,138 @@ class Quota(pulumi.CustomResource):
|
|
|
134
133
|
def __init__(__self__,
|
|
135
134
|
resource_name: str,
|
|
136
135
|
opts: Optional[pulumi.ResourceOptions] = None,
|
|
137
|
-
config: Optional[pulumi.Input[Mapping[str, pulumi.Input[
|
|
138
|
-
entity_name: Optional[pulumi.Input[
|
|
139
|
-
entity_type: Optional[pulumi.Input[
|
|
136
|
+
config: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
|
|
137
|
+
entity_name: Optional[pulumi.Input[_builtins.str]] = None,
|
|
138
|
+
entity_type: Optional[pulumi.Input[_builtins.str]] = None,
|
|
140
139
|
__props__=None):
|
|
141
140
|
"""
|
|
142
|
-
|
|
141
|
+
The `Quota` resource manages Kafka quotas, which are used to limit resource usage and prevent any single client from monopolizing broker resources. Quotas can be applied to clients, users, or IP addresses to control bandwidth and request rates.
|
|
142
|
+
|
|
143
|
+
## Example Usage
|
|
144
|
+
|
|
145
|
+
### Client ID Quota
|
|
146
|
+
|
|
147
|
+
```python
|
|
148
|
+
import pulumi
|
|
149
|
+
import pulumi_kafka as kafka
|
|
150
|
+
|
|
151
|
+
# Limit a specific client's bandwidth
|
|
152
|
+
mobile_app = kafka.Quota("mobile_app",
|
|
153
|
+
entity_name="mobile-app-v1",
|
|
154
|
+
entity_type="client-id",
|
|
155
|
+
config={
|
|
156
|
+
"consumer_byte_rate": "5000000",
|
|
157
|
+
"producer_byte_rate": "2500000",
|
|
158
|
+
"request_percentage": "200",
|
|
159
|
+
})
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### User Quota
|
|
163
|
+
|
|
164
|
+
```python
|
|
165
|
+
import pulumi
|
|
166
|
+
import pulumi_kafka as kafka
|
|
167
|
+
|
|
168
|
+
# Set quotas for a specific user
|
|
169
|
+
service_account = kafka.Quota("service_account",
|
|
170
|
+
entity_name="payment-service",
|
|
171
|
+
entity_type="user",
|
|
172
|
+
config={
|
|
173
|
+
"consumer_byte_rate": "10000000",
|
|
174
|
+
"producer_byte_rate": "10000000",
|
|
175
|
+
"request_percentage": "400",
|
|
176
|
+
})
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### Default User Quota
|
|
180
|
+
|
|
181
|
+
```python
|
|
182
|
+
import pulumi
|
|
183
|
+
import pulumi_kafka as kafka
|
|
184
|
+
|
|
185
|
+
# Set default quotas for all users (when entity_name is omitted)
|
|
186
|
+
default_user = kafka.Quota("default_user",
|
|
187
|
+
entity_type="user",
|
|
188
|
+
config={
|
|
189
|
+
"consumer_byte_rate": "2000000",
|
|
190
|
+
"producer_byte_rate": "1000000",
|
|
191
|
+
"request_percentage": "100",
|
|
192
|
+
})
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### IP Address Quota
|
|
196
|
+
|
|
197
|
+
```python
|
|
198
|
+
import pulumi
|
|
199
|
+
import pulumi_kafka as kafka
|
|
200
|
+
|
|
201
|
+
# Rate limit connections from a specific IP
|
|
202
|
+
external_ip = kafka.Quota("external_ip",
|
|
203
|
+
entity_name="203.0.113.0",
|
|
204
|
+
entity_type="ip",
|
|
205
|
+
config={
|
|
206
|
+
"connection_creation_rate": "10",
|
|
207
|
+
})
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
## Quota Configuration Options
|
|
211
|
+
|
|
212
|
+
### Bandwidth Quotas
|
|
213
|
+
- `producer_byte_rate` - The maximum bytes per second that can be produced by the entity
|
|
214
|
+
- `consumer_byte_rate` - The maximum bytes per second that can be consumed by the entity
|
|
215
|
+
|
|
216
|
+
### Request Rate Quotas
|
|
217
|
+
- `request_percentage` - The percentage of CPU time on each broker that the entity can use for requests. Values > 100% indicate multiple CPUs (e.g., 200% = 2 CPUs)
|
|
218
|
+
|
|
219
|
+
### Connection Quotas (IP-based only)
|
|
220
|
+
- `connection_creation_rate` - The maximum rate of new connections per second from the IP address
|
|
221
|
+
|
|
222
|
+
## Quota Precedence
|
|
223
|
+
|
|
224
|
+
When multiple quotas apply to a request, Kafka uses the most specific quota:
|
|
225
|
+
|
|
226
|
+
1. `/config/users/<user>/clients/<client-id>` (most specific)
|
|
227
|
+
2. `/config/users/<user>/clients/<default>`
|
|
228
|
+
3. `/config/users/<user>`
|
|
229
|
+
4. `/config/users/<default>/clients/<client-id>`
|
|
230
|
+
5. `/config/users/<default>/clients/<default>`
|
|
231
|
+
6. `/config/users/<default>` (least specific)
|
|
232
|
+
|
|
233
|
+
## Best Practices
|
|
234
|
+
|
|
235
|
+
1. **Start with Conservative Defaults**: Set reasonable default quotas for all users/clients and then create specific quotas for services that need higher limits.
|
|
236
|
+
|
|
237
|
+
2. **Monitor Quota Usage**: Use Kafka metrics to monitor quota utilization and adjust as needed. Look for throttling metrics to identify when quotas are being hit.
|
|
238
|
+
|
|
239
|
+
3. **Use Request Percentage Carefully**: The `request_percentage` quota affects CPU usage. Values over 100% mean the client can use more than one CPU core.
|
|
240
|
+
|
|
241
|
+
4. **Plan for Growth**: Set quotas with some headroom to accommodate traffic growth, but not so high that a misbehaving client can impact the cluster.
|
|
242
|
+
|
|
243
|
+
5. **Different Quotas for Different Environments**: Use stricter quotas in development/staging environments compared to production.
|
|
244
|
+
|
|
245
|
+
> **Note:** Quotas are applied immediately but may take a few seconds to propagate across all brokers.
|
|
246
|
+
|
|
247
|
+
## Import
|
|
248
|
+
|
|
249
|
+
Kafka quotas can be imported using the entity type and name:
|
|
250
|
+
|
|
251
|
+
For named entities
|
|
252
|
+
|
|
253
|
+
```sh
|
|
254
|
+
$ pulumi import kafka:index/quota:Quota example client-id:my-client
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
For default quotas (no entity name)
|
|
258
|
+
|
|
259
|
+
```sh
|
|
260
|
+
$ pulumi import kafka:index/quota:Quota default_user user:
|
|
261
|
+
```
|
|
262
|
+
|
|
143
263
|
:param str resource_name: The name of the resource.
|
|
144
264
|
:param pulumi.ResourceOptions opts: Options for the resource.
|
|
145
|
-
:param pulumi.Input[Mapping[str, pulumi.Input[
|
|
146
|
-
:param pulumi.Input[
|
|
147
|
-
:param pulumi.Input[
|
|
265
|
+
:param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] config: A map of string k/v properties.
|
|
266
|
+
:param pulumi.Input[_builtins.str] entity_name: The name of the entity (if entity_name is not provided, it will create entity-default Kafka quota)
|
|
267
|
+
:param pulumi.Input[_builtins.str] entity_type: The type of the entity (client-id, user, ip)
|
|
148
268
|
"""
|
|
149
269
|
...
|
|
150
270
|
@overload
|
|
@@ -153,7 +273,128 @@ class Quota(pulumi.CustomResource):
|
|
|
153
273
|
args: QuotaArgs,
|
|
154
274
|
opts: Optional[pulumi.ResourceOptions] = None):
|
|
155
275
|
"""
|
|
156
|
-
|
|
276
|
+
The `Quota` resource manages Kafka quotas, which are used to limit resource usage and prevent any single client from monopolizing broker resources. Quotas can be applied to clients, users, or IP addresses to control bandwidth and request rates.
|
|
277
|
+
|
|
278
|
+
## Example Usage
|
|
279
|
+
|
|
280
|
+
### Client ID Quota
|
|
281
|
+
|
|
282
|
+
```python
|
|
283
|
+
import pulumi
|
|
284
|
+
import pulumi_kafka as kafka
|
|
285
|
+
|
|
286
|
+
# Limit a specific client's bandwidth
|
|
287
|
+
mobile_app = kafka.Quota("mobile_app",
|
|
288
|
+
entity_name="mobile-app-v1",
|
|
289
|
+
entity_type="client-id",
|
|
290
|
+
config={
|
|
291
|
+
"consumer_byte_rate": "5000000",
|
|
292
|
+
"producer_byte_rate": "2500000",
|
|
293
|
+
"request_percentage": "200",
|
|
294
|
+
})
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
### User Quota
|
|
298
|
+
|
|
299
|
+
```python
|
|
300
|
+
import pulumi
|
|
301
|
+
import pulumi_kafka as kafka
|
|
302
|
+
|
|
303
|
+
# Set quotas for a specific user
|
|
304
|
+
service_account = kafka.Quota("service_account",
|
|
305
|
+
entity_name="payment-service",
|
|
306
|
+
entity_type="user",
|
|
307
|
+
config={
|
|
308
|
+
"consumer_byte_rate": "10000000",
|
|
309
|
+
"producer_byte_rate": "10000000",
|
|
310
|
+
"request_percentage": "400",
|
|
311
|
+
})
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
### Default User Quota
|
|
315
|
+
|
|
316
|
+
```python
|
|
317
|
+
import pulumi
|
|
318
|
+
import pulumi_kafka as kafka
|
|
319
|
+
|
|
320
|
+
# Set default quotas for all users (when entity_name is omitted)
|
|
321
|
+
default_user = kafka.Quota("default_user",
|
|
322
|
+
entity_type="user",
|
|
323
|
+
config={
|
|
324
|
+
"consumer_byte_rate": "2000000",
|
|
325
|
+
"producer_byte_rate": "1000000",
|
|
326
|
+
"request_percentage": "100",
|
|
327
|
+
})
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
### IP Address Quota
|
|
331
|
+
|
|
332
|
+
```python
|
|
333
|
+
import pulumi
|
|
334
|
+
import pulumi_kafka as kafka
|
|
335
|
+
|
|
336
|
+
# Rate limit connections from a specific IP
|
|
337
|
+
external_ip = kafka.Quota("external_ip",
|
|
338
|
+
entity_name="203.0.113.0",
|
|
339
|
+
entity_type="ip",
|
|
340
|
+
config={
|
|
341
|
+
"connection_creation_rate": "10",
|
|
342
|
+
})
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
## Quota Configuration Options
|
|
346
|
+
|
|
347
|
+
### Bandwidth Quotas
|
|
348
|
+
- `producer_byte_rate` - The maximum bytes per second that can be produced by the entity
|
|
349
|
+
- `consumer_byte_rate` - The maximum bytes per second that can be consumed by the entity
|
|
350
|
+
|
|
351
|
+
### Request Rate Quotas
|
|
352
|
+
- `request_percentage` - The percentage of CPU time on each broker that the entity can use for requests. Values > 100% indicate multiple CPUs (e.g., 200% = 2 CPUs)
|
|
353
|
+
|
|
354
|
+
### Connection Quotas (IP-based only)
|
|
355
|
+
- `connection_creation_rate` - The maximum rate of new connections per second from the IP address
|
|
356
|
+
|
|
357
|
+
## Quota Precedence
|
|
358
|
+
|
|
359
|
+
When multiple quotas apply to a request, Kafka uses the most specific quota:
|
|
360
|
+
|
|
361
|
+
1. `/config/users/<user>/clients/<client-id>` (most specific)
|
|
362
|
+
2. `/config/users/<user>/clients/<default>`
|
|
363
|
+
3. `/config/users/<user>`
|
|
364
|
+
4. `/config/users/<default>/clients/<client-id>`
|
|
365
|
+
5. `/config/users/<default>/clients/<default>`
|
|
366
|
+
6. `/config/users/<default>` (least specific)
|
|
367
|
+
|
|
368
|
+
## Best Practices
|
|
369
|
+
|
|
370
|
+
1. **Start with Conservative Defaults**: Set reasonable default quotas for all users/clients and then create specific quotas for services that need higher limits.
|
|
371
|
+
|
|
372
|
+
2. **Monitor Quota Usage**: Use Kafka metrics to monitor quota utilization and adjust as needed. Look for throttling metrics to identify when quotas are being hit.
|
|
373
|
+
|
|
374
|
+
3. **Use Request Percentage Carefully**: The `request_percentage` quota affects CPU usage. Values over 100% mean the client can use more than one CPU core.
|
|
375
|
+
|
|
376
|
+
4. **Plan for Growth**: Set quotas with some headroom to accommodate traffic growth, but not so high that a misbehaving client can impact the cluster.
|
|
377
|
+
|
|
378
|
+
5. **Different Quotas for Different Environments**: Use stricter quotas in development/staging environments compared to production.
|
|
379
|
+
|
|
380
|
+
> **Note:** Quotas are applied immediately but may take a few seconds to propagate across all brokers.
|
|
381
|
+
|
|
382
|
+
## Import
|
|
383
|
+
|
|
384
|
+
Kafka quotas can be imported using the entity type and name:
|
|
385
|
+
|
|
386
|
+
For named entities
|
|
387
|
+
|
|
388
|
+
```sh
|
|
389
|
+
$ pulumi import kafka:index/quota:Quota example client-id:my-client
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
For default quotas (no entity name)
|
|
393
|
+
|
|
394
|
+
```sh
|
|
395
|
+
$ pulumi import kafka:index/quota:Quota default_user user:
|
|
396
|
+
```
|
|
397
|
+
|
|
157
398
|
:param str resource_name: The name of the resource.
|
|
158
399
|
:param QuotaArgs args: The arguments to use to populate this resource's properties.
|
|
159
400
|
:param pulumi.ResourceOptions opts: Options for the resource.
|
|
@@ -169,9 +410,9 @@ class Quota(pulumi.CustomResource):
|
|
|
169
410
|
def _internal_init(__self__,
|
|
170
411
|
resource_name: str,
|
|
171
412
|
opts: Optional[pulumi.ResourceOptions] = None,
|
|
172
|
-
config: Optional[pulumi.Input[Mapping[str, pulumi.Input[
|
|
173
|
-
entity_name: Optional[pulumi.Input[
|
|
174
|
-
entity_type: Optional[pulumi.Input[
|
|
413
|
+
config: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
|
|
414
|
+
entity_name: Optional[pulumi.Input[_builtins.str]] = None,
|
|
415
|
+
entity_type: Optional[pulumi.Input[_builtins.str]] = None,
|
|
175
416
|
__props__=None):
|
|
176
417
|
opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
|
|
177
418
|
if not isinstance(opts, pulumi.ResourceOptions):
|
|
@@ -196,9 +437,9 @@ class Quota(pulumi.CustomResource):
|
|
|
196
437
|
def get(resource_name: str,
|
|
197
438
|
id: pulumi.Input[str],
|
|
198
439
|
opts: Optional[pulumi.ResourceOptions] = None,
|
|
199
|
-
config: Optional[pulumi.Input[Mapping[str, pulumi.Input[
|
|
200
|
-
entity_name: Optional[pulumi.Input[
|
|
201
|
-
entity_type: Optional[pulumi.Input[
|
|
440
|
+
config: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
|
|
441
|
+
entity_name: Optional[pulumi.Input[_builtins.str]] = None,
|
|
442
|
+
entity_type: Optional[pulumi.Input[_builtins.str]] = None) -> 'Quota':
|
|
202
443
|
"""
|
|
203
444
|
Get an existing Quota resource's state with the given name, id, and optional extra
|
|
204
445
|
properties used to qualify the lookup.
|
|
@@ -206,9 +447,9 @@ class Quota(pulumi.CustomResource):
|
|
|
206
447
|
:param str resource_name: The unique name of the resulting resource.
|
|
207
448
|
:param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
|
|
208
449
|
:param pulumi.ResourceOptions opts: Options for the resource.
|
|
209
|
-
:param pulumi.Input[Mapping[str, pulumi.Input[
|
|
210
|
-
:param pulumi.Input[
|
|
211
|
-
:param pulumi.Input[
|
|
450
|
+
:param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] config: A map of string k/v properties.
|
|
451
|
+
:param pulumi.Input[_builtins.str] entity_name: The name of the entity (if entity_name is not provided, it will create entity-default Kafka quota)
|
|
452
|
+
:param pulumi.Input[_builtins.str] entity_type: The type of the entity (client-id, user, ip)
|
|
212
453
|
"""
|
|
213
454
|
opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
|
|
214
455
|
|
|
@@ -219,25 +460,25 @@ class Quota(pulumi.CustomResource):
|
|
|
219
460
|
__props__.__dict__["entity_type"] = entity_type
|
|
220
461
|
return Quota(resource_name, opts=opts, __props__=__props__)
|
|
221
462
|
|
|
222
|
-
@property
|
|
463
|
+
@_builtins.property
|
|
223
464
|
@pulumi.getter
|
|
224
|
-
def config(self) -> pulumi.Output[Optional[Mapping[str,
|
|
465
|
+
def config(self) -> pulumi.Output[Optional[Mapping[str, _builtins.str]]]:
|
|
225
466
|
"""
|
|
226
467
|
A map of string k/v properties.
|
|
227
468
|
"""
|
|
228
469
|
return pulumi.get(self, "config")
|
|
229
470
|
|
|
230
|
-
@property
|
|
471
|
+
@_builtins.property
|
|
231
472
|
@pulumi.getter(name="entityName")
|
|
232
|
-
def entity_name(self) -> pulumi.Output[Optional[
|
|
473
|
+
def entity_name(self) -> pulumi.Output[Optional[_builtins.str]]:
|
|
233
474
|
"""
|
|
234
475
|
The name of the entity (if entity_name is not provided, it will create entity-default Kafka quota)
|
|
235
476
|
"""
|
|
236
477
|
return pulumi.get(self, "entity_name")
|
|
237
478
|
|
|
238
|
-
@property
|
|
479
|
+
@_builtins.property
|
|
239
480
|
@pulumi.getter(name="entityType")
|
|
240
|
-
def entity_type(self) -> pulumi.Output[
|
|
481
|
+
def entity_type(self) -> pulumi.Output[_builtins.str]:
|
|
241
482
|
"""
|
|
242
483
|
The type of the entity (client-id, user, ip)
|
|
243
484
|
"""
|