1use bytes::{Buf, BufMut};
4
5use crate::{
6 Decode, Encode, ProtocolError, UnknownTaggedFields,
7 codegen_helpers::is_default,
8 primitives::{
9 array::{
10 array_len_prefix_len, get_array_len, get_nullable_array_len,
11 nullable_array_len_prefix_len, put_array_len, put_nullable_array_len,
12 },
13 fixed::{
14 get_bool, get_i16, get_i32, get_i64, get_u16, put_bool, put_i16, put_i32, put_i64,
15 put_u16,
16 },
17 string_bytes::{
18 compact_nullable_string_len, compact_string_len, get_compact_nullable_string_owned,
19 get_compact_string_owned, get_nullable_string_owned, get_string_owned,
20 nullable_string_len, put_compact_nullable_string, put_compact_string,
21 put_nullable_string, put_string, string_len,
22 },
23 uuid::{Uuid, get_uuid, put_uuid},
24 },
25 tagged_fields::{WriteTaggedFields, encode_to_bytes, read_tagged_fields, tagged_fields_len},
26};
27pub const MIN_VERSION: i16 = 0;
28pub const MAX_VERSION: i16 = 4;
29pub const FLEXIBLE_MIN: i16 = 0;
30#[inline]
31#[must_use]
32pub fn is_flexible(version: i16) -> bool {
33 version >= FLEXIBLE_MIN
34}
35#[derive(Debug, Clone, PartialEq, Eq)]
36pub struct RegisterBrokerRecord {
37 pub broker_id: i32,
38 pub is_migrating_zk_broker: bool,
39 pub incarnation_id: Uuid,
40 pub broker_epoch: i64,
41 pub end_points: Vec<BrokerEndpoint>,
42 pub features: Vec<BrokerFeature>,
43 pub rack: Option<String>,
44 pub fenced: bool,
45 pub in_controlled_shutdown: bool,
46 pub log_dirs: Vec<Uuid>,
47 pub cordoned_log_dirs: Option<Vec<Uuid>>,
48 pub unknown_tagged_fields: UnknownTaggedFields,
49}
50impl Default for RegisterBrokerRecord {
51 fn default() -> Self {
52 Self {
53 broker_id: 0i32,
54 is_migrating_zk_broker: false,
55 incarnation_id: Uuid::default(),
56 broker_epoch: 0i64,
57 end_points: Vec::new(),
58 features: Vec::new(),
59 rack: Some(String::new()),
60 fenced: true,
61 in_controlled_shutdown: false,
62 log_dirs: Vec::new(),
63 cordoned_log_dirs: None,
64 unknown_tagged_fields: UnknownTaggedFields::default(),
65 }
66 }
67}
68impl RegisterBrokerRecord {
69 fn encode_field_0<B: BufMut>(&self, buf: &mut B, version: i16, _flex: bool) {
70 if version >= 0 {
71 put_i32(buf, self.broker_id);
72 }
73 }
74 fn encode_field_1<B: BufMut>(&self, buf: &mut B, version: i16, _flex: bool) {
75 if version >= 2 {
76 put_bool(buf, self.is_migrating_zk_broker);
77 }
78 }
79 fn encode_field_2<B: BufMut>(&self, buf: &mut B, version: i16, _flex: bool) {
80 if version >= 0 {
81 put_uuid(buf, self.incarnation_id);
82 }
83 }
84 fn encode_field_3<B: BufMut>(&self, buf: &mut B, version: i16, _flex: bool) {
85 if version >= 0 {
86 put_i64(buf, self.broker_epoch);
87 }
88 }
89 fn encode_field_4<B: BufMut>(
90 &self,
91 buf: &mut B,
92 version: i16,
93 flex: bool,
94 ) -> Result<(), ProtocolError> {
95 if version >= 0 {
96 {
97 put_array_len(buf, (self.end_points).len(), flex)?;
98 for it in &self.end_points {
99 it.encode(buf, version)?;
100 }
101 }
102 }
103 Ok(())
104 }
105 fn encode_field_5<B: BufMut>(
106 &self,
107 buf: &mut B,
108 version: i16,
109 flex: bool,
110 ) -> Result<(), ProtocolError> {
111 if version >= 0 {
112 {
113 put_array_len(buf, (self.features).len(), flex)?;
114 for it in &self.features {
115 it.encode(buf, version)?;
116 }
117 }
118 }
119 Ok(())
120 }
121 fn encode_field_6<B: BufMut>(
122 &self,
123 buf: &mut B,
124 version: i16,
125 flex: bool,
126 ) -> Result<(), ProtocolError> {
127 if version >= 0 {
128 if flex {
129 put_compact_nullable_string(buf, self.rack.as_deref())?;
130 } else {
131 put_nullable_string(buf, self.rack.as_deref())?;
132 }
133 }
134 Ok(())
135 }
136 fn encode_field_7<B: BufMut>(&self, buf: &mut B, version: i16, _flex: bool) {
137 if version >= 0 {
138 put_bool(buf, self.fenced);
139 }
140 }
141 fn encode_field_8<B: BufMut>(&self, buf: &mut B, version: i16, _flex: bool) {
142 if version >= 1 {
143 put_bool(buf, self.in_controlled_shutdown);
144 }
145 }
146 fn encode_tagged_fields<B: BufMut>(
147 &self,
148 buf: &mut B,
149 version: i16,
150 flex: bool,
151 ) -> Result<(), ProtocolError> {
152 if flex {
153 let mut tagged = WriteTaggedFields::new();
154 if version >= 3 && !(is_default(&self.log_dirs)) {
155 let payload = encode_to_bytes(
156 {
157 let prefix = array_len_prefix_len((self.log_dirs).len(), flex);
158 let body: usize = (self.log_dirs).iter().map(|_| 16).sum();
159 prefix + body
160 },
161 |b| {
162 {
163 put_array_len(b, (self.log_dirs).len(), flex)?;
164 for it in &self.log_dirs {
165 put_uuid(b, *it);
166 }
167 }
168 Ok(())
169 },
170 )?;
171 tagged.add(0, payload);
172 }
173 if version >= 4 && self.cordoned_log_dirs.is_some() {
174 let payload = encode_to_bytes(
175 {
176 let opt: Option<&Vec<_>> = (self.cordoned_log_dirs).as_ref();
177 let prefix = nullable_array_len_prefix_len(opt.map(Vec::len), flex);
178 let body: usize = opt.map_or(0, |v| v.iter().map(|_| 16).sum());
179 prefix + body
180 },
181 |b| {
182 {
183 let len = (self.cordoned_log_dirs).as_ref().map(Vec::len);
184 put_nullable_array_len(b, len, flex)?;
185 if let Some(v) = &self.cordoned_log_dirs {
186 for it in v {
187 put_uuid(b, *it);
188 }
189 }
190 }
191 Ok(())
192 },
193 )?;
194 tagged.add(1, payload);
195 }
196 tagged.write(buf, &self.unknown_tagged_fields)?;
197 }
198 Ok(())
199 }
200 fn decode_field_0<B: Buf>(
201 out: &mut Self,
202 buf: &mut B,
203 version: i16,
204 _flex: bool,
205 ) -> Result<(), ProtocolError> {
206 if version >= 0 {
207 out.broker_id = get_i32(buf)?;
208 }
209 Ok(())
210 }
211 fn decode_field_1<B: Buf>(
212 out: &mut Self,
213 buf: &mut B,
214 version: i16,
215 _flex: bool,
216 ) -> Result<(), ProtocolError> {
217 if version >= 2 {
218 out.is_migrating_zk_broker = get_bool(buf)?;
219 }
220 Ok(())
221 }
222 fn decode_field_2<B: Buf>(
223 out: &mut Self,
224 buf: &mut B,
225 version: i16,
226 _flex: bool,
227 ) -> Result<(), ProtocolError> {
228 if version >= 0 {
229 out.incarnation_id = get_uuid(buf)?;
230 }
231 Ok(())
232 }
233 fn decode_field_3<B: Buf>(
234 out: &mut Self,
235 buf: &mut B,
236 version: i16,
237 _flex: bool,
238 ) -> Result<(), ProtocolError> {
239 if version >= 0 {
240 out.broker_epoch = get_i64(buf)?;
241 }
242 Ok(())
243 }
244 fn decode_field_4<B: Buf>(
245 out: &mut Self,
246 buf: &mut B,
247 version: i16,
248 flex: bool,
249 ) -> Result<(), ProtocolError> {
250 if version >= 0 {
251 out.end_points = {
252 let n = get_array_len(buf, flex)?;
253 let mut v = Vec::with_capacity(n);
254 for _ in 0..n {
255 v.push(BrokerEndpoint::decode(buf, version)?);
256 }
257 v
258 };
259 }
260 Ok(())
261 }
262 fn decode_field_5<B: Buf>(
263 out: &mut Self,
264 buf: &mut B,
265 version: i16,
266 flex: bool,
267 ) -> Result<(), ProtocolError> {
268 if version >= 0 {
269 out.features = {
270 let n = get_array_len(buf, flex)?;
271 let mut v = Vec::with_capacity(n);
272 for _ in 0..n {
273 v.push(BrokerFeature::decode(buf, version)?);
274 }
275 v
276 };
277 }
278 Ok(())
279 }
280 fn decode_field_6<B: Buf>(
281 out: &mut Self,
282 buf: &mut B,
283 version: i16,
284 flex: bool,
285 ) -> Result<(), ProtocolError> {
286 if version >= 0 {
287 out.rack = if flex {
288 get_compact_nullable_string_owned(buf)?
289 } else {
290 get_nullable_string_owned(buf)?
291 };
292 }
293 Ok(())
294 }
295 fn decode_field_7<B: Buf>(
296 out: &mut Self,
297 buf: &mut B,
298 version: i16,
299 _flex: bool,
300 ) -> Result<(), ProtocolError> {
301 if version >= 0 {
302 out.fenced = get_bool(buf)?;
303 }
304 Ok(())
305 }
306 fn decode_field_8<B: Buf>(
307 out: &mut Self,
308 buf: &mut B,
309 version: i16,
310 _flex: bool,
311 ) -> Result<(), ProtocolError> {
312 if version >= 1 {
313 out.in_controlled_shutdown = get_bool(buf)?;
314 }
315 Ok(())
316 }
317 fn decode_tagged_fields<B: Buf>(
318 out: &mut Self,
319 buf: &mut B,
320 version: i16,
321 flex: bool,
322 ) -> Result<(), ProtocolError> {
323 if flex {
324 let mut tag_log_dirs = None;
325 let mut tag_cordoned_log_dirs = None;
326 out.unknown_tagged_fields = read_tagged_fields(buf, |tag, payload| match tag {
327 0 if version >= 3 => {
328 tag_log_dirs = Some({
329 let b: &mut &[u8] = payload;
330 {
331 let n = get_array_len(b, flex)?;
332 let mut v = Vec::with_capacity(n);
333 for _ in 0..n {
334 v.push(get_uuid(b)?);
335 }
336 v
337 }
338 });
339 Ok(true)
340 }
341 0 => Err(ProtocolError::TagNotValidForVersion { tag: 0, version }),
342 1 if version >= 4 => {
343 tag_cordoned_log_dirs = Some({
344 let b: &mut &[u8] = payload;
345 {
346 let opt = get_nullable_array_len(b, flex)?;
347 match opt {
348 None => None,
349 Some(n) => {
350 let mut v = Vec::with_capacity(n);
351 for _ in 0..n {
352 v.push(get_uuid(b)?);
353 }
354 Some(v)
355 }
356 }
357 }
358 });
359 Ok(true)
360 }
361 1 => Err(ProtocolError::TagNotValidForVersion { tag: 1, version }),
362 _ => Ok(false),
363 })?;
364 if let Some(v) = tag_log_dirs {
365 out.log_dirs = v;
366 }
367 if let Some(v) = tag_cordoned_log_dirs {
368 out.cordoned_log_dirs = v;
369 }
370 }
371 Ok(())
372 }
373}
374impl Encode for RegisterBrokerRecord {
375 fn encode<B: BufMut>(&self, buf: &mut B, version: i16) -> Result<(), ProtocolError> {
376 if !(MIN_VERSION..=MAX_VERSION).contains(&version) {
377 return Err(ProtocolError::SchemaMismatch(
378 "RegisterBrokerRecord version out of range",
379 ));
380 }
381 let flex = is_flexible(version);
382 self.encode_field_0(buf, version, flex);
383 self.encode_field_1(buf, version, flex);
384 self.encode_field_2(buf, version, flex);
385 self.encode_field_3(buf, version, flex);
386 self.encode_field_4(buf, version, flex)?;
387 self.encode_field_5(buf, version, flex)?;
388 self.encode_field_6(buf, version, flex)?;
389 self.encode_field_7(buf, version, flex);
390 self.encode_field_8(buf, version, flex);
391 self.encode_tagged_fields(buf, version, flex)?;
392 Ok(())
393 }
394 fn encoded_len(&self, version: i16) -> usize {
395 let flex = is_flexible(version);
396 let mut n: usize = 0;
397 if version >= 0 {
398 n += 4;
399 }
400 if version >= 2 {
401 n += 1;
402 }
403 if version >= 0 {
404 n += 16;
405 }
406 if version >= 0 {
407 n += 8;
408 }
409 if version >= 0 {
410 n += {
411 let prefix = array_len_prefix_len((self.end_points).len(), flex);
412 let body: usize = (self.end_points)
413 .iter()
414 .map(|it| it.encoded_len(version))
415 .sum();
416 prefix + body
417 };
418 }
419 if version >= 0 {
420 n += {
421 let prefix = array_len_prefix_len((self.features).len(), flex);
422 let body: usize = (self.features)
423 .iter()
424 .map(|it| it.encoded_len(version))
425 .sum();
426 prefix + body
427 };
428 }
429 if version >= 0 {
430 n += if flex {
431 compact_nullable_string_len(self.rack.as_deref())
432 } else {
433 nullable_string_len(self.rack.as_deref())
434 };
435 }
436 if version >= 0 {
437 n += 1;
438 }
439 if version >= 1 {
440 n += 1;
441 }
442 if flex {
443 let mut known_pairs: Vec<(u32, usize)> = Vec::new();
444 if version >= 3 && !(is_default(&self.log_dirs)) {
445 known_pairs.push((0, {
446 let prefix = array_len_prefix_len((self.log_dirs).len(), flex);
447 let body: usize = (self.log_dirs).iter().map(|_| 16).sum();
448 prefix + body
449 }));
450 }
451 if version >= 4 && self.cordoned_log_dirs.is_some() {
452 known_pairs.push((1, {
453 let opt: Option<&Vec<_>> = (self.cordoned_log_dirs).as_ref();
454 let prefix = nullable_array_len_prefix_len(opt.map(Vec::len), flex);
455 let body: usize = opt.map_or(0, |v| v.iter().map(|_| 16).sum());
456 prefix + body
457 }));
458 }
459 n += tagged_fields_len(&known_pairs, &self.unknown_tagged_fields);
460 }
461 n
462 }
463}
464impl Decode<'_> for RegisterBrokerRecord {
465 fn decode<B: Buf>(buf: &mut B, version: i16) -> Result<Self, ProtocolError> {
466 if !(MIN_VERSION..=MAX_VERSION).contains(&version) {
467 return Err(ProtocolError::SchemaMismatch(
468 "RegisterBrokerRecord version out of range",
469 ));
470 }
471 let flex = is_flexible(version);
472 let mut out = Self::default();
473 Self::decode_field_0(&mut out, buf, version, flex)?;
474 Self::decode_field_1(&mut out, buf, version, flex)?;
475 Self::decode_field_2(&mut out, buf, version, flex)?;
476 Self::decode_field_3(&mut out, buf, version, flex)?;
477 Self::decode_field_4(&mut out, buf, version, flex)?;
478 Self::decode_field_5(&mut out, buf, version, flex)?;
479 Self::decode_field_6(&mut out, buf, version, flex)?;
480 Self::decode_field_7(&mut out, buf, version, flex)?;
481 Self::decode_field_8(&mut out, buf, version, flex)?;
482 Self::decode_tagged_fields(&mut out, buf, version, flex)?;
483 Ok(out)
484 }
485}
486#[cfg(test)]
487impl RegisterBrokerRecord {
488 #[must_use]
489 pub fn populated(version: i16) -> Self {
490 let mut m = Self::default();
491 if version >= 0 {
492 m.broker_id = 1i32;
493 }
494 if version >= 2 {
495 m.is_migrating_zk_broker = true;
496 }
497 if version >= 0 {
498 m.incarnation_id = Uuid([1u8; 16]);
499 }
500 if version >= 0 {
501 m.broker_epoch = 1i64;
502 }
503 if version >= 0 {
504 m.end_points = vec![BrokerEndpoint::populated(version)];
505 }
506 if version >= 0 {
507 m.features = vec![BrokerFeature::populated(version)];
508 }
509 if version >= 0 {
510 m.rack = Some("x".to_owned());
511 }
512 if version >= 0 {
513 m.fenced = true;
514 }
515 if version >= 1 {
516 m.in_controlled_shutdown = true;
517 }
518 if version >= 3 {
519 m.log_dirs = vec![Uuid([1u8; 16])];
520 }
521 if version >= 4 {
522 m.cordoned_log_dirs = Some(vec![Uuid([1u8; 16])]);
523 }
524 m
525 }
526}
527#[derive(Debug, Clone, PartialEq, Eq, Default)]
528pub struct BrokerEndpoint {
529 pub name: String,
530 pub host: String,
531 pub port: u16,
532 pub security_protocol: i16,
533 pub unknown_tagged_fields: UnknownTaggedFields,
534}
535impl Encode for BrokerEndpoint {
536 fn encode<B: BufMut>(&self, buf: &mut B, version: i16) -> Result<(), ProtocolError> {
537 let flex = version >= 0;
538 if version >= 0 {
539 if flex {
540 put_compact_string(buf, &self.name)?;
541 } else {
542 put_string(buf, &self.name)?;
543 }
544 }
545 if version >= 0 {
546 if flex {
547 put_compact_string(buf, &self.host)?;
548 } else {
549 put_string(buf, &self.host)?;
550 }
551 }
552 if version >= 0 {
553 put_u16(buf, self.port);
554 }
555 if version >= 0 {
556 put_i16(buf, self.security_protocol);
557 }
558 if flex {
559 let tagged = WriteTaggedFields::new();
560 tagged.write(buf, &self.unknown_tagged_fields)?;
561 }
562 Ok(())
563 }
564 fn encoded_len(&self, version: i16) -> usize {
565 let flex = version >= 0;
566 let mut n: usize = 0;
567 if version >= 0 {
568 n += if flex {
569 compact_string_len(&self.name)
570 } else {
571 string_len(&self.name)
572 };
573 }
574 if version >= 0 {
575 n += if flex {
576 compact_string_len(&self.host)
577 } else {
578 string_len(&self.host)
579 };
580 }
581 if version >= 0 {
582 n += 2;
583 }
584 if version >= 0 {
585 n += 2;
586 }
587 if flex {
588 let known_pairs: Vec<(u32, usize)> = Vec::new();
589 n += tagged_fields_len(&known_pairs, &self.unknown_tagged_fields);
590 }
591 n
592 }
593}
594impl Decode<'_> for BrokerEndpoint {
595 fn decode<B: Buf>(buf: &mut B, version: i16) -> Result<Self, ProtocolError> {
596 let flex = version >= 0;
597 let mut out = Self::default();
598 if version >= 0 {
599 out.name = if flex {
600 get_compact_string_owned(buf)?
601 } else {
602 get_string_owned(buf)?
603 };
604 }
605 if version >= 0 {
606 out.host = if flex {
607 get_compact_string_owned(buf)?
608 } else {
609 get_string_owned(buf)?
610 };
611 }
612 if version >= 0 {
613 out.port = get_u16(buf)?;
614 }
615 if version >= 0 {
616 out.security_protocol = get_i16(buf)?;
617 }
618 if flex {
619 out.unknown_tagged_fields = read_tagged_fields(buf, |_tag, _payload| Ok(false))?;
620 }
621 Ok(out)
622 }
623}
624#[cfg(test)]
625impl BrokerEndpoint {
626 #[must_use]
627 pub fn populated(version: i16) -> Self {
628 let mut m = Self::default();
629 if version >= 0 {
630 m.name = "x".to_owned();
631 }
632 if version >= 0 {
633 m.host = "x".to_owned();
634 }
635 if version >= 0 {
636 m.port = 1u16;
637 }
638 if version >= 0 {
639 m.security_protocol = 1i16;
640 }
641 m
642 }
643}
644#[derive(Debug, Clone, PartialEq, Eq, Default)]
645pub struct BrokerFeature {
646 pub name: String,
647 pub min_supported_version: i16,
648 pub max_supported_version: i16,
649 pub unknown_tagged_fields: UnknownTaggedFields,
650}
651impl Encode for BrokerFeature {
652 fn encode<B: BufMut>(&self, buf: &mut B, version: i16) -> Result<(), ProtocolError> {
653 let flex = version >= 0;
654 if version >= 0 {
655 if flex {
656 put_compact_string(buf, &self.name)?;
657 } else {
658 put_string(buf, &self.name)?;
659 }
660 }
661 if version >= 0 {
662 put_i16(buf, self.min_supported_version);
663 }
664 if version >= 0 {
665 put_i16(buf, self.max_supported_version);
666 }
667 if flex {
668 let tagged = WriteTaggedFields::new();
669 tagged.write(buf, &self.unknown_tagged_fields)?;
670 }
671 Ok(())
672 }
673 fn encoded_len(&self, version: i16) -> usize {
674 let flex = version >= 0;
675 let mut n: usize = 0;
676 if version >= 0 {
677 n += if flex {
678 compact_string_len(&self.name)
679 } else {
680 string_len(&self.name)
681 };
682 }
683 if version >= 0 {
684 n += 2;
685 }
686 if version >= 0 {
687 n += 2;
688 }
689 if flex {
690 let known_pairs: Vec<(u32, usize)> = Vec::new();
691 n += tagged_fields_len(&known_pairs, &self.unknown_tagged_fields);
692 }
693 n
694 }
695}
696impl Decode<'_> for BrokerFeature {
697 fn decode<B: Buf>(buf: &mut B, version: i16) -> Result<Self, ProtocolError> {
698 let flex = version >= 0;
699 let mut out = Self::default();
700 if version >= 0 {
701 out.name = if flex {
702 get_compact_string_owned(buf)?
703 } else {
704 get_string_owned(buf)?
705 };
706 }
707 if version >= 0 {
708 out.min_supported_version = get_i16(buf)?;
709 }
710 if version >= 0 {
711 out.max_supported_version = get_i16(buf)?;
712 }
713 if flex {
714 out.unknown_tagged_fields = read_tagged_fields(buf, |_tag, _payload| Ok(false))?;
715 }
716 Ok(out)
717 }
718}
719#[cfg(test)]
720impl BrokerFeature {
721 #[must_use]
722 pub fn populated(version: i16) -> Self {
723 let mut m = Self::default();
724 if version >= 0 {
725 m.name = "x".to_owned();
726 }
727 if version >= 0 {
728 m.min_supported_version = 1i16;
729 }
730 if version >= 0 {
731 m.max_supported_version = 1i16;
732 }
733 m
734 }
735}
736#[must_use]
739#[allow(unused_comparisons)]
740pub fn default_json(version: i16) -> ::serde_json::Value {
741 let mut obj = ::serde_json::Map::new();
742 obj.insert("brokerId".to_owned(), ::serde_json::json!(0));
743 if version >= 2 {
744 obj.insert(
745 "isMigratingZkBroker".to_owned(),
746 ::serde_json::Value::Bool(false),
747 );
748 }
749 obj.insert(
750 "incarnationId".to_owned(),
751 ::serde_json::Value::String("AAAAAAAAAAAAAAAAAAAAAA".to_owned()),
752 );
753 obj.insert("brokerEpoch".to_owned(), ::serde_json::json!(0));
754 obj.insert("endPoints".to_owned(), ::serde_json::Value::Array(vec![]));
755 obj.insert("features".to_owned(), ::serde_json::Value::Array(vec![]));
756 obj.insert(
757 "rack".to_owned(),
758 ::serde_json::Value::String(String::new()),
759 );
760 obj.insert("fenced".to_owned(), ::serde_json::Value::Bool(true));
761 if version >= 1 {
762 obj.insert(
763 "inControlledShutdown".to_owned(),
764 ::serde_json::Value::Bool(false),
765 );
766 }
767 if version >= 3 {
768 obj.insert("logDirs".to_owned(), ::serde_json::Value::Array(vec![]));
769 }
770 if version >= 4 {
771 obj.insert("cordonedLogDirs".to_owned(), ::serde_json::Value::Null);
772 }
773 ::serde_json::Value::Object(obj)
774}
775#[must_use]
778pub fn tagged_fixture() -> RegisterBrokerRecord {
779 RegisterBrokerRecord {
780 log_dirs: vec![Uuid([1u8; 16])],
781 cordoned_log_dirs: Some(vec![Uuid([1u8; 16])]),
782 ..RegisterBrokerRecord::default()
783 }
784}
785#[must_use]
788pub fn tagged_fixture_json(version: i16) -> ::serde_json::Value {
789 let mut m = ::serde_json::Map::new();
790 m.insert("brokerId".to_owned(), ::serde_json::json!(0));
791 if version >= 2 {
792 m.insert(
793 "isMigratingZkBroker".to_owned(),
794 ::serde_json::Value::Bool(false),
795 );
796 }
797 m.insert(
798 "incarnationId".to_owned(),
799 ::serde_json::Value::String("AAAAAAAAAAAAAAAAAAAAAA".to_owned()),
800 );
801 m.insert("brokerEpoch".to_owned(), ::serde_json::json!(0));
802 m.insert("endPoints".to_owned(), ::serde_json::Value::Array(vec![]));
803 m.insert("features".to_owned(), ::serde_json::Value::Array(vec![]));
804 m.insert(
805 "rack".to_owned(),
806 ::serde_json::Value::String(String::new()),
807 );
808 m.insert("fenced".to_owned(), ::serde_json::Value::Bool(true));
809 if version >= 1 {
810 m.insert(
811 "inControlledShutdown".to_owned(),
812 ::serde_json::Value::Bool(false),
813 );
814 }
815 if version >= 3 {
816 m.insert(
817 "logDirs".to_owned(),
818 ::serde_json::Value::Array(vec![::serde_json::Value::String(
819 "AQEBAQEBAQEBAQEBAQEBAQ".to_owned(),
820 )]),
821 );
822 }
823 if version == 4 {
824 m.insert(
825 "cordonedLogDirs".to_owned(),
826 ::serde_json::Value::Array(vec![::serde_json::Value::String(
827 "AQEBAQEBAQEBAQEBAQEBAQ".to_owned(),
828 )]),
829 );
830 }
831 ::serde_json::Value::Object(m)
832}