From 06d2a509ea38c962148b0f19e9237311f21f966f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Markus=20Viitam=C3=A4ki?= <markus@viitamaki.net>
Date: Tue, 25 Jul 2023 23:07:55 +0200
Subject: [PATCH] Juniper QFX5120 and QFX5130 Family (#1481)

* Juniper QFX5120 and QFX5130 Family

* adding power supplies for QFX5120 and QFX5130 switches

* fix a typo

---------

Co-authored-by: Daniel W. Anner <daniel.anner@danstechsupport.com>
---
 ...{QFX5120-32C.yaml => QFX5120-32C-AFI.yaml} |  33 +++--
 device-types/Juniper/QFX5120-32C-AFO.yaml     |  91 ++++++++++++
 device-types/Juniper/QFX5120-32C-DC-AFI.yaml  |  91 ++++++++++++
 device-types/Juniper/QFX5120-32C-DC-AFO.yaml  |  91 ++++++++++++
 ...{QFX5120-48T.yaml => QFX5120-48T-AFI.yaml} |  29 ++--
 device-types/Juniper/QFX5120-48T-AFO.yaml     | 131 +++++++++++++++++
 device-types/Juniper/QFX5120-48T-DC-AFI.yaml  | 131 +++++++++++++++++
 device-types/Juniper/QFX5120-48T-DC-AFO.yaml  | 131 +++++++++++++++++
 ...QFX5120-48Y.yaml => QFX5120-48Y-AFI2.yaml} |  29 ++--
 device-types/Juniper/QFX5120-48Y-AFO2.yaml    | 135 ++++++++++++++++++
 device-types/Juniper/QFX5120-48Y-DC-AFI2.yaml | 135 ++++++++++++++++++
 device-types/Juniper/QFX5120-48Y-DC-AFO2.yaml | 135 ++++++++++++++++++
 device-types/Juniper/QFX5120-48YM-AFI.yaml    | 135 ++++++++++++++++++
 device-types/Juniper/QFX5120-48YM-AFO.yaml    | 135 ++++++++++++++++++
 device-types/Juniper/QFX5120-48YM-DC-AI.yaml  | 135 ++++++++++++++++++
 device-types/Juniper/QFX5120-48YM-DC-AO.yaml  | 135 ++++++++++++++++++
 ...FX5130-32CD.yaml => QFX5130-32CD-AFI.yaml} |  33 +++--
 device-types/Juniper/QFX5130-32CD-AFO.yaml    |  91 ++++++++++++
 device-types/Juniper/QFX5130-32CD-D-AFI.yaml  |  91 ++++++++++++
 device-types/Juniper/QFX5130-32CD-D-AFO.yaml  |  91 ++++++++++++
 module-types/Juniper/JPSU-650W-AC-AI.yaml     |  11 ++
 module-types/Juniper/JPSU-650W-AC-AO.yaml     |  11 ++
 module-types/Juniper/JPSU-650W-DC-AFI.yaml    |  11 ++
 module-types/Juniper/JPSU-650W-DC-AFO.yaml    |  11 ++
 module-types/Juniper/JPSU-850W-AC-AFI.yaml    |  11 ++
 module-types/Juniper/JPSU-850W-AC-AFO.yaml    |  11 ++
 module-types/Juniper/JPSU-850W-DC-AFI.yaml    |  11 ++
 module-types/Juniper/JPSU-850W-DC-AFO.yaml    |  11 ++
 module-types/Juniper/QFX520048Y-APSU-AI.yaml  |  11 ++
 module-types/Juniper/QFX520048Y-APSU-AO.yaml  |  11 ++
 module-types/Juniper/QFX520048Y-DPSU-AI.yaml  |  11 ++
 module-types/Juniper/QFX520048Y-DPSU-AO.yaml  |  11 ++
 32 files changed, 2088 insertions(+), 52 deletions(-)
 rename device-types/Juniper/{QFX5120-32C.yaml => QFX5120-32C-AFI.yaml} (77%)
 create mode 100644 device-types/Juniper/QFX5120-32C-AFO.yaml
 create mode 100644 device-types/Juniper/QFX5120-32C-DC-AFI.yaml
 create mode 100644 device-types/Juniper/QFX5120-32C-DC-AFO.yaml
 rename device-types/Juniper/{QFX5120-48T.yaml => QFX5120-48T-AFI.yaml} (85%)
 create mode 100644 device-types/Juniper/QFX5120-48T-AFO.yaml
 create mode 100644 device-types/Juniper/QFX5120-48T-DC-AFI.yaml
 create mode 100644 device-types/Juniper/QFX5120-48T-DC-AFO.yaml
 rename device-types/Juniper/{QFX5120-48Y.yaml => QFX5120-48Y-AFI2.yaml} (87%)
 create mode 100644 device-types/Juniper/QFX5120-48Y-AFO2.yaml
 create mode 100644 device-types/Juniper/QFX5120-48Y-DC-AFI2.yaml
 create mode 100644 device-types/Juniper/QFX5120-48Y-DC-AFO2.yaml
 create mode 100644 device-types/Juniper/QFX5120-48YM-AFI.yaml
 create mode 100644 device-types/Juniper/QFX5120-48YM-AFO.yaml
 create mode 100644 device-types/Juniper/QFX5120-48YM-DC-AI.yaml
 create mode 100644 device-types/Juniper/QFX5120-48YM-DC-AO.yaml
 rename device-types/Juniper/{QFX5130-32CD.yaml => QFX5130-32CD-AFI.yaml} (78%)
 create mode 100644 device-types/Juniper/QFX5130-32CD-AFO.yaml
 create mode 100644 device-types/Juniper/QFX5130-32CD-D-AFI.yaml
 create mode 100644 device-types/Juniper/QFX5130-32CD-D-AFO.yaml
 create mode 100644 module-types/Juniper/JPSU-650W-AC-AI.yaml
 create mode 100644 module-types/Juniper/JPSU-650W-AC-AO.yaml
 create mode 100644 module-types/Juniper/JPSU-650W-DC-AFI.yaml
 create mode 100644 module-types/Juniper/JPSU-650W-DC-AFO.yaml
 create mode 100644 module-types/Juniper/JPSU-850W-AC-AFI.yaml
 create mode 100644 module-types/Juniper/JPSU-850W-AC-AFO.yaml
 create mode 100644 module-types/Juniper/JPSU-850W-DC-AFI.yaml
 create mode 100644 module-types/Juniper/JPSU-850W-DC-AFO.yaml
 create mode 100644 module-types/Juniper/QFX520048Y-APSU-AI.yaml
 create mode 100644 module-types/Juniper/QFX520048Y-APSU-AO.yaml
 create mode 100644 module-types/Juniper/QFX520048Y-DPSU-AI.yaml
 create mode 100644 module-types/Juniper/QFX520048Y-DPSU-AO.yaml

diff --git a/device-types/Juniper/QFX5120-32C.yaml b/device-types/Juniper/QFX5120-32C-AFI.yaml
similarity index 77%
rename from device-types/Juniper/QFX5120-32C.yaml
rename to device-types/Juniper/QFX5120-32C-AFI.yaml
index 1d970e9a..c61ce9c6 100644
--- a/device-types/Juniper/QFX5120-32C.yaml
+++ b/device-types/Juniper/QFX5120-32C-AFI.yaml
@@ -1,9 +1,22 @@
 ---
 manufacturer: Juniper
-model: QFX5120-32C
-slug: juniper-qfx5120-32c
-comments: '[Juniper QFX5200 Data Sheet](https://www.juniper.net/us/en/products-services/switching/qfx-series/qfx5120/)'
+model: QFX5120-32C-AFI
+slug: juniper-qfx5120-32c-afi
+part_number: QFX5120-32C-AFI
 u_height: 1
+weight: 21.12
+weight_unit: lb
+airflow: rear-to-front
+is_full_depth: true
+comments: '[Juniper QFX5120 Data Sheet](https://www.juniper.net/content/dam/www/assets/datasheets/us/en/switches/qfx5120-ethernet-switch-datasheet.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: PSU 0
+    position: '0'
+  - name: PSU 1
+    position: '1'
 interfaces:
   - name: fxp0
     type: 1000base-t
@@ -72,13 +85,7 @@ interfaces:
     type: 100gbase-x-qsfp28
   - name: et-0/0/31
     type: 100gbase-x-qsfp28
-power-ports:
-  - name: PSU0
-    type: iec-60320-c14
-    maximum_draw: 650
-  - name: PSU1
-    type: iec-60320-c14
-    maximum_draw: 650
-console-ports:
-  - name: Console
-    type: rj-45
+  - name: xe-0/0/32
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/33
+    type: 10gbase-x-sfpp
diff --git a/device-types/Juniper/QFX5120-32C-AFO.yaml b/device-types/Juniper/QFX5120-32C-AFO.yaml
new file mode 100644
index 00000000..096d2f8c
--- /dev/null
+++ b/device-types/Juniper/QFX5120-32C-AFO.yaml
@@ -0,0 +1,91 @@
+---
+manufacturer: Juniper
+model: QFX5120-32C-AFO
+slug: juniper-qfx5120-32c-afo
+part_number: QFX5120-32C-AFO
+u_height: 1
+weight: 21.12
+weight_unit: lb
+airflow: front-to-rear
+is_full_depth: true
+comments: '[Juniper QFX5120 Data Sheet](https://www.juniper.net/content/dam/www/assets/datasheets/us/en/switches/qfx5120-ethernet-switch-datasheet.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: PSU 0
+    position: '0'
+  - name: PSU 1
+    position: '1'
+interfaces:
+  - name: fxp0
+    type: 1000base-t
+    mgmt_only: true
+  - name: et-0/0/0
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/1
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/2
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/3
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/4
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/5
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/6
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/7
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/8
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/9
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/10
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/11
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/12
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/13
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/14
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/15
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/16
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/17
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/18
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/19
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/20
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/21
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/22
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/23
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/24
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/25
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/26
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/27
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/28
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/29
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/30
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/31
+    type: 100gbase-x-qsfp28
+  - name: xe-0/0/32
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/33
+    type: 10gbase-x-sfpp
diff --git a/device-types/Juniper/QFX5120-32C-DC-AFI.yaml b/device-types/Juniper/QFX5120-32C-DC-AFI.yaml
new file mode 100644
index 00000000..1b50cc28
--- /dev/null
+++ b/device-types/Juniper/QFX5120-32C-DC-AFI.yaml
@@ -0,0 +1,91 @@
+---
+manufacturer: Juniper
+model: QFX5120-32C-DC-AFI
+slug: juniper-qfx5120-32c-dc-afi
+part_number: QFX5120-32C-DC-AFI
+u_height: 1
+weight: 21.12
+weight_unit: lb
+airflow: rear-to-front
+is_full_depth: true
+comments: '[Juniper QFX5120 Data Sheet](https://www.juniper.net/content/dam/www/assets/datasheets/us/en/switches/qfx5120-ethernet-switch-datasheet.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: PSU 0
+    position: '0'
+  - name: PSU 1
+    position: '1'
+interfaces:
+  - name: fxp0
+    type: 1000base-t
+    mgmt_only: true
+  - name: et-0/0/0
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/1
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/2
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/3
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/4
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/5
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/6
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/7
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/8
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/9
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/10
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/11
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/12
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/13
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/14
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/15
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/16
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/17
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/18
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/19
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/20
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/21
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/22
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/23
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/24
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/25
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/26
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/27
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/28
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/29
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/30
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/31
+    type: 100gbase-x-qsfp28
+  - name: xe-0/0/32
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/33
+    type: 10gbase-x-sfpp
diff --git a/device-types/Juniper/QFX5120-32C-DC-AFO.yaml b/device-types/Juniper/QFX5120-32C-DC-AFO.yaml
new file mode 100644
index 00000000..48b6b75f
--- /dev/null
+++ b/device-types/Juniper/QFX5120-32C-DC-AFO.yaml
@@ -0,0 +1,91 @@
+---
+manufacturer: Juniper
+model: QFX5120-32C-DC-AFO
+slug: juniper-qfx5120-32c-dc-afo
+part_number: QFX5120-32C-DC-AFO
+u_height: 1
+weight: 21.12
+weight_unit: lb
+airflow: front-to-rear
+is_full_depth: true
+comments: '[Juniper QFX5120 Data Sheet](https://www.juniper.net/content/dam/www/assets/datasheets/us/en/switches/qfx5120-ethernet-switch-datasheet.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: PSU 0
+    position: '0'
+  - name: PSU 1
+    position: '1'
+interfaces:
+  - name: fxp0
+    type: 1000base-t
+    mgmt_only: true
+  - name: et-0/0/0
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/1
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/2
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/3
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/4
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/5
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/6
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/7
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/8
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/9
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/10
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/11
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/12
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/13
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/14
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/15
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/16
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/17
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/18
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/19
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/20
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/21
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/22
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/23
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/24
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/25
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/26
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/27
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/28
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/29
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/30
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/31
+    type: 100gbase-x-qsfp28
+  - name: xe-0/0/32
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/33
+    type: 10gbase-x-sfpp
diff --git a/device-types/Juniper/QFX5120-48T.yaml b/device-types/Juniper/QFX5120-48T-AFI.yaml
similarity index 85%
rename from device-types/Juniper/QFX5120-48T.yaml
rename to device-types/Juniper/QFX5120-48T-AFI.yaml
index c0c1543a..31da3aae 100644
--- a/device-types/Juniper/QFX5120-48T.yaml
+++ b/device-types/Juniper/QFX5120-48T-AFI.yaml
@@ -1,9 +1,22 @@
 ---
 manufacturer: Juniper
-model: QFX5120-48T
-slug: juniper-qfx5120-48t
-comments: '[Juniper QFX5200 Data Sheet](https://www.juniper.net/us/en/products-services/switching/qfx-series/qfx5120/)'
+model: QFX5120-48T-AFI
+slug: juniper-qfx5120-48t-afi
+part_number: QFX5120-48T-AFI
 u_height: 1
+weight: 24.25
+weight_unit: lb
+airflow: rear-to-front
+is_full_depth: true
+comments: '[Juniper QFX5120 Data Sheet](https://www.juniper.net/content/dam/www/assets/datasheets/us/en/switches/qfx5120-ethernet-switch-datasheet.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: PSU 0
+    position: '0'
+  - name: PSU 1
+    position: '1'
 interfaces:
   - name: fxp0
     type: 1000base-t
@@ -116,13 +129,3 @@ interfaces:
     type: 100gbase-x-qsfp28
   - name: et-0/0/53
     type: 100gbase-x-qsfp28
-power-ports:
-  - name: PSU0
-    type: iec-60320-c14
-    maximum_draw: 650
-  - name: PSU1
-    type: iec-60320-c14
-    maximum_draw: 650
-console-ports:
-  - name: Console
-    type: rj-45
diff --git a/device-types/Juniper/QFX5120-48T-AFO.yaml b/device-types/Juniper/QFX5120-48T-AFO.yaml
new file mode 100644
index 00000000..46fcc2e9
--- /dev/null
+++ b/device-types/Juniper/QFX5120-48T-AFO.yaml
@@ -0,0 +1,131 @@
+---
+manufacturer: Juniper
+model: QFX5120-48T-AFO
+slug: juniper-qfx5120-48t-afo
+part_number: QFX5120-48T-AFO
+u_height: 1
+weight: 24.25
+weight_unit: lb
+airflow: front-to-rear
+is_full_depth: true
+comments: '[Juniper QFX5120 Data Sheet](https://www.juniper.net/content/dam/www/assets/datasheets/us/en/switches/qfx5120-ethernet-switch-datasheet.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: PSU 0
+    position: '0'
+  - name: PSU 1
+    position: '1'
+interfaces:
+  - name: fxp0
+    type: 1000base-t
+    mgmt_only: true
+  - name: xe-0/0/0
+    type: 10gbase-t
+  - name: xe-0/0/1
+    type: 10gbase-t
+  - name: xe-0/0/2
+    type: 10gbase-t
+  - name: xe-0/0/3
+    type: 10gbase-t
+  - name: xe-0/0/4
+    type: 10gbase-t
+  - name: xe-0/0/5
+    type: 10gbase-t
+  - name: xe-0/0/6
+    type: 10gbase-t
+  - name: xe-0/0/7
+    type: 10gbase-t
+  - name: xe-0/0/8
+    type: 10gbase-t
+  - name: xe-0/0/9
+    type: 10gbase-t
+  - name: xe-0/0/10
+    type: 10gbase-t
+  - name: xe-0/0/11
+    type: 10gbase-t
+  - name: xe-0/0/12
+    type: 10gbase-t
+  - name: xe-0/0/13
+    type: 10gbase-t
+  - name: xe-0/0/14
+    type: 10gbase-t
+  - name: xe-0/0/15
+    type: 10gbase-t
+  - name: xe-0/0/16
+    type: 10gbase-t
+  - name: xe-0/0/17
+    type: 10gbase-t
+  - name: xe-0/0/18
+    type: 10gbase-t
+  - name: xe-0/0/19
+    type: 10gbase-t
+  - name: xe-0/0/20
+    type: 10gbase-t
+  - name: xe-0/0/21
+    type: 10gbase-t
+  - name: xe-0/0/22
+    type: 10gbase-t
+  - name: xe-0/0/23
+    type: 10gbase-t
+  - name: xe-0/0/24
+    type: 10gbase-t
+  - name: xe-0/0/25
+    type: 10gbase-t
+  - name: xe-0/0/26
+    type: 10gbase-t
+  - name: xe-0/0/27
+    type: 10gbase-t
+  - name: xe-0/0/28
+    type: 10gbase-t
+  - name: xe-0/0/29
+    type: 10gbase-t
+  - name: xe-0/0/30
+    type: 10gbase-t
+  - name: xe-0/0/31
+    type: 10gbase-t
+  - name: xe-0/0/32
+    type: 10gbase-t
+  - name: xe-0/0/33
+    type: 10gbase-t
+  - name: xe-0/0/34
+    type: 10gbase-t
+  - name: xe-0/0/35
+    type: 10gbase-t
+  - name: xe-0/0/36
+    type: 10gbase-t
+  - name: xe-0/0/37
+    type: 10gbase-t
+  - name: xe-0/0/38
+    type: 10gbase-t
+  - name: xe-0/0/39
+    type: 10gbase-t
+  - name: xe-0/0/40
+    type: 10gbase-t
+  - name: xe-0/0/41
+    type: 10gbase-t
+  - name: xe-0/0/42
+    type: 10gbase-t
+  - name: xe-0/0/43
+    type: 10gbase-t
+  - name: xe-0/0/44
+    type: 10gbase-t
+  - name: xe-0/0/45
+    type: 10gbase-t
+  - name: xe-0/0/46
+    type: 10gbase-t
+  - name: xe-0/0/47
+    type: 10gbase-t
+  - name: et-0/0/48
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/49
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/50
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/51
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/52
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/53
+    type: 100gbase-x-qsfp28
diff --git a/device-types/Juniper/QFX5120-48T-DC-AFI.yaml b/device-types/Juniper/QFX5120-48T-DC-AFI.yaml
new file mode 100644
index 00000000..e5d4ff75
--- /dev/null
+++ b/device-types/Juniper/QFX5120-48T-DC-AFI.yaml
@@ -0,0 +1,131 @@
+---
+manufacturer: Juniper
+model: QFX5120-48T-DC-AFI
+slug: juniper-qfx5120-48t-dc-afi
+part_number: QFX5120-48T-DC-AFI
+u_height: 1
+weight: 24.25
+weight_unit: lb
+airflow: rear-to-front
+is_full_depth: true
+comments: '[Juniper QFX5120 Data Sheet](https://www.juniper.net/content/dam/www/assets/datasheets/us/en/switches/qfx5120-ethernet-switch-datasheet.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: PSU 0
+    position: '0'
+  - name: PSU 1
+    position: '1'
+interfaces:
+  - name: fxp0
+    type: 1000base-t
+    mgmt_only: true
+  - name: xe-0/0/0
+    type: 10gbase-t
+  - name: xe-0/0/1
+    type: 10gbase-t
+  - name: xe-0/0/2
+    type: 10gbase-t
+  - name: xe-0/0/3
+    type: 10gbase-t
+  - name: xe-0/0/4
+    type: 10gbase-t
+  - name: xe-0/0/5
+    type: 10gbase-t
+  - name: xe-0/0/6
+    type: 10gbase-t
+  - name: xe-0/0/7
+    type: 10gbase-t
+  - name: xe-0/0/8
+    type: 10gbase-t
+  - name: xe-0/0/9
+    type: 10gbase-t
+  - name: xe-0/0/10
+    type: 10gbase-t
+  - name: xe-0/0/11
+    type: 10gbase-t
+  - name: xe-0/0/12
+    type: 10gbase-t
+  - name: xe-0/0/13
+    type: 10gbase-t
+  - name: xe-0/0/14
+    type: 10gbase-t
+  - name: xe-0/0/15
+    type: 10gbase-t
+  - name: xe-0/0/16
+    type: 10gbase-t
+  - name: xe-0/0/17
+    type: 10gbase-t
+  - name: xe-0/0/18
+    type: 10gbase-t
+  - name: xe-0/0/19
+    type: 10gbase-t
+  - name: xe-0/0/20
+    type: 10gbase-t
+  - name: xe-0/0/21
+    type: 10gbase-t
+  - name: xe-0/0/22
+    type: 10gbase-t
+  - name: xe-0/0/23
+    type: 10gbase-t
+  - name: xe-0/0/24
+    type: 10gbase-t
+  - name: xe-0/0/25
+    type: 10gbase-t
+  - name: xe-0/0/26
+    type: 10gbase-t
+  - name: xe-0/0/27
+    type: 10gbase-t
+  - name: xe-0/0/28
+    type: 10gbase-t
+  - name: xe-0/0/29
+    type: 10gbase-t
+  - name: xe-0/0/30
+    type: 10gbase-t
+  - name: xe-0/0/31
+    type: 10gbase-t
+  - name: xe-0/0/32
+    type: 10gbase-t
+  - name: xe-0/0/33
+    type: 10gbase-t
+  - name: xe-0/0/34
+    type: 10gbase-t
+  - name: xe-0/0/35
+    type: 10gbase-t
+  - name: xe-0/0/36
+    type: 10gbase-t
+  - name: xe-0/0/37
+    type: 10gbase-t
+  - name: xe-0/0/38
+    type: 10gbase-t
+  - name: xe-0/0/39
+    type: 10gbase-t
+  - name: xe-0/0/40
+    type: 10gbase-t
+  - name: xe-0/0/41
+    type: 10gbase-t
+  - name: xe-0/0/42
+    type: 10gbase-t
+  - name: xe-0/0/43
+    type: 10gbase-t
+  - name: xe-0/0/44
+    type: 10gbase-t
+  - name: xe-0/0/45
+    type: 10gbase-t
+  - name: xe-0/0/46
+    type: 10gbase-t
+  - name: xe-0/0/47
+    type: 10gbase-t
+  - name: et-0/0/48
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/49
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/50
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/51
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/52
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/53
+    type: 100gbase-x-qsfp28
diff --git a/device-types/Juniper/QFX5120-48T-DC-AFO.yaml b/device-types/Juniper/QFX5120-48T-DC-AFO.yaml
new file mode 100644
index 00000000..9e2143f6
--- /dev/null
+++ b/device-types/Juniper/QFX5120-48T-DC-AFO.yaml
@@ -0,0 +1,131 @@
+---
+manufacturer: Juniper
+model: QFX5120-48T-DC-AFO
+slug: juniper-qfx5120-48t-dc-afo
+part_number: QFX5120-48T-DC-AFO
+u_height: 1
+weight: 24.25
+weight_unit: lb
+airflow: front-to-rear
+is_full_depth: true
+comments: '[Juniper QFX5120 Data Sheet](https://www.juniper.net/content/dam/www/assets/datasheets/us/en/switches/qfx5120-ethernet-switch-datasheet.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: PSU 0
+    position: '0'
+  - name: PSU 1
+    position: '1'
+interfaces:
+  - name: fxp0
+    type: 1000base-t
+    mgmt_only: true
+  - name: xe-0/0/0
+    type: 10gbase-t
+  - name: xe-0/0/1
+    type: 10gbase-t
+  - name: xe-0/0/2
+    type: 10gbase-t
+  - name: xe-0/0/3
+    type: 10gbase-t
+  - name: xe-0/0/4
+    type: 10gbase-t
+  - name: xe-0/0/5
+    type: 10gbase-t
+  - name: xe-0/0/6
+    type: 10gbase-t
+  - name: xe-0/0/7
+    type: 10gbase-t
+  - name: xe-0/0/8
+    type: 10gbase-t
+  - name: xe-0/0/9
+    type: 10gbase-t
+  - name: xe-0/0/10
+    type: 10gbase-t
+  - name: xe-0/0/11
+    type: 10gbase-t
+  - name: xe-0/0/12
+    type: 10gbase-t
+  - name: xe-0/0/13
+    type: 10gbase-t
+  - name: xe-0/0/14
+    type: 10gbase-t
+  - name: xe-0/0/15
+    type: 10gbase-t
+  - name: xe-0/0/16
+    type: 10gbase-t
+  - name: xe-0/0/17
+    type: 10gbase-t
+  - name: xe-0/0/18
+    type: 10gbase-t
+  - name: xe-0/0/19
+    type: 10gbase-t
+  - name: xe-0/0/20
+    type: 10gbase-t
+  - name: xe-0/0/21
+    type: 10gbase-t
+  - name: xe-0/0/22
+    type: 10gbase-t
+  - name: xe-0/0/23
+    type: 10gbase-t
+  - name: xe-0/0/24
+    type: 10gbase-t
+  - name: xe-0/0/25
+    type: 10gbase-t
+  - name: xe-0/0/26
+    type: 10gbase-t
+  - name: xe-0/0/27
+    type: 10gbase-t
+  - name: xe-0/0/28
+    type: 10gbase-t
+  - name: xe-0/0/29
+    type: 10gbase-t
+  - name: xe-0/0/30
+    type: 10gbase-t
+  - name: xe-0/0/31
+    type: 10gbase-t
+  - name: xe-0/0/32
+    type: 10gbase-t
+  - name: xe-0/0/33
+    type: 10gbase-t
+  - name: xe-0/0/34
+    type: 10gbase-t
+  - name: xe-0/0/35
+    type: 10gbase-t
+  - name: xe-0/0/36
+    type: 10gbase-t
+  - name: xe-0/0/37
+    type: 10gbase-t
+  - name: xe-0/0/38
+    type: 10gbase-t
+  - name: xe-0/0/39
+    type: 10gbase-t
+  - name: xe-0/0/40
+    type: 10gbase-t
+  - name: xe-0/0/41
+    type: 10gbase-t
+  - name: xe-0/0/42
+    type: 10gbase-t
+  - name: xe-0/0/43
+    type: 10gbase-t
+  - name: xe-0/0/44
+    type: 10gbase-t
+  - name: xe-0/0/45
+    type: 10gbase-t
+  - name: xe-0/0/46
+    type: 10gbase-t
+  - name: xe-0/0/47
+    type: 10gbase-t
+  - name: et-0/0/48
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/49
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/50
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/51
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/52
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/53
+    type: 100gbase-x-qsfp28
diff --git a/device-types/Juniper/QFX5120-48Y.yaml b/device-types/Juniper/QFX5120-48Y-AFI2.yaml
similarity index 87%
rename from device-types/Juniper/QFX5120-48Y.yaml
rename to device-types/Juniper/QFX5120-48Y-AFI2.yaml
index 44b0d4b5..88dd38c7 100644
--- a/device-types/Juniper/QFX5120-48Y.yaml
+++ b/device-types/Juniper/QFX5120-48Y-AFI2.yaml
@@ -1,9 +1,22 @@
 ---
 manufacturer: Juniper
-model: QFX5120-48Y
-slug: juniper-qfx5120-48y
-comments: '[Juniper QFX5200 Data Sheet](https://www.juniper.net/us/en/products-services/switching/qfx-series/qfx5120/)'
+model: QFX5120-48Y-AFI2
+slug: juniper-qfx5120-48y-afi2
+part_number: QFX5120-48Y-AFI2
 u_height: 1
+weight: 23.7
+weight_unit: lb
+airflow: rear-to-front
+is_full_depth: true
+comments: '[Juniper QFX5120 Data Sheet](https://www.juniper.net/content/dam/www/assets/datasheets/us/en/switches/qfx5120-ethernet-switch-datasheet.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: PSU 0
+    position: '0'
+  - name: PSU 1
+    position: '1'
 interfaces:
   - name: fxp0
     type: 1000base-t
@@ -120,13 +133,3 @@ interfaces:
     type: 100gbase-x-qsfp28
   - name: et-0/0/55
     type: 100gbase-x-qsfp28
-power-ports:
-  - name: PSU0
-    type: iec-60320-c14
-    maximum_draw: 650
-  - name: PSU1
-    type: iec-60320-c14
-    maximum_draw: 650
-console-ports:
-  - name: Console
-    type: rj-45
diff --git a/device-types/Juniper/QFX5120-48Y-AFO2.yaml b/device-types/Juniper/QFX5120-48Y-AFO2.yaml
new file mode 100644
index 00000000..45f9c592
--- /dev/null
+++ b/device-types/Juniper/QFX5120-48Y-AFO2.yaml
@@ -0,0 +1,135 @@
+---
+manufacturer: Juniper
+model: QFX5120-48Y-AFO2
+slug: juniper-qfx5120-48y-afo2
+part_number: QFX5120-48Y-AFO2
+u_height: 1
+weight: 23.7
+weight_unit: lb
+airflow: front-to-rear
+is_full_depth: true
+comments: '[Juniper QFX5120 Data Sheet](https://www.juniper.net/content/dam/www/assets/datasheets/us/en/switches/qfx5120-ethernet-switch-datasheet.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: PSU 0
+    position: '0'
+  - name: PSU 1
+    position: '1'
+interfaces:
+  - name: fxp0
+    type: 1000base-t
+    mgmt_only: true
+  - name: et-0/0/0
+    type: 25gbase-x-sfp28
+  - name: et-0/0/1
+    type: 25gbase-x-sfp28
+  - name: et-0/0/2
+    type: 25gbase-x-sfp28
+  - name: et-0/0/3
+    type: 25gbase-x-sfp28
+  - name: et-0/0/4
+    type: 25gbase-x-sfp28
+  - name: et-0/0/5
+    type: 25gbase-x-sfp28
+  - name: et-0/0/6
+    type: 25gbase-x-sfp28
+  - name: et-0/0/7
+    type: 25gbase-x-sfp28
+  - name: et-0/0/8
+    type: 25gbase-x-sfp28
+  - name: et-0/0/9
+    type: 25gbase-x-sfp28
+  - name: et-0/0/10
+    type: 25gbase-x-sfp28
+  - name: et-0/0/11
+    type: 25gbase-x-sfp28
+  - name: et-0/0/12
+    type: 25gbase-x-sfp28
+  - name: et-0/0/13
+    type: 25gbase-x-sfp28
+  - name: et-0/0/14
+    type: 25gbase-x-sfp28
+  - name: et-0/0/15
+    type: 25gbase-x-sfp28
+  - name: et-0/0/16
+    type: 25gbase-x-sfp28
+  - name: et-0/0/17
+    type: 25gbase-x-sfp28
+  - name: et-0/0/18
+    type: 25gbase-x-sfp28
+  - name: et-0/0/19
+    type: 25gbase-x-sfp28
+  - name: et-0/0/20
+    type: 25gbase-x-sfp28
+  - name: et-0/0/21
+    type: 25gbase-x-sfp28
+  - name: et-0/0/22
+    type: 25gbase-x-sfp28
+  - name: et-0/0/23
+    type: 25gbase-x-sfp28
+  - name: et-0/0/24
+    type: 25gbase-x-sfp28
+  - name: et-0/0/25
+    type: 25gbase-x-sfp28
+  - name: et-0/0/26
+    type: 25gbase-x-sfp28
+  - name: et-0/0/27
+    type: 25gbase-x-sfp28
+  - name: et-0/0/28
+    type: 25gbase-x-sfp28
+  - name: et-0/0/29
+    type: 25gbase-x-sfp28
+  - name: et-0/0/30
+    type: 25gbase-x-sfp28
+  - name: et-0/0/31
+    type: 25gbase-x-sfp28
+  - name: et-0/0/32
+    type: 25gbase-x-sfp28
+  - name: et-0/0/33
+    type: 25gbase-x-sfp28
+  - name: et-0/0/34
+    type: 25gbase-x-sfp28
+  - name: et-0/0/35
+    type: 25gbase-x-sfp28
+  - name: et-0/0/36
+    type: 25gbase-x-sfp28
+  - name: et-0/0/37
+    type: 25gbase-x-sfp28
+  - name: et-0/0/38
+    type: 25gbase-x-sfp28
+  - name: et-0/0/39
+    type: 25gbase-x-sfp28
+  - name: et-0/0/40
+    type: 25gbase-x-sfp28
+  - name: et-0/0/41
+    type: 25gbase-x-sfp28
+  - name: et-0/0/42
+    type: 25gbase-x-sfp28
+  - name: et-0/0/43
+    type: 25gbase-x-sfp28
+  - name: et-0/0/44
+    type: 25gbase-x-sfp28
+  - name: et-0/0/45
+    type: 25gbase-x-sfp28
+  - name: et-0/0/46
+    type: 25gbase-x-sfp28
+  - name: et-0/0/47
+    type: 25gbase-x-sfp28
+  - name: et-0/0/48
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/49
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/50
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/51
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/52
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/53
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/54
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/55
+    type: 100gbase-x-qsfp28
diff --git a/device-types/Juniper/QFX5120-48Y-DC-AFI2.yaml b/device-types/Juniper/QFX5120-48Y-DC-AFI2.yaml
new file mode 100644
index 00000000..2ccc7d2a
--- /dev/null
+++ b/device-types/Juniper/QFX5120-48Y-DC-AFI2.yaml
@@ -0,0 +1,135 @@
+---
+manufacturer: Juniper
+model: QFX5120-48Y-DC-AFI2
+slug: juniper-qfx5120-48y-dc-afi2
+part_number: QFX5120-48Y-DC-AFI2
+u_height: 1
+weight: 23.7
+weight_unit: lb
+airflow: rear-to-front
+is_full_depth: true
+comments: '[Juniper QFX5120 Data Sheet](https://www.juniper.net/content/dam/www/assets/datasheets/us/en/switches/qfx5120-ethernet-switch-datasheet.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: PSU 0
+    position: '0'
+  - name: PSU 1
+    position: '1'
+interfaces:
+  - name: fxp0
+    type: 1000base-t
+    mgmt_only: true
+  - name: et-0/0/0
+    type: 25gbase-x-sfp28
+  - name: et-0/0/1
+    type: 25gbase-x-sfp28
+  - name: et-0/0/2
+    type: 25gbase-x-sfp28
+  - name: et-0/0/3
+    type: 25gbase-x-sfp28
+  - name: et-0/0/4
+    type: 25gbase-x-sfp28
+  - name: et-0/0/5
+    type: 25gbase-x-sfp28
+  - name: et-0/0/6
+    type: 25gbase-x-sfp28
+  - name: et-0/0/7
+    type: 25gbase-x-sfp28
+  - name: et-0/0/8
+    type: 25gbase-x-sfp28
+  - name: et-0/0/9
+    type: 25gbase-x-sfp28
+  - name: et-0/0/10
+    type: 25gbase-x-sfp28
+  - name: et-0/0/11
+    type: 25gbase-x-sfp28
+  - name: et-0/0/12
+    type: 25gbase-x-sfp28
+  - name: et-0/0/13
+    type: 25gbase-x-sfp28
+  - name: et-0/0/14
+    type: 25gbase-x-sfp28
+  - name: et-0/0/15
+    type: 25gbase-x-sfp28
+  - name: et-0/0/16
+    type: 25gbase-x-sfp28
+  - name: et-0/0/17
+    type: 25gbase-x-sfp28
+  - name: et-0/0/18
+    type: 25gbase-x-sfp28
+  - name: et-0/0/19
+    type: 25gbase-x-sfp28
+  - name: et-0/0/20
+    type: 25gbase-x-sfp28
+  - name: et-0/0/21
+    type: 25gbase-x-sfp28
+  - name: et-0/0/22
+    type: 25gbase-x-sfp28
+  - name: et-0/0/23
+    type: 25gbase-x-sfp28
+  - name: et-0/0/24
+    type: 25gbase-x-sfp28
+  - name: et-0/0/25
+    type: 25gbase-x-sfp28
+  - name: et-0/0/26
+    type: 25gbase-x-sfp28
+  - name: et-0/0/27
+    type: 25gbase-x-sfp28
+  - name: et-0/0/28
+    type: 25gbase-x-sfp28
+  - name: et-0/0/29
+    type: 25gbase-x-sfp28
+  - name: et-0/0/30
+    type: 25gbase-x-sfp28
+  - name: et-0/0/31
+    type: 25gbase-x-sfp28
+  - name: et-0/0/32
+    type: 25gbase-x-sfp28
+  - name: et-0/0/33
+    type: 25gbase-x-sfp28
+  - name: et-0/0/34
+    type: 25gbase-x-sfp28
+  - name: et-0/0/35
+    type: 25gbase-x-sfp28
+  - name: et-0/0/36
+    type: 25gbase-x-sfp28
+  - name: et-0/0/37
+    type: 25gbase-x-sfp28
+  - name: et-0/0/38
+    type: 25gbase-x-sfp28
+  - name: et-0/0/39
+    type: 25gbase-x-sfp28
+  - name: et-0/0/40
+    type: 25gbase-x-sfp28
+  - name: et-0/0/41
+    type: 25gbase-x-sfp28
+  - name: et-0/0/42
+    type: 25gbase-x-sfp28
+  - name: et-0/0/43
+    type: 25gbase-x-sfp28
+  - name: et-0/0/44
+    type: 25gbase-x-sfp28
+  - name: et-0/0/45
+    type: 25gbase-x-sfp28
+  - name: et-0/0/46
+    type: 25gbase-x-sfp28
+  - name: et-0/0/47
+    type: 25gbase-x-sfp28
+  - name: et-0/0/48
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/49
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/50
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/51
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/52
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/53
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/54
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/55
+    type: 100gbase-x-qsfp28
diff --git a/device-types/Juniper/QFX5120-48Y-DC-AFO2.yaml b/device-types/Juniper/QFX5120-48Y-DC-AFO2.yaml
new file mode 100644
index 00000000..ba23427a
--- /dev/null
+++ b/device-types/Juniper/QFX5120-48Y-DC-AFO2.yaml
@@ -0,0 +1,135 @@
+---
+manufacturer: Juniper
+model: QFX5120-48Y-DC-AFO2
+slug: juniper-qfx5120-48y-dc-afo2
+part_number: QFX5120-48Y-DC-AFO2
+u_height: 1
+weight: 23.7
+weight_unit: lb
+airflow: front-to-rear
+is_full_depth: true
+comments: '[Juniper QFX5120 Data Sheet](https://www.juniper.net/content/dam/www/assets/datasheets/us/en/switches/qfx5120-ethernet-switch-datasheet.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: PSU 0
+    position: '0'
+  - name: PSU 1
+    position: '1'
+interfaces:
+  - name: fxp0
+    type: 1000base-t
+    mgmt_only: true
+  - name: et-0/0/0
+    type: 25gbase-x-sfp28
+  - name: et-0/0/1
+    type: 25gbase-x-sfp28
+  - name: et-0/0/2
+    type: 25gbase-x-sfp28
+  - name: et-0/0/3
+    type: 25gbase-x-sfp28
+  - name: et-0/0/4
+    type: 25gbase-x-sfp28
+  - name: et-0/0/5
+    type: 25gbase-x-sfp28
+  - name: et-0/0/6
+    type: 25gbase-x-sfp28
+  - name: et-0/0/7
+    type: 25gbase-x-sfp28
+  - name: et-0/0/8
+    type: 25gbase-x-sfp28
+  - name: et-0/0/9
+    type: 25gbase-x-sfp28
+  - name: et-0/0/10
+    type: 25gbase-x-sfp28
+  - name: et-0/0/11
+    type: 25gbase-x-sfp28
+  - name: et-0/0/12
+    type: 25gbase-x-sfp28
+  - name: et-0/0/13
+    type: 25gbase-x-sfp28
+  - name: et-0/0/14
+    type: 25gbase-x-sfp28
+  - name: et-0/0/15
+    type: 25gbase-x-sfp28
+  - name: et-0/0/16
+    type: 25gbase-x-sfp28
+  - name: et-0/0/17
+    type: 25gbase-x-sfp28
+  - name: et-0/0/18
+    type: 25gbase-x-sfp28
+  - name: et-0/0/19
+    type: 25gbase-x-sfp28
+  - name: et-0/0/20
+    type: 25gbase-x-sfp28
+  - name: et-0/0/21
+    type: 25gbase-x-sfp28
+  - name: et-0/0/22
+    type: 25gbase-x-sfp28
+  - name: et-0/0/23
+    type: 25gbase-x-sfp28
+  - name: et-0/0/24
+    type: 25gbase-x-sfp28
+  - name: et-0/0/25
+    type: 25gbase-x-sfp28
+  - name: et-0/0/26
+    type: 25gbase-x-sfp28
+  - name: et-0/0/27
+    type: 25gbase-x-sfp28
+  - name: et-0/0/28
+    type: 25gbase-x-sfp28
+  - name: et-0/0/29
+    type: 25gbase-x-sfp28
+  - name: et-0/0/30
+    type: 25gbase-x-sfp28
+  - name: et-0/0/31
+    type: 25gbase-x-sfp28
+  - name: et-0/0/32
+    type: 25gbase-x-sfp28
+  - name: et-0/0/33
+    type: 25gbase-x-sfp28
+  - name: et-0/0/34
+    type: 25gbase-x-sfp28
+  - name: et-0/0/35
+    type: 25gbase-x-sfp28
+  - name: et-0/0/36
+    type: 25gbase-x-sfp28
+  - name: et-0/0/37
+    type: 25gbase-x-sfp28
+  - name: et-0/0/38
+    type: 25gbase-x-sfp28
+  - name: et-0/0/39
+    type: 25gbase-x-sfp28
+  - name: et-0/0/40
+    type: 25gbase-x-sfp28
+  - name: et-0/0/41
+    type: 25gbase-x-sfp28
+  - name: et-0/0/42
+    type: 25gbase-x-sfp28
+  - name: et-0/0/43
+    type: 25gbase-x-sfp28
+  - name: et-0/0/44
+    type: 25gbase-x-sfp28
+  - name: et-0/0/45
+    type: 25gbase-x-sfp28
+  - name: et-0/0/46
+    type: 25gbase-x-sfp28
+  - name: et-0/0/47
+    type: 25gbase-x-sfp28
+  - name: et-0/0/48
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/49
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/50
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/51
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/52
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/53
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/54
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/55
+    type: 100gbase-x-qsfp28
diff --git a/device-types/Juniper/QFX5120-48YM-AFI.yaml b/device-types/Juniper/QFX5120-48YM-AFI.yaml
new file mode 100644
index 00000000..d45772f9
--- /dev/null
+++ b/device-types/Juniper/QFX5120-48YM-AFI.yaml
@@ -0,0 +1,135 @@
+---
+manufacturer: Juniper
+model: QFX5120-48YM-AFI
+slug: juniper-qfx5120-48ym-afi
+part_number: QFX5120-48YM-AFI
+u_height: 1
+weight: 24.8
+weight_unit: lb
+airflow: rear-to-front
+is_full_depth: true
+comments: '[Juniper QFX5120 Data Sheet](https://www.juniper.net/content/dam/www/assets/datasheets/us/en/switches/qfx5120-ethernet-switch-datasheet.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: PSU 0
+    position: '0'
+  - name: PSU 1
+    position: '1'
+interfaces:
+  - name: fxp0
+    type: 1000base-t
+    mgmt_only: true
+  - name: et-0/0/0
+    type: 25gbase-x-sfp28
+  - name: et-0/0/1
+    type: 25gbase-x-sfp28
+  - name: et-0/0/2
+    type: 25gbase-x-sfp28
+  - name: et-0/0/3
+    type: 25gbase-x-sfp28
+  - name: et-0/0/4
+    type: 25gbase-x-sfp28
+  - name: et-0/0/5
+    type: 25gbase-x-sfp28
+  - name: et-0/0/6
+    type: 25gbase-x-sfp28
+  - name: et-0/0/7
+    type: 25gbase-x-sfp28
+  - name: et-0/0/8
+    type: 25gbase-x-sfp28
+  - name: et-0/0/9
+    type: 25gbase-x-sfp28
+  - name: et-0/0/10
+    type: 25gbase-x-sfp28
+  - name: et-0/0/11
+    type: 25gbase-x-sfp28
+  - name: et-0/0/12
+    type: 25gbase-x-sfp28
+  - name: et-0/0/13
+    type: 25gbase-x-sfp28
+  - name: et-0/0/14
+    type: 25gbase-x-sfp28
+  - name: et-0/0/15
+    type: 25gbase-x-sfp28
+  - name: et-0/0/16
+    type: 25gbase-x-sfp28
+  - name: et-0/0/17
+    type: 25gbase-x-sfp28
+  - name: et-0/0/18
+    type: 25gbase-x-sfp28
+  - name: et-0/0/19
+    type: 25gbase-x-sfp28
+  - name: et-0/0/20
+    type: 25gbase-x-sfp28
+  - name: et-0/0/21
+    type: 25gbase-x-sfp28
+  - name: et-0/0/22
+    type: 25gbase-x-sfp28
+  - name: et-0/0/23
+    type: 25gbase-x-sfp28
+  - name: et-0/0/24
+    type: 25gbase-x-sfp28
+  - name: et-0/0/25
+    type: 25gbase-x-sfp28
+  - name: et-0/0/26
+    type: 25gbase-x-sfp28
+  - name: et-0/0/27
+    type: 25gbase-x-sfp28
+  - name: et-0/0/28
+    type: 25gbase-x-sfp28
+  - name: et-0/0/29
+    type: 25gbase-x-sfp28
+  - name: et-0/0/30
+    type: 25gbase-x-sfp28
+  - name: et-0/0/31
+    type: 25gbase-x-sfp28
+  - name: et-0/0/32
+    type: 25gbase-x-sfp28
+  - name: et-0/0/33
+    type: 25gbase-x-sfp28
+  - name: et-0/0/34
+    type: 25gbase-x-sfp28
+  - name: et-0/0/35
+    type: 25gbase-x-sfp28
+  - name: et-0/0/36
+    type: 25gbase-x-sfp28
+  - name: et-0/0/37
+    type: 25gbase-x-sfp28
+  - name: et-0/0/38
+    type: 25gbase-x-sfp28
+  - name: et-0/0/39
+    type: 25gbase-x-sfp28
+  - name: et-0/0/40
+    type: 25gbase-x-sfp28
+  - name: et-0/0/41
+    type: 25gbase-x-sfp28
+  - name: et-0/0/42
+    type: 25gbase-x-sfp28
+  - name: et-0/0/43
+    type: 25gbase-x-sfp28
+  - name: et-0/0/44
+    type: 25gbase-x-sfp28
+  - name: et-0/0/45
+    type: 25gbase-x-sfp28
+  - name: et-0/0/46
+    type: 25gbase-x-sfp28
+  - name: et-0/0/47
+    type: 25gbase-x-sfp28
+  - name: et-0/0/48
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/49
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/50
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/51
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/52
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/53
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/54
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/55
+    type: 100gbase-x-qsfp28
diff --git a/device-types/Juniper/QFX5120-48YM-AFO.yaml b/device-types/Juniper/QFX5120-48YM-AFO.yaml
new file mode 100644
index 00000000..c9c37e98
--- /dev/null
+++ b/device-types/Juniper/QFX5120-48YM-AFO.yaml
@@ -0,0 +1,135 @@
+---
+manufacturer: Juniper
+model: QFX5120-48YM-AFO
+slug: juniper-qfx5120-48ym-afo
+part_number: QFX5120-48YM-AFO
+u_height: 1
+weight: 24.8
+weight_unit: lb
+airflow: front-to-rear
+is_full_depth: true
+comments: '[Juniper QFX5120 Data Sheet](https://www.juniper.net/content/dam/www/assets/datasheets/us/en/switches/qfx5120-ethernet-switch-datasheet.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: PSU 0
+    position: '0'
+  - name: PSU 1
+    position: '1'
+interfaces:
+  - name: fxp0
+    type: 1000base-t
+    mgmt_only: true
+  - name: et-0/0/0
+    type: 25gbase-x-sfp28
+  - name: et-0/0/1
+    type: 25gbase-x-sfp28
+  - name: et-0/0/2
+    type: 25gbase-x-sfp28
+  - name: et-0/0/3
+    type: 25gbase-x-sfp28
+  - name: et-0/0/4
+    type: 25gbase-x-sfp28
+  - name: et-0/0/5
+    type: 25gbase-x-sfp28
+  - name: et-0/0/6
+    type: 25gbase-x-sfp28
+  - name: et-0/0/7
+    type: 25gbase-x-sfp28
+  - name: et-0/0/8
+    type: 25gbase-x-sfp28
+  - name: et-0/0/9
+    type: 25gbase-x-sfp28
+  - name: et-0/0/10
+    type: 25gbase-x-sfp28
+  - name: et-0/0/11
+    type: 25gbase-x-sfp28
+  - name: et-0/0/12
+    type: 25gbase-x-sfp28
+  - name: et-0/0/13
+    type: 25gbase-x-sfp28
+  - name: et-0/0/14
+    type: 25gbase-x-sfp28
+  - name: et-0/0/15
+    type: 25gbase-x-sfp28
+  - name: et-0/0/16
+    type: 25gbase-x-sfp28
+  - name: et-0/0/17
+    type: 25gbase-x-sfp28
+  - name: et-0/0/18
+    type: 25gbase-x-sfp28
+  - name: et-0/0/19
+    type: 25gbase-x-sfp28
+  - name: et-0/0/20
+    type: 25gbase-x-sfp28
+  - name: et-0/0/21
+    type: 25gbase-x-sfp28
+  - name: et-0/0/22
+    type: 25gbase-x-sfp28
+  - name: et-0/0/23
+    type: 25gbase-x-sfp28
+  - name: et-0/0/24
+    type: 25gbase-x-sfp28
+  - name: et-0/0/25
+    type: 25gbase-x-sfp28
+  - name: et-0/0/26
+    type: 25gbase-x-sfp28
+  - name: et-0/0/27
+    type: 25gbase-x-sfp28
+  - name: et-0/0/28
+    type: 25gbase-x-sfp28
+  - name: et-0/0/29
+    type: 25gbase-x-sfp28
+  - name: et-0/0/30
+    type: 25gbase-x-sfp28
+  - name: et-0/0/31
+    type: 25gbase-x-sfp28
+  - name: et-0/0/32
+    type: 25gbase-x-sfp28
+  - name: et-0/0/33
+    type: 25gbase-x-sfp28
+  - name: et-0/0/34
+    type: 25gbase-x-sfp28
+  - name: et-0/0/35
+    type: 25gbase-x-sfp28
+  - name: et-0/0/36
+    type: 25gbase-x-sfp28
+  - name: et-0/0/37
+    type: 25gbase-x-sfp28
+  - name: et-0/0/38
+    type: 25gbase-x-sfp28
+  - name: et-0/0/39
+    type: 25gbase-x-sfp28
+  - name: et-0/0/40
+    type: 25gbase-x-sfp28
+  - name: et-0/0/41
+    type: 25gbase-x-sfp28
+  - name: et-0/0/42
+    type: 25gbase-x-sfp28
+  - name: et-0/0/43
+    type: 25gbase-x-sfp28
+  - name: et-0/0/44
+    type: 25gbase-x-sfp28
+  - name: et-0/0/45
+    type: 25gbase-x-sfp28
+  - name: et-0/0/46
+    type: 25gbase-x-sfp28
+  - name: et-0/0/47
+    type: 25gbase-x-sfp28
+  - name: et-0/0/48
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/49
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/50
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/51
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/52
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/53
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/54
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/55
+    type: 100gbase-x-qsfp28
diff --git a/device-types/Juniper/QFX5120-48YM-DC-AI.yaml b/device-types/Juniper/QFX5120-48YM-DC-AI.yaml
new file mode 100644
index 00000000..8139a4fb
--- /dev/null
+++ b/device-types/Juniper/QFX5120-48YM-DC-AI.yaml
@@ -0,0 +1,135 @@
+---
+manufacturer: Juniper
+model: QFX5120-48YM-DC-AI
+slug: juniper-qfx5120-48ym-dc-ai
+part_number: QFX5120-48YM-DC-AI
+u_height: 1
+weight: 24.8
+weight_unit: lb
+airflow: rear-to-front
+is_full_depth: true
+comments: '[Juniper QFX5120 Data Sheet](https://www.juniper.net/content/dam/www/assets/datasheets/us/en/switches/qfx5120-ethernet-switch-datasheet.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: PSU 0
+    position: '0'
+  - name: PSU 1
+    position: '1'
+interfaces:
+  - name: fxp0
+    type: 1000base-t
+    mgmt_only: true
+  - name: et-0/0/0
+    type: 25gbase-x-sfp28
+  - name: et-0/0/1
+    type: 25gbase-x-sfp28
+  - name: et-0/0/2
+    type: 25gbase-x-sfp28
+  - name: et-0/0/3
+    type: 25gbase-x-sfp28
+  - name: et-0/0/4
+    type: 25gbase-x-sfp28
+  - name: et-0/0/5
+    type: 25gbase-x-sfp28
+  - name: et-0/0/6
+    type: 25gbase-x-sfp28
+  - name: et-0/0/7
+    type: 25gbase-x-sfp28
+  - name: et-0/0/8
+    type: 25gbase-x-sfp28
+  - name: et-0/0/9
+    type: 25gbase-x-sfp28
+  - name: et-0/0/10
+    type: 25gbase-x-sfp28
+  - name: et-0/0/11
+    type: 25gbase-x-sfp28
+  - name: et-0/0/12
+    type: 25gbase-x-sfp28
+  - name: et-0/0/13
+    type: 25gbase-x-sfp28
+  - name: et-0/0/14
+    type: 25gbase-x-sfp28
+  - name: et-0/0/15
+    type: 25gbase-x-sfp28
+  - name: et-0/0/16
+    type: 25gbase-x-sfp28
+  - name: et-0/0/17
+    type: 25gbase-x-sfp28
+  - name: et-0/0/18
+    type: 25gbase-x-sfp28
+  - name: et-0/0/19
+    type: 25gbase-x-sfp28
+  - name: et-0/0/20
+    type: 25gbase-x-sfp28
+  - name: et-0/0/21
+    type: 25gbase-x-sfp28
+  - name: et-0/0/22
+    type: 25gbase-x-sfp28
+  - name: et-0/0/23
+    type: 25gbase-x-sfp28
+  - name: et-0/0/24
+    type: 25gbase-x-sfp28
+  - name: et-0/0/25
+    type: 25gbase-x-sfp28
+  - name: et-0/0/26
+    type: 25gbase-x-sfp28
+  - name: et-0/0/27
+    type: 25gbase-x-sfp28
+  - name: et-0/0/28
+    type: 25gbase-x-sfp28
+  - name: et-0/0/29
+    type: 25gbase-x-sfp28
+  - name: et-0/0/30
+    type: 25gbase-x-sfp28
+  - name: et-0/0/31
+    type: 25gbase-x-sfp28
+  - name: et-0/0/32
+    type: 25gbase-x-sfp28
+  - name: et-0/0/33
+    type: 25gbase-x-sfp28
+  - name: et-0/0/34
+    type: 25gbase-x-sfp28
+  - name: et-0/0/35
+    type: 25gbase-x-sfp28
+  - name: et-0/0/36
+    type: 25gbase-x-sfp28
+  - name: et-0/0/37
+    type: 25gbase-x-sfp28
+  - name: et-0/0/38
+    type: 25gbase-x-sfp28
+  - name: et-0/0/39
+    type: 25gbase-x-sfp28
+  - name: et-0/0/40
+    type: 25gbase-x-sfp28
+  - name: et-0/0/41
+    type: 25gbase-x-sfp28
+  - name: et-0/0/42
+    type: 25gbase-x-sfp28
+  - name: et-0/0/43
+    type: 25gbase-x-sfp28
+  - name: et-0/0/44
+    type: 25gbase-x-sfp28
+  - name: et-0/0/45
+    type: 25gbase-x-sfp28
+  - name: et-0/0/46
+    type: 25gbase-x-sfp28
+  - name: et-0/0/47
+    type: 25gbase-x-sfp28
+  - name: et-0/0/48
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/49
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/50
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/51
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/52
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/53
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/54
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/55
+    type: 100gbase-x-qsfp28
diff --git a/device-types/Juniper/QFX5120-48YM-DC-AO.yaml b/device-types/Juniper/QFX5120-48YM-DC-AO.yaml
new file mode 100644
index 00000000..a1d777e3
--- /dev/null
+++ b/device-types/Juniper/QFX5120-48YM-DC-AO.yaml
@@ -0,0 +1,135 @@
+---
+manufacturer: Juniper
+model: QFX5120-48YM-DC-AO
+slug: juniper-qfx5120-48ym-dc-ao
+part_number: QFX5120-48YM-DC-AO
+u_height: 1
+weight: 24.8
+weight_unit: lb
+airflow: front-to-rear
+is_full_depth: true
+comments: '[Juniper QFX5120 Data Sheet](https://www.juniper.net/content/dam/www/assets/datasheets/us/en/switches/qfx5120-ethernet-switch-datasheet.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: PSU 0
+    position: '0'
+  - name: PSU 1
+    position: '1'
+interfaces:
+  - name: fxp0
+    type: 1000base-t
+    mgmt_only: true
+  - name: et-0/0/0
+    type: 25gbase-x-sfp28
+  - name: et-0/0/1
+    type: 25gbase-x-sfp28
+  - name: et-0/0/2
+    type: 25gbase-x-sfp28
+  - name: et-0/0/3
+    type: 25gbase-x-sfp28
+  - name: et-0/0/4
+    type: 25gbase-x-sfp28
+  - name: et-0/0/5
+    type: 25gbase-x-sfp28
+  - name: et-0/0/6
+    type: 25gbase-x-sfp28
+  - name: et-0/0/7
+    type: 25gbase-x-sfp28
+  - name: et-0/0/8
+    type: 25gbase-x-sfp28
+  - name: et-0/0/9
+    type: 25gbase-x-sfp28
+  - name: et-0/0/10
+    type: 25gbase-x-sfp28
+  - name: et-0/0/11
+    type: 25gbase-x-sfp28
+  - name: et-0/0/12
+    type: 25gbase-x-sfp28
+  - name: et-0/0/13
+    type: 25gbase-x-sfp28
+  - name: et-0/0/14
+    type: 25gbase-x-sfp28
+  - name: et-0/0/15
+    type: 25gbase-x-sfp28
+  - name: et-0/0/16
+    type: 25gbase-x-sfp28
+  - name: et-0/0/17
+    type: 25gbase-x-sfp28
+  - name: et-0/0/18
+    type: 25gbase-x-sfp28
+  - name: et-0/0/19
+    type: 25gbase-x-sfp28
+  - name: et-0/0/20
+    type: 25gbase-x-sfp28
+  - name: et-0/0/21
+    type: 25gbase-x-sfp28
+  - name: et-0/0/22
+    type: 25gbase-x-sfp28
+  - name: et-0/0/23
+    type: 25gbase-x-sfp28
+  - name: et-0/0/24
+    type: 25gbase-x-sfp28
+  - name: et-0/0/25
+    type: 25gbase-x-sfp28
+  - name: et-0/0/26
+    type: 25gbase-x-sfp28
+  - name: et-0/0/27
+    type: 25gbase-x-sfp28
+  - name: et-0/0/28
+    type: 25gbase-x-sfp28
+  - name: et-0/0/29
+    type: 25gbase-x-sfp28
+  - name: et-0/0/30
+    type: 25gbase-x-sfp28
+  - name: et-0/0/31
+    type: 25gbase-x-sfp28
+  - name: et-0/0/32
+    type: 25gbase-x-sfp28
+  - name: et-0/0/33
+    type: 25gbase-x-sfp28
+  - name: et-0/0/34
+    type: 25gbase-x-sfp28
+  - name: et-0/0/35
+    type: 25gbase-x-sfp28
+  - name: et-0/0/36
+    type: 25gbase-x-sfp28
+  - name: et-0/0/37
+    type: 25gbase-x-sfp28
+  - name: et-0/0/38
+    type: 25gbase-x-sfp28
+  - name: et-0/0/39
+    type: 25gbase-x-sfp28
+  - name: et-0/0/40
+    type: 25gbase-x-sfp28
+  - name: et-0/0/41
+    type: 25gbase-x-sfp28
+  - name: et-0/0/42
+    type: 25gbase-x-sfp28
+  - name: et-0/0/43
+    type: 25gbase-x-sfp28
+  - name: et-0/0/44
+    type: 25gbase-x-sfp28
+  - name: et-0/0/45
+    type: 25gbase-x-sfp28
+  - name: et-0/0/46
+    type: 25gbase-x-sfp28
+  - name: et-0/0/47
+    type: 25gbase-x-sfp28
+  - name: et-0/0/48
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/49
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/50
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/51
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/52
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/53
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/54
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/55
+    type: 100gbase-x-qsfp28
diff --git a/device-types/Juniper/QFX5130-32CD.yaml b/device-types/Juniper/QFX5130-32CD-AFI.yaml
similarity index 78%
rename from device-types/Juniper/QFX5130-32CD.yaml
rename to device-types/Juniper/QFX5130-32CD-AFI.yaml
index 26f73435..2cd63e85 100644
--- a/device-types/Juniper/QFX5130-32CD.yaml
+++ b/device-types/Juniper/QFX5130-32CD-AFI.yaml
@@ -1,9 +1,22 @@
 ---
 manufacturer: Juniper
-model: QFX5130-32CD
-slug: juniper-qfx5130-32cd
-comments: '[Juniper QFX5200 Data Sheet](https://www.juniper.net/us/en/products-services/switching/qfx-series/qfx5130/)'
+model: QFX5130-32CD-AFI
+slug: juniper-qfx5130-32cd-afi
+part_number: QFX5130-32CD-AFI
 u_height: 1
+weight: 24.5
+weight_unit: lb
+airflow: rear-to-front
+is_full_depth: true
+comments: '[Juniper QFX5130 Data Sheet](hhttps://www.juniper.net/content/dam/www/assets/datasheets/us/en/switches/qfx5130-switch-datasheet.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: PSU 0
+    position: '0'
+  - name: PSU 1
+    position: '1'
 interfaces:
   - name: fxp0
     type: 1000base-t
@@ -72,13 +85,7 @@ interfaces:
     type: 400gbase-x-qsfpdd
   - name: et-0/0/31
     type: 400gbase-x-qsfpdd
-power-ports:
-  - name: PSU0
-    type: iec-60320-c14
-    maximum_draw: 650
-  - name: PSU1
-    type: iec-60320-c14
-    maximum_draw: 650
-console-ports:
-  - name: Console
-    type: rj-45
+  - name: xe-0/0/32
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/33
+    type: 10gbase-x-sfpp
diff --git a/device-types/Juniper/QFX5130-32CD-AFO.yaml b/device-types/Juniper/QFX5130-32CD-AFO.yaml
new file mode 100644
index 00000000..d542daf0
--- /dev/null
+++ b/device-types/Juniper/QFX5130-32CD-AFO.yaml
@@ -0,0 +1,91 @@
+---
+manufacturer: Juniper
+model: QFX5130-32CD-AFO
+slug: juniper-qfx5130-32cd-afo
+part_number: QFX5130-32CD-AFO
+u_height: 1
+weight: 24.5
+weight_unit: lb
+airflow: front-to-rear
+is_full_depth: true
+comments: '[Juniper QFX5130 Data Sheet](hhttps://www.juniper.net/content/dam/www/assets/datasheets/us/en/switches/qfx5130-switch-datasheet.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: PSU 0
+    position: '0'
+  - name: PSU 1
+    position: '1'
+interfaces:
+  - name: fxp0
+    type: 1000base-t
+    mgmt_only: true
+  - name: et-0/0/0
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/1
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/2
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/3
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/4
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/5
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/6
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/7
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/8
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/9
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/10
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/11
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/12
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/13
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/14
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/15
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/16
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/17
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/18
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/19
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/20
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/21
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/22
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/23
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/24
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/25
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/26
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/27
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/28
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/29
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/30
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/31
+    type: 400gbase-x-qsfpdd
+  - name: xe-0/0/32
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/33
+    type: 10gbase-x-sfpp
diff --git a/device-types/Juniper/QFX5130-32CD-D-AFI.yaml b/device-types/Juniper/QFX5130-32CD-D-AFI.yaml
new file mode 100644
index 00000000..fa080041
--- /dev/null
+++ b/device-types/Juniper/QFX5130-32CD-D-AFI.yaml
@@ -0,0 +1,91 @@
+---
+manufacturer: Juniper
+model: QFX5130-32CD-D-AFI
+slug: juniper-qfx5130-32cd-d-afi
+part_number: QFX5130-32CD-D-AFI
+u_height: 1
+weight: 24.5
+weight_unit: lb
+airflow: rear-to-front
+is_full_depth: true
+comments: '[Juniper QFX5130 Data Sheet](hhttps://www.juniper.net/content/dam/www/assets/datasheets/us/en/switches/qfx5130-switch-datasheet.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: PSU 0
+    position: '0'
+  - name: PSU 1
+    position: '1'
+interfaces:
+  - name: fxp0
+    type: 1000base-t
+    mgmt_only: true
+  - name: et-0/0/0
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/1
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/2
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/3
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/4
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/5
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/6
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/7
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/8
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/9
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/10
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/11
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/12
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/13
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/14
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/15
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/16
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/17
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/18
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/19
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/20
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/21
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/22
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/23
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/24
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/25
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/26
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/27
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/28
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/29
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/30
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/31
+    type: 400gbase-x-qsfpdd
+  - name: xe-0/0/32
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/33
+    type: 10gbase-x-sfpp
diff --git a/device-types/Juniper/QFX5130-32CD-D-AFO.yaml b/device-types/Juniper/QFX5130-32CD-D-AFO.yaml
new file mode 100644
index 00000000..4a36c5b2
--- /dev/null
+++ b/device-types/Juniper/QFX5130-32CD-D-AFO.yaml
@@ -0,0 +1,91 @@
+---
+manufacturer: Juniper
+model: QFX5130-32CD-D-AFO
+slug: juniper-qfx5130-32cd-d-afo
+part_number: QFX5130-32CD-D-AFO
+u_height: 1
+weight: 24.5
+weight_unit: lb
+airflow: front-to-rear
+is_full_depth: true
+comments: '[Juniper QFX5130 Data Sheet](hhttps://www.juniper.net/content/dam/www/assets/datasheets/us/en/switches/qfx5130-switch-datasheet.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: PSU 0
+    position: '0'
+  - name: PSU 1
+    position: '1'
+interfaces:
+  - name: fxp0
+    type: 1000base-t
+    mgmt_only: true
+  - name: et-0/0/0
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/1
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/2
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/3
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/4
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/5
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/6
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/7
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/8
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/9
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/10
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/11
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/12
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/13
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/14
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/15
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/16
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/17
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/18
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/19
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/20
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/21
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/22
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/23
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/24
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/25
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/26
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/27
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/28
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/29
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/30
+    type: 400gbase-x-qsfpdd
+  - name: et-0/0/31
+    type: 400gbase-x-qsfpdd
+  - name: xe-0/0/32
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/33
+    type: 10gbase-x-sfpp
diff --git a/module-types/Juniper/JPSU-650W-AC-AI.yaml b/module-types/Juniper/JPSU-650W-AC-AI.yaml
new file mode 100644
index 00000000..9bb80e76
--- /dev/null
+++ b/module-types/Juniper/JPSU-650W-AC-AI.yaml
@@ -0,0 +1,11 @@
+---
+manufacturer: Juniper
+model: JPSU-650W-AC-AI
+part_number: JPSU-650W-AC-AI
+# airflow: rear-to-front
+weight: 2.2
+weight_unit: lb
+power-ports:
+  - name: '{module}'
+    type: iec-60320-c14
+    maximum_draw: 650
diff --git a/module-types/Juniper/JPSU-650W-AC-AO.yaml b/module-types/Juniper/JPSU-650W-AC-AO.yaml
new file mode 100644
index 00000000..cc0286e5
--- /dev/null
+++ b/module-types/Juniper/JPSU-650W-AC-AO.yaml
@@ -0,0 +1,11 @@
+---
+manufacturer: Juniper
+model: JPSU-650W-AC-AO
+part_number: JPSU-650W-AC-AO
+# airflow: front-to-rear
+weight: 2.2
+weight_unit: lb
+power-ports:
+  - name: '{module}'
+    type: iec-60320-c14
+    maximum_draw: 650
diff --git a/module-types/Juniper/JPSU-650W-DC-AFI.yaml b/module-types/Juniper/JPSU-650W-DC-AFI.yaml
new file mode 100644
index 00000000..cf77563f
--- /dev/null
+++ b/module-types/Juniper/JPSU-650W-DC-AFI.yaml
@@ -0,0 +1,11 @@
+---
+manufacturer: Juniper
+model: JPSU-650W-DC-AFI
+part_number: JPSU-650W-DC-AFI
+# airflow: rear-to-front
+weight: 2.2
+weight_unit: lb
+power-ports:
+  - name: '{module}'
+    type: dc-terminal
+    maximum_draw: 650
diff --git a/module-types/Juniper/JPSU-650W-DC-AFO.yaml b/module-types/Juniper/JPSU-650W-DC-AFO.yaml
new file mode 100644
index 00000000..9adf7827
--- /dev/null
+++ b/module-types/Juniper/JPSU-650W-DC-AFO.yaml
@@ -0,0 +1,11 @@
+---
+manufacturer: Juniper
+model: JPSU-650W-DC-AFO
+part_number: JPSU-650W-DC-AFO
+# airflow: front-to-rear
+weight: 2.2
+weight_unit: lb
+power-ports:
+  - name: '{module}'
+    type: dc-terminal
+    maximum_draw: 650
diff --git a/module-types/Juniper/JPSU-850W-AC-AFI.yaml b/module-types/Juniper/JPSU-850W-AC-AFI.yaml
new file mode 100644
index 00000000..38b98ffc
--- /dev/null
+++ b/module-types/Juniper/JPSU-850W-AC-AFI.yaml
@@ -0,0 +1,11 @@
+---
+manufacturer: Juniper
+model: JPSU-850W-AC-AFI
+part_number: JPSU-850W-AC-AFI
+# airflow: rear-to-front
+weight: 2.3
+weight_unit: lb
+power-ports:
+  - name: '{module}'
+    type: iec-60320-c14
+    maximum_draw: 850
diff --git a/module-types/Juniper/JPSU-850W-AC-AFO.yaml b/module-types/Juniper/JPSU-850W-AC-AFO.yaml
new file mode 100644
index 00000000..ea2aec5b
--- /dev/null
+++ b/module-types/Juniper/JPSU-850W-AC-AFO.yaml
@@ -0,0 +1,11 @@
+---
+manufacturer: Juniper
+model: JPSU-850W-AC-AFO
+part_number: JPSU-850W-AC-AFO
+# airflow: front-to-rear
+weight: 2.3
+weight_unit: lb
+power-ports:
+  - name: '{module}'
+    type: iec-60320-c14
+    maximum_draw: 850
diff --git a/module-types/Juniper/JPSU-850W-DC-AFI.yaml b/module-types/Juniper/JPSU-850W-DC-AFI.yaml
new file mode 100644
index 00000000..761363f4
--- /dev/null
+++ b/module-types/Juniper/JPSU-850W-DC-AFI.yaml
@@ -0,0 +1,11 @@
+---
+manufacturer: Juniper
+model: JPSU-850W-DC-AFI
+part_number: JPSU-850W-DC-AFI
+# airflow: rear-to-front
+weight: 2.3
+weight_unit: lb
+power-ports:
+  - name: '{module}'
+    type: dc-terminal
+    maximum_draw: 850
diff --git a/module-types/Juniper/JPSU-850W-DC-AFO.yaml b/module-types/Juniper/JPSU-850W-DC-AFO.yaml
new file mode 100644
index 00000000..6c03b165
--- /dev/null
+++ b/module-types/Juniper/JPSU-850W-DC-AFO.yaml
@@ -0,0 +1,11 @@
+---
+manufacturer: Juniper
+model: JPSU-850W-DC-AFO
+part_number: JPSU-850W-DC-AFO
+# airflow: front-to-rear
+weight: 2.3
+weight_unit: lb
+power-ports:
+  - name: '{module}'
+    type: dc-terminal
+    maximum_draw: 850
diff --git a/module-types/Juniper/QFX520048Y-APSU-AI.yaml b/module-types/Juniper/QFX520048Y-APSU-AI.yaml
new file mode 100644
index 00000000..166d4562
--- /dev/null
+++ b/module-types/Juniper/QFX520048Y-APSU-AI.yaml
@@ -0,0 +1,11 @@
+---
+manufacturer: Juniper
+model: QFX520048Y-APSU-AI
+part_number: QFX520048Y-APSU-AI
+# airflow: rear-to-front
+weight: 2.1
+weight_unit: lb
+power-ports:
+  - name: '{module}'
+    type: iec-60320-c14
+    maximum_draw: 650
diff --git a/module-types/Juniper/QFX520048Y-APSU-AO.yaml b/module-types/Juniper/QFX520048Y-APSU-AO.yaml
new file mode 100644
index 00000000..82bc1a9a
--- /dev/null
+++ b/module-types/Juniper/QFX520048Y-APSU-AO.yaml
@@ -0,0 +1,11 @@
+---
+manufacturer: Juniper
+model: QFX520048Y-APSU-AO
+part_number: QFX520048Y-APSU-AO
+# airflow: front-to-rear
+weight: 2.1
+weight_unit: lb
+power-ports:
+  - name: '{module}'
+    type: iec-60320-c14
+    maximum_draw: 650
diff --git a/module-types/Juniper/QFX520048Y-DPSU-AI.yaml b/module-types/Juniper/QFX520048Y-DPSU-AI.yaml
new file mode 100644
index 00000000..f368f442
--- /dev/null
+++ b/module-types/Juniper/QFX520048Y-DPSU-AI.yaml
@@ -0,0 +1,11 @@
+---
+manufacturer: Juniper
+model: QFX520048Y-DPSU-AI
+part_number: QFX520048Y-DPSU-AI
+# airflow: rear-to-front
+weight: 2.1
+weight_unit: lb
+power-ports:
+  - name: '{module}'
+    type: dc-terminal
+    maximum_draw: 650
diff --git a/module-types/Juniper/QFX520048Y-DPSU-AO.yaml b/module-types/Juniper/QFX520048Y-DPSU-AO.yaml
new file mode 100644
index 00000000..369f44e1
--- /dev/null
+++ b/module-types/Juniper/QFX520048Y-DPSU-AO.yaml
@@ -0,0 +1,11 @@
+---
+manufacturer: Juniper
+model: QFX520048Y-DPSU-AO
+part_number: QFX520048Y-DPSU-AO
+# airflow: front-to-rear
+weight: 2.1
+weight_unit: lb
+power-ports:
+  - name: '{module}'
+    type: dc-terminal
+    maximum_draw: 650
-- 
GitLab