@portrayal/juniper-mx10003 0.0.0-stage → 0.2.21

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.
@@ -0,0 +1 @@
1
+ {"components":{},"config":"base","configs":["base"],"device":"mx10003","device-version":"0.2.20","elements":[{"box":{"h":132.3,"w":762.0,"x":0.0,"y":0.0},"class":"chassis","id":"chassis-faceplate","parent":null,"path":"chassis"}],"generator":{"tool":"portrayal-render","version":"0.2.0"},"source-sha256":"a6bd8f0a450b29718aafacd7f9818d9619f1610fe3ab7cc2f85af668c4027961","view":"right","viewBox":[0.0,0.0,762.0,132.3]}
@@ -0,0 +1,48 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg xmlns="http://www.w3.org/2000/svg" width="762.0mm" height="132.3mm" viewBox="0 0 762.0 132.3" data-device="mx10003" data-view="right" data-weight-full-ac-kg="71.4" data-weight-full-dc-kg="74.1" data-weight-empty-kg="22.68" data-power-typical-w="1676" data-power-max-w="2110" data-power-envelope="fully-configured" data-power-typical-scope="OUTPUT side - fully configured, high activity, QSFP28 optics and JNP-MIC1, at 25 C (Table 24); input 1862 W at 90% efficiency" data-power-max-scope="OUTPUT side - fully configured, high activity, QSFP28 optics and JNP-MIC1, at 55 C (Table 25); input 2344 W at 90% efficiency">
3
+ <style>
4
+ [data-path] { cursor: pointer; }
5
+ .state-on { --led-color: #22c55e; }
6
+ .state-up { --led-color: #22c55e; }
7
+ /* link and up are the same fact on an Ethernet lamp; see docs/rj45-family-design.md */
8
+ .state-link { --led-color: #22c55e; }
9
+ .state-activity { --led-color: #86efac; }
10
+ .state-ok { --led-color: #22c55e; }
11
+ .state-fault { --led-color: #ef4444; }
12
+ .state-fail { --led-color: #ef4444; }
13
+ .state-locate { --led-color: #3b82f6; }
14
+ .state-absent { opacity: 0.35; }
15
+ /* A SWITCHED OUTLET WITH NO LAMP is dimmed when it is off, as absent is but
16
+ less (docs/pdu-model-design.md section 3.2): every switched PDU in the
17
+ library has a lamp per outlet, and this is the fallback so the first one
18
+ without does not invent a lamp. An outlet a lamp is bound to by `for:`
19
+ carries data-lamped (mark_lamped) and is never dimmed: its lamp says it. */
20
+ [data-class='inlet'][data-states~='off'].state-off:not([data-lamped]) { opacity: 0.55; }
21
+ /* A state is a colour AND a behaviour. Solid and blinking of the same colour
22
+ are different facts on real hardware: on the S9510-28DC a solid green PWR
23
+ is "system power good" and a blinking green PWR is "power good but BMC
24
+ power fail". A blinking state that renders solid is the same failure as a
25
+ state class nothing paints - it looks modelled and is not.
26
+ blink animates opacity rather than fill, because each skin carries its own
27
+ unlit colour in the fill fallback and a keyframe cannot name it. alternate
28
+ animates fill, because two colours is the whole point, and takes its first
29
+ value from the element's own fill. */
30
+ @keyframes portrayal-blink {
31
+ 0%, 49.9% { opacity: 1; }
32
+ 50%, 100% { opacity: 0; }
33
+ }
34
+ @keyframes portrayal-alternate {
35
+ 0%, 49.9% { fill: var(--led-color, #3a3f44); }
36
+ 50%, 100% { fill: var(--led-color-alt, #3a3f44); }
37
+ }
38
+ .portrayal-highlight { filter: drop-shadow(0 0 1.2px #f59e0b) drop-shadow(0 0 0.5px #f59e0b); }
39
+ .portrayal-dim { opacity: 0.25; }
40
+ [data-class='region'].portrayal-highlight { stroke: #f59e0b; stroke-width: 0.7; filter: none; }
41
+ .state-fail[data-class='psu'], .state-fail[data-class='fan'] { filter: drop-shadow(0 0 1.4px #ef4444); }
42
+ </style>
43
+ <metadata>{"device":"Juniper MX10003","device-version":"0.2.20","generator":{"tool":"portrayal-render","version":"0.2.0"},"resolved-components":{},"source-sha256":"a6bd8f0a450b29718aafacd7f9818d9619f1610fe3ab7cc2f85af668c4027961","view":"right"}</metadata>
44
+ <rect id="chassis-faceplate" data-path="chassis" data-class="chassis" data-model="MX10003" x="0" y="0" width="762" height="132.3" rx="1.2" fill="#6a6f75" stroke="#22262a" stroke-width="0.5" />
45
+ <g id="--decor" data-class="decor">
46
+ <rect id="plate-0" data-kind="plate" x="0" y="58" width="762" height="16" rx="0.6" fill="#5d6268" />
47
+ </g>
48
+ </svg>
@@ -0,0 +1 @@
1
+ {"components":{},"config":"base","configs":["base"],"device":"mx10003","device-version":"0.2.20","elements":[{"box":{"h":762.0,"w":447.0,"x":0.0,"y":0.0},"class":"chassis","id":"chassis-faceplate","parent":null,"path":"chassis"}],"generator":{"tool":"portrayal-render","version":"0.2.0"},"source-sha256":"a6bd8f0a450b29718aafacd7f9818d9619f1610fe3ab7cc2f85af668c4027961","view":"top","viewBox":[0.0,0.0,447.0,762.0]}
@@ -0,0 +1,49 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg xmlns="http://www.w3.org/2000/svg" width="447.0mm" height="762.0mm" viewBox="0 0 447.0 762.0" data-device="mx10003" data-view="top" data-weight-full-ac-kg="71.4" data-weight-full-dc-kg="74.1" data-weight-empty-kg="22.68" data-power-typical-w="1676" data-power-max-w="2110" data-power-envelope="fully-configured" data-power-typical-scope="OUTPUT side - fully configured, high activity, QSFP28 optics and JNP-MIC1, at 25 C (Table 24); input 1862 W at 90% efficiency" data-power-max-scope="OUTPUT side - fully configured, high activity, QSFP28 optics and JNP-MIC1, at 55 C (Table 25); input 2344 W at 90% efficiency">
3
+ <style>
4
+ [data-path] { cursor: pointer; }
5
+ .state-on { --led-color: #22c55e; }
6
+ .state-up { --led-color: #22c55e; }
7
+ /* link and up are the same fact on an Ethernet lamp; see docs/rj45-family-design.md */
8
+ .state-link { --led-color: #22c55e; }
9
+ .state-activity { --led-color: #86efac; }
10
+ .state-ok { --led-color: #22c55e; }
11
+ .state-fault { --led-color: #ef4444; }
12
+ .state-fail { --led-color: #ef4444; }
13
+ .state-locate { --led-color: #3b82f6; }
14
+ .state-absent { opacity: 0.35; }
15
+ /* A SWITCHED OUTLET WITH NO LAMP is dimmed when it is off, as absent is but
16
+ less (docs/pdu-model-design.md section 3.2): every switched PDU in the
17
+ library has a lamp per outlet, and this is the fallback so the first one
18
+ without does not invent a lamp. An outlet a lamp is bound to by `for:`
19
+ carries data-lamped (mark_lamped) and is never dimmed: its lamp says it. */
20
+ [data-class='inlet'][data-states~='off'].state-off:not([data-lamped]) { opacity: 0.55; }
21
+ /* A state is a colour AND a behaviour. Solid and blinking of the same colour
22
+ are different facts on real hardware: on the S9510-28DC a solid green PWR
23
+ is "system power good" and a blinking green PWR is "power good but BMC
24
+ power fail". A blinking state that renders solid is the same failure as a
25
+ state class nothing paints - it looks modelled and is not.
26
+ blink animates opacity rather than fill, because each skin carries its own
27
+ unlit colour in the fill fallback and a keyframe cannot name it. alternate
28
+ animates fill, because two colours is the whole point, and takes its first
29
+ value from the element's own fill. */
30
+ @keyframes portrayal-blink {
31
+ 0%, 49.9% { opacity: 1; }
32
+ 50%, 100% { opacity: 0; }
33
+ }
34
+ @keyframes portrayal-alternate {
35
+ 0%, 49.9% { fill: var(--led-color, #3a3f44); }
36
+ 50%, 100% { fill: var(--led-color-alt, #3a3f44); }
37
+ }
38
+ .portrayal-highlight { filter: drop-shadow(0 0 1.2px #f59e0b) drop-shadow(0 0 0.5px #f59e0b); }
39
+ .portrayal-dim { opacity: 0.25; }
40
+ [data-class='region'].portrayal-highlight { stroke: #f59e0b; stroke-width: 0.7; filter: none; }
41
+ .state-fail[data-class='psu'], .state-fail[data-class='fan'] { filter: drop-shadow(0 0 1.4px #ef4444); }
42
+ </style>
43
+ <metadata>{"device":"Juniper MX10003","device-version":"0.2.20","generator":{"tool":"portrayal-render","version":"0.2.0"},"resolved-components":{},"source-sha256":"a6bd8f0a450b29718aafacd7f9818d9619f1610fe3ab7cc2f85af668c4027961","view":"top"}</metadata>
44
+ <rect id="chassis-faceplate" data-path="chassis" data-class="chassis" data-model="MX10003" x="0" y="0" width="447" height="762" rx="1.2" fill="#6a6f75" stroke="#22262a" stroke-width="0.5" />
45
+ <g id="--decor" data-class="decor">
46
+ <rect id="plate-0" data-kind="plate" x="0" y="0" width="5" height="762" rx="0.6" fill="#5d6268" />
47
+ <rect id="plate-1" data-kind="plate" x="442" y="0" width="5" height="762" rx="0.6" fill="#5d6268" />
48
+ </g>
49
+ </svg>
@@ -0,0 +1,527 @@
1
+ {
2
+ "aliases": [],
3
+ "attrs": {
4
+ "physical": {
5
+ "weight-empty-kg": 22.68,
6
+ "weight-full-ac-kg": 71.4,
7
+ "weight-full-dc-kg": 74.1
8
+ },
9
+ "power": {
10
+ "power-envelope": "fully-configured",
11
+ "power-max-scope": "OUTPUT side - fully configured, high activity, QSFP28 optics and JNP-MIC1, at 55 C (Table 25); input 2344 W at 90% efficiency",
12
+ "power-max-w": 2110,
13
+ "power-typical-scope": "OUTPUT side - fully configured, high activity, QSFP28 optics and JNP-MIC1, at 25 C (Table 24); input 1862 W at 90% efficiency",
14
+ "power-typical-w": 1676
15
+ }
16
+ },
17
+ "bays": {
18
+ "bottom": [],
19
+ "front": [
20
+ {
21
+ "accepts": [
22
+ "juniper/jnp10003-rcb@1",
23
+ "juniper/jnp-re-blnk-3@1"
24
+ ],
25
+ "at": [
26
+ 17.0,
27
+ 2.0
28
+ ],
29
+ "default": "juniper/jnp10003-rcb@1",
30
+ "group": "res",
31
+ "id": "re0",
32
+ "rel-pos": 0,
33
+ "rotate": null,
34
+ "size": {
35
+ "h": 42.1,
36
+ "w": 202.7
37
+ }
38
+ },
39
+ {
40
+ "accepts": [
41
+ "juniper/jnp10003-rcb@1",
42
+ "juniper/jnp-re-blnk-3@1"
43
+ ],
44
+ "at": [
45
+ 227.4,
46
+ 2.0
47
+ ],
48
+ "default": "juniper/jnp10003-rcb@1",
49
+ "group": "res",
50
+ "id": "re1",
51
+ "rel-pos": 1,
52
+ "rotate": null,
53
+ "size": {
54
+ "h": 42.1,
55
+ "w": 202.7
56
+ }
57
+ },
58
+ {
59
+ "accepts": [
60
+ "juniper/jnp10003-lc2103@1",
61
+ "juniper/jnp-lc-blnk-3@1"
62
+ ],
63
+ "at": [
64
+ 14.0,
65
+ 46.0
66
+ ],
67
+ "default": "juniper/jnp10003-lc2103@1",
68
+ "group": "mpcs",
69
+ "id": "mpc1",
70
+ "rel-pos": 1,
71
+ "rotate": null,
72
+ "size": {
73
+ "h": 41.9,
74
+ "w": 419.1
75
+ }
76
+ },
77
+ {
78
+ "accepts": [
79
+ "juniper/jnp10003-lc2103@1",
80
+ "juniper/jnp-lc-blnk-3@1"
81
+ ],
82
+ "at": [
83
+ 14.0,
84
+ 89.5
85
+ ],
86
+ "default": "juniper/jnp10003-lc2103@1",
87
+ "group": "mpcs",
88
+ "id": "mpc0",
89
+ "rel-pos": 0,
90
+ "rotate": null,
91
+ "size": {
92
+ "h": 41.9,
93
+ "w": 419.1
94
+ }
95
+ }
96
+ ],
97
+ "left": [],
98
+ "rear": [
99
+ {
100
+ "accepts": [
101
+ "juniper/mx10003-psu-ac@1",
102
+ "juniper/jnp-pwr-blnk-3@1"
103
+ ],
104
+ "at": [
105
+ 8.0,
106
+ 3.0
107
+ ],
108
+ "default": "juniper/mx10003-psu-ac@1",
109
+ "group": "psus",
110
+ "id": "psm0",
111
+ "rel-pos": 0,
112
+ "rotate": null,
113
+ "size": {
114
+ "h": 41.4,
115
+ "w": 86.7
116
+ }
117
+ },
118
+ {
119
+ "accepts": [
120
+ "juniper/mx10003-psu-ac@1",
121
+ "juniper/jnp-pwr-blnk-3@1"
122
+ ],
123
+ "at": [
124
+ 8.0,
125
+ 45.4
126
+ ],
127
+ "default": "juniper/mx10003-psu-ac@1",
128
+ "group": "psus",
129
+ "id": "psm1",
130
+ "rel-pos": 1,
131
+ "rotate": null,
132
+ "size": {
133
+ "h": 41.4,
134
+ "w": 86.7
135
+ }
136
+ },
137
+ {
138
+ "accepts": [
139
+ "juniper/mx10003-psu-ac@1",
140
+ "juniper/jnp-pwr-blnk-3@1"
141
+ ],
142
+ "at": [
143
+ 8.0,
144
+ 87.8
145
+ ],
146
+ "default": "juniper/mx10003-psu-ac@1",
147
+ "group": "psus",
148
+ "id": "psm2",
149
+ "rel-pos": 2,
150
+ "rotate": null,
151
+ "size": {
152
+ "h": 41.4,
153
+ "w": 86.7
154
+ }
155
+ },
156
+ {
157
+ "accepts": [
158
+ "juniper/mx10003-psu-ac@1",
159
+ "juniper/jnp-pwr-blnk-3@1"
160
+ ],
161
+ "at": [
162
+ 352.3,
163
+ 3.0
164
+ ],
165
+ "default": "juniper/mx10003-psu-ac@1",
166
+ "group": "psus",
167
+ "id": "psm3",
168
+ "rel-pos": 3,
169
+ "rotate": null,
170
+ "size": {
171
+ "h": 41.4,
172
+ "w": 86.7
173
+ }
174
+ },
175
+ {
176
+ "accepts": [
177
+ "juniper/mx10003-psu-ac@1",
178
+ "juniper/jnp-pwr-blnk-3@1"
179
+ ],
180
+ "at": [
181
+ 352.3,
182
+ 45.4
183
+ ],
184
+ "default": "juniper/mx10003-psu-ac@1",
185
+ "group": "psus",
186
+ "id": "psm4",
187
+ "rel-pos": 4,
188
+ "rotate": null,
189
+ "size": {
190
+ "h": 41.4,
191
+ "w": 86.7
192
+ }
193
+ },
194
+ {
195
+ "accepts": [
196
+ "juniper/mx10003-psu-ac@1",
197
+ "juniper/jnp-pwr-blnk-3@1"
198
+ ],
199
+ "at": [
200
+ 352.3,
201
+ 87.8
202
+ ],
203
+ "default": "juniper/mx10003-psu-ac@1",
204
+ "group": "psus",
205
+ "id": "psm5",
206
+ "rel-pos": 5,
207
+ "rotate": null,
208
+ "size": {
209
+ "h": 41.4,
210
+ "w": 86.7
211
+ }
212
+ },
213
+ {
214
+ "accepts": [
215
+ "juniper/mx10003-fan@1"
216
+ ],
217
+ "at": [
218
+ 98.5,
219
+ 2.8
220
+ ],
221
+ "default": "juniper/mx10003-fan@1",
222
+ "group": "cooling",
223
+ "id": "ft0",
224
+ "rel-pos": 0,
225
+ "rotate": null,
226
+ "size": {
227
+ "h": 126.7,
228
+ "w": 62.5
229
+ }
230
+ },
231
+ {
232
+ "accepts": [
233
+ "juniper/mx10003-fan@1"
234
+ ],
235
+ "at": [
236
+ 161.35,
237
+ 2.8
238
+ ],
239
+ "default": "juniper/mx10003-fan@1",
240
+ "group": "cooling",
241
+ "id": "ft1",
242
+ "rel-pos": 1,
243
+ "rotate": null,
244
+ "size": {
245
+ "h": 126.7,
246
+ "w": 62.5
247
+ }
248
+ },
249
+ {
250
+ "accepts": [
251
+ "juniper/mx10003-fan@1"
252
+ ],
253
+ "at": [
254
+ 224.2,
255
+ 2.8
256
+ ],
257
+ "default": "juniper/mx10003-fan@1",
258
+ "group": "cooling",
259
+ "id": "ft2",
260
+ "rel-pos": 2,
261
+ "rotate": null,
262
+ "size": {
263
+ "h": 126.7,
264
+ "w": 62.5
265
+ }
266
+ },
267
+ {
268
+ "accepts": [
269
+ "juniper/mx10003-fan@1"
270
+ ],
271
+ "at": [
272
+ 287.05,
273
+ 2.8
274
+ ],
275
+ "default": "juniper/mx10003-fan@1",
276
+ "group": "cooling",
277
+ "id": "ft3",
278
+ "rel-pos": 3,
279
+ "rotate": null,
280
+ "size": {
281
+ "h": 126.7,
282
+ "w": 62.5
283
+ }
284
+ }
285
+ ],
286
+ "right": [],
287
+ "top": []
288
+ },
289
+ "cages": {
290
+ "bottom": [],
291
+ "front": [],
292
+ "left": [],
293
+ "rear": [],
294
+ "right": [],
295
+ "top": []
296
+ },
297
+ "capability": {
298
+ "blocked": [],
299
+ "flags": [],
300
+ "level": 4,
301
+ "name": "addressable",
302
+ "unknown": []
303
+ },
304
+ "chassis": {
305
+ "airflow": null,
306
+ "d": 762.0,
307
+ "h": 132.3,
308
+ "mount": "rack",
309
+ "power": null,
310
+ "ru": 3,
311
+ "w": 447.0
312
+ },
313
+ "configs": [
314
+ {
315
+ "airflow": null,
316
+ "bays": {
317
+ "mpc0": "juniper/jnp-lc-blnk-3@1",
318
+ "mpc1": "juniper/jnp-lc-blnk-3@1"
319
+ },
320
+ "description": "Chassis only - what you spec before deciding what goes in it. The 2 slot bays are EMPTY; cooling, psus, res are populated. Enough to power on and reach the box, which is the question most people ask first and the one `default` used to answer with whatever the drawing happened to be populated with.",
321
+ "files": {
322
+ "bottom": "mx10003.base.bottom.svg",
323
+ "front": "mx10003.base.front.svg",
324
+ "left": "mx10003.base.left.svg",
325
+ "rear": "mx10003.base.rear.svg",
326
+ "right": "mx10003.base.right.svg",
327
+ "top": "mx10003.base.top.svg"
328
+ },
329
+ "kind": "base",
330
+ "mount-points": [],
331
+ "name": "base",
332
+ "names": {},
333
+ "occupants": {},
334
+ "part-numbers": {},
335
+ "power": [],
336
+ "slots": [],
337
+ "states": {
338
+ "ft0/module": [
339
+ "ok",
340
+ "fail",
341
+ "absent"
342
+ ],
343
+ "ft1/module": [
344
+ "ok",
345
+ "fail",
346
+ "absent"
347
+ ],
348
+ "ft2/module": [
349
+ "ok",
350
+ "fail",
351
+ "absent"
352
+ ],
353
+ "ft3/module": [
354
+ "ok",
355
+ "fail",
356
+ "absent"
357
+ ],
358
+ "mpc0/module": [
359
+ "absent"
360
+ ],
361
+ "mpc1/module": [
362
+ "absent"
363
+ ],
364
+ "psm0/module": [
365
+ "ok",
366
+ "fault",
367
+ "absent"
368
+ ],
369
+ "psm1/module": [
370
+ "ok",
371
+ "fault",
372
+ "absent"
373
+ ],
374
+ "psm2/module": [
375
+ "ok",
376
+ "fault",
377
+ "absent"
378
+ ],
379
+ "psm3/module": [
380
+ "ok",
381
+ "fault",
382
+ "absent"
383
+ ],
384
+ "psm4/module": [
385
+ "ok",
386
+ "fault",
387
+ "absent"
388
+ ],
389
+ "psm5/module": [
390
+ "ok",
391
+ "fault",
392
+ "absent"
393
+ ],
394
+ "re0/module": [
395
+ "ok",
396
+ "fail",
397
+ "absent"
398
+ ],
399
+ "re0/module/mgmt/led-a": [
400
+ "off",
401
+ "link"
402
+ ],
403
+ "re0/module/mgmt/led-b": [
404
+ "off",
405
+ "activity"
406
+ ],
407
+ "re1/module": [
408
+ "ok",
409
+ "fail",
410
+ "absent"
411
+ ],
412
+ "re1/module/mgmt/led-a": [
413
+ "off",
414
+ "link"
415
+ ],
416
+ "re1/module/mgmt/led-b": [
417
+ "off",
418
+ "activity"
419
+ ]
420
+ },
421
+ "views": {}
422
+ }
423
+ ],
424
+ "default": "base",
425
+ "device": "mx10003",
426
+ "gaps": [
427
+ {
428
+ "because": "needs-photo",
429
+ "blocks": [],
430
+ "kind": "declared",
431
+ "scope": [
432
+ "psus"
433
+ ],
434
+ "wanted": "the DC PSM face (the guide's DC figures are isometric line art; the DC supply is also deeper - 274.3 vs 235.2 mm).",
435
+ "what": "dc-power-variant"
436
+ },
437
+ {
438
+ "because": "needs-photo",
439
+ "blocks": [],
440
+ "kind": "declared",
441
+ "scope": [
442
+ "psus"
443
+ ],
444
+ "wanted": "the printed PSM slot labels - the rear drawing's edge legends are not legible in any source, so left-stack-top-down 0-2 / right-stack 3-5 is an assumption.",
445
+ "what": "psm-slot-numbering"
446
+ },
447
+ {
448
+ "because": "vendor-silent",
449
+ "blocks": [],
450
+ "kind": "declared",
451
+ "scope": [],
452
+ "wanted": "the position of the two-hole protective earthing bracket on the side rail (M4 studs at 19.1 mm centres per the guide, location not drawn).",
453
+ "what": "side-earthing-bracket"
454
+ },
455
+ {
456
+ "because": "needs-photo",
457
+ "blocks": [],
458
+ "kind": "declared",
459
+ "scope": [],
460
+ "wanted": "a photograph of the rear - only the schematic line drawing g009801 exists in the intake, so rear finish is inferred.",
461
+ "what": "rear-photo"
462
+ },
463
+ {
464
+ "because": "CAP",
465
+ "blocks": [
466
+ "specified"
467
+ ],
468
+ "kind": "derived",
469
+ "wanted": "an `attrs.performance` section; `cpu`, `memory` in a missing `attrs.platform` section; one of `operating-temp`, `operating-temp-f2b`, `operating-temp-b2f` in a missing `attrs.environmental` section (profile `networking` - see spec/schemas/profiles.yaml) - unlocks the About panel, and comparison against other devices",
470
+ "what": "specified"
471
+ },
472
+ {
473
+ "because": "CAP",
474
+ "blocks": [
475
+ "wired"
476
+ ],
477
+ "kind": "derived",
478
+ "wanted": "`physical-context` on 14 bays (front 4, rear 10) - unlocks ENTITY-MIB / Redfish correlation and monitoring overlays",
479
+ "what": "wired"
480
+ }
481
+ ],
482
+ "model": "MX10003",
483
+ "options": {
484
+ "airflow": [],
485
+ "power": []
486
+ },
487
+ "pdu-class": null,
488
+ "provenance": {
489
+ "chassis": {
490
+ "confidence": "datasheet",
491
+ "note": "datasheet-table - 5.21 x 17.6 x 30 in (132.3 x 447 x 762 mm), 3RU; the guide physical table repeats it. Ears NOT MODELLED by convention (the rack face is 19 in / 482.6 mm)"
492
+ },
493
+ "color": {
494
+ "note": "photo - medium grey chassis and modules, light-blue ejector levers and SSD carrier (Juniper cloud-era styling)"
495
+ },
496
+ "front": {
497
+ "note": "photo - the frontwtop photograph measured at ~2.95 px/mm across the 447 mm body: RCBs at x 17.0 and 227.4 over rows y 2.0; MPCs at x 14.0 (centred 419.1 in 447), rows y 46.0 and 89.5; positions approximate to ~2 mm. The photograph and drawing g009800 agree on arrangement; the photograph wins on finish"
498
+ },
499
+ "fru-sizes": {
500
+ "confidence": "datasheet",
501
+ "note": "datasheet-table - the guide carries a full FRU dimension table (RCB 202.7 x 42.1, MPC 419.1 x 41.9, MIC 197.3 x 41.9, fan module 62.5 x 126.7, PSU 86.7 face); every component size is vendor-stated"
502
+ },
503
+ "other-faces": {
504
+ "note": "near-blank by evidence - rail bands estimated; axis conventions per viewer3d.js as the siblings"
505
+ },
506
+ "power": {
507
+ "confidence": "datasheet",
508
+ "note": "datasheet-table - the guide power planning tables: a fully configured chassis at high activity with QSFP28 optics and two JNP-MIC1 draws 1676 W at 25 C (Table 24) and 2110 W at 55 C (Table 25), OUTPUT side; the 90% efficiency column gives the INPUT figures 1862 W and 2344 W. With JNP-MIC1-MACSEC the rows read 1736/1929 W and 2180/2422 W and are not carried. The worked examples sum the same totals from Table 23 (4 fans 80 W + 2 MPCs 1320 W + 2 MICs 160 W + 2 RCBs 116 W = 1676 W; 380 + 1430 + 170 + 130 = 2110 W at 55 C) but describe the router as idle where the tables say high activity, and the 55 C example rounds the input to 2345 W where Table 25 says 2344 W - the vendor is inconsistent with itself, and the tables are what is carried"
509
+ },
510
+ "rear": {
511
+ "confidence": "drawing",
512
+ "note": "drawing - g009801: three-high PSM stacks at both rear corners and four vertical fan trays between them (FT 0-3). The drawing is schematic, so the stacks are anchored to the vendor PSU and fan module dimensions, not to drawing pixels. PSM slot numbering is not legible in any source - see gaps"
513
+ },
514
+ "sources": {
515
+ "note": "MX10003 Hardware Guide (223 pages, 66 figures), the MX10003 datasheet, the vendor front and rear line drawings (g009800/g009801) and the 'frontwtop' (front-with-top) studio photograph in the image library"
516
+ }
517
+ },
518
+ "seat-turns": {},
519
+ "views": [
520
+ "front",
521
+ "rear",
522
+ "left",
523
+ "right",
524
+ "top",
525
+ "bottom"
526
+ ]
527
+ }