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 1d970e9aa0be54d8a78b1a08f715b103c3b54bdb..c61ce9c64f8500036f251826ea9b275af2f4063a 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 0000000000000000000000000000000000000000..096d2f8cefa0cc188fcdf8596b4f45ebe6c7a9af
--- /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 0000000000000000000000000000000000000000..1b50cc28c7d39ca17ca60f085fc69588d593771b
--- /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 0000000000000000000000000000000000000000..48b6b75f9cef33e2e70ceadda0e01688b3a88e6f
--- /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 c0c1543a19e9a99344bab367451588e66d75c7f4..31da3aae1b305608f5a00d954cca932db9f175ca 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 0000000000000000000000000000000000000000..46fcc2e923114aee28c66b81e8c04dae5eb44aa1
--- /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 0000000000000000000000000000000000000000..e5d4ff75a182c7d8ce461653f3aa976e6a8e925f
--- /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 0000000000000000000000000000000000000000..9e2143f66e928efe3dd6a46bdce32d9d955c4693
--- /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 44b0d4b5958d8c3432964dd7e6c60060b9a72f9e..88dd38c761ccde17bd33232a69424cf631233d02 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 0000000000000000000000000000000000000000..45f9c592d32d9752b440b80158f46cedc76c8d5c
--- /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 0000000000000000000000000000000000000000..2ccc7d2aaccb9b5050af032420b4a3616b8f469e
--- /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 0000000000000000000000000000000000000000..ba23427a9a5c19de1e2282a0024c2e8dff786463
--- /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 0000000000000000000000000000000000000000..d45772f9f798fb29bd6e06de0e7638b1adb9d74c
--- /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 0000000000000000000000000000000000000000..c9c37e981cc2d5b2ddb449868947f388aa618080
--- /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 0000000000000000000000000000000000000000..8139a4fb503e38f748bc3b8d4c6a591a6e98b51f
--- /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 0000000000000000000000000000000000000000..a1d777e3756ed678b9db8bc6595c1c1277da25d2
--- /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 26f734357f75c0587a2475707956c80f5ee63205..2cd63e854d5f7ca3c7ab1e29395c94044867deb9 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 0000000000000000000000000000000000000000..d542daf0c87a40600f92796b807ecae74528089d
--- /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 0000000000000000000000000000000000000000..fa080041521efa153841518ed9003e62e4014a02
--- /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 0000000000000000000000000000000000000000..4a36c5b2a5b6ea9ba7207f5522647d52f5cd12fc
--- /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 0000000000000000000000000000000000000000..9bb80e763994cbde0a7961120f7279d48de1d1bb
--- /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 0000000000000000000000000000000000000000..cc0286e547112ce87f063a942545f7f324beab27
--- /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 0000000000000000000000000000000000000000..cf77563fae8daa59764f01549b8f726b7de27c46
--- /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 0000000000000000000000000000000000000000..9adf782783d10f03ce7dbe53facc6c6b57c02afa
--- /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 0000000000000000000000000000000000000000..38b98ffcc0e3c11141e124bc5051a4215f7b74d2
--- /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 0000000000000000000000000000000000000000..ea2aec5bdba0e4885e96d72b182adea0ddddcd1e
--- /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 0000000000000000000000000000000000000000..761363f4b7bbfb83c6edbc3bbbf45cecfe36bbbf
--- /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 0000000000000000000000000000000000000000..6c03b1658f535e6ab3dd5af33180519bc2927d14
--- /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 0000000000000000000000000000000000000000..166d456247a8a91b111f5e5ea8e75926adcd2fe3
--- /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 0000000000000000000000000000000000000000..82bc1a9a624aa19f33fdd0719fd9a133933da290
--- /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 0000000000000000000000000000000000000000..f368f44289460194ec4bfe79e35c2a0ac60bd690
--- /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 0000000000000000000000000000000000000000..369f44e1772af9425b0c9250e426e4e3cac5cb17
--- /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