From ff1447846ff7172ce3b0f536e950dd00c7df1870 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Markus=20Viitam=C3=A4ki?= <markus@viitamaki.net>
Date: Tue, 25 Jul 2023 22:55:55 +0200
Subject: [PATCH] Juniper QFX10002 Family (#1483)

* Regenerate master slug list after successful PR merge

* Juniper QFX10002 Family

* known-slugs.pickle stuff..

---------

Co-authored-by: NetBox-Bot <info@netboxlabs.com>
Co-authored-by: Daniel W. Anner <daniel.anner@danstechsupport.com>
---
 device-types/Juniper/QFX10002-36Q-DC.yaml   |  98 +++++++++++
 device-types/Juniper/QFX10002-36Q.yaml      |  16 +-
 device-types/Juniper/QFX10002-60C-DC.yaml   | 150 +++++++++++++++++
 device-types/Juniper/QFX10002-60C.yaml      | 150 +++++++++++++++++
 device-types/Juniper/QFX10002-72Q-DC.yaml   | 174 ++++++++++++++++++++
 device-types/Juniper/QFX10002-72Q.yaml      |  20 ++-
 module-types/Juniper/JPSU-1600W-AC-AFO.yaml |  11 ++
 module-types/Juniper/JPSU-1600W-DC-AFO.yaml |  11 ++
 8 files changed, 618 insertions(+), 12 deletions(-)
 create mode 100644 device-types/Juniper/QFX10002-36Q-DC.yaml
 create mode 100644 device-types/Juniper/QFX10002-60C-DC.yaml
 create mode 100644 device-types/Juniper/QFX10002-60C.yaml
 create mode 100644 device-types/Juniper/QFX10002-72Q-DC.yaml
 create mode 100644 module-types/Juniper/JPSU-1600W-AC-AFO.yaml
 create mode 100644 module-types/Juniper/JPSU-1600W-DC-AFO.yaml

diff --git a/device-types/Juniper/QFX10002-36Q-DC.yaml b/device-types/Juniper/QFX10002-36Q-DC.yaml
new file mode 100644
index 00000000..edb621eb
--- /dev/null
+++ b/device-types/Juniper/QFX10002-36Q-DC.yaml
@@ -0,0 +1,98 @@
+---
+manufacturer: Juniper
+model: QFX10002-36Q-DC
+slug: juniper-qfx10002-36q-dc
+part_number: QFX10002-36Q-DC
+u_height: 2
+weight: 53.6
+weight_unit: lb
+airflow: front-to-rear
+is_full_depth: true
+comments: '[Juniper QFX10002 Data Sheet](https://www.juniper.net/content/dam/www/assets/datasheets/us/en/switches/qfx10002-fixed-ethernet-switches.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: PSU 0
+    position: '0'
+  - name: PSU 1
+    position: '1'
+interfaces:
+  - name: em0
+    type: 1000base-t
+    mgmt_only: true
+  - name: em1
+    type: 1000base-x-sfp
+    mgmt_only: true
+  - name: et-0/0/0
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/1
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/2
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/3
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/4
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/5
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/6
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/7
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/8
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/9
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/10
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/11
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/12
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/13
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/14
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/15
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/16
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/17
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/18
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/19
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/20
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/21
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/22
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/23
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/24
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/25
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/26
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/27
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/28
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/29
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/30
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/31
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/32
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/33
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/34
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/35
+    type: 40gbase-x-qsfpp
diff --git a/device-types/Juniper/QFX10002-36Q.yaml b/device-types/Juniper/QFX10002-36Q.yaml
index d5dcf7a7..56ccbe62 100644
--- a/device-types/Juniper/QFX10002-36Q.yaml
+++ b/device-types/Juniper/QFX10002-36Q.yaml
@@ -2,12 +2,21 @@
 manufacturer: Juniper
 model: QFX10002-36Q
 slug: juniper-qfx10002-36q
+part_number: QFX10002-36Q
 u_height: 2
+weight: 54
+weight_unit: lb
+airflow: front-to-rear
 is_full_depth: true
-comments: '[Juniper QFX10002 Data Sheet](https://www.juniper.net/assets/us/en/local/pdf/datasheets/1000531-en.pdf)'
+comments: '[Juniper QFX10002 Data Sheet](https://www.juniper.net/content/dam/www/assets/datasheets/us/en/switches/qfx10002-fixed-ethernet-switches.pdf)'
 console-ports:
   - name: Console
     type: rj-45
+module-bays:
+  - name: PSU 0
+    position: '0'
+  - name: PSU 1
+    position: '1'
 interfaces:
   - name: em0
     type: 1000base-t
@@ -87,8 +96,3 @@ interfaces:
     type: 40gbase-x-qsfpp
   - name: et-0/0/35
     type: 40gbase-x-qsfpp
-power-ports:
-  - name: PSU0
-    type: iec-60320-c14
-  - name: PSU1
-    type: iec-60320-c14
diff --git a/device-types/Juniper/QFX10002-60C-DC.yaml b/device-types/Juniper/QFX10002-60C-DC.yaml
new file mode 100644
index 00000000..0a6ee727
--- /dev/null
+++ b/device-types/Juniper/QFX10002-60C-DC.yaml
@@ -0,0 +1,150 @@
+---
+manufacturer: Juniper
+model: QFX10002-60C-DC
+slug: juniper-qfx10002-60c-dc
+part_number: QFX10002-60C-DC
+u_height: 2
+weight: 90.39
+weight_unit: lb
+airflow: front-to-rear
+is_full_depth: true
+comments: '[Juniper QFX10002 Data Sheet](https://www.juniper.net/content/dam/www/assets/datasheets/us/en/switches/qfx10002-fixed-ethernet-switches.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: PSU 0
+    position: '0'
+  - name: PSU 1
+    position: '1'
+  - name: PSU 2
+    position: '2'
+  - name: PSU 3
+    position: '3'
+interfaces:
+  - name: em0
+    type: 1000base-t
+    mgmt_only: true
+  - name: em1
+    type: 1000base-x-sfp
+    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: et-0/0/32
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/33
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/34
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/35
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/36
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/37
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/38
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/39
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/40
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/41
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/42
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/43
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/44
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/45
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/46
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/47
+    type: 100gbase-x-qsfp28
+  - 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
+  - name: et-0/0/56
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/57
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/58
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/59
+    type: 100gbase-x-qsfp28
diff --git a/device-types/Juniper/QFX10002-60C.yaml b/device-types/Juniper/QFX10002-60C.yaml
new file mode 100644
index 00000000..407987a5
--- /dev/null
+++ b/device-types/Juniper/QFX10002-60C.yaml
@@ -0,0 +1,150 @@
+---
+manufacturer: Juniper
+model: QFX10002-60C
+slug: juniper-qfx10002-60c
+part_number: QFX10002-60C
+u_height: 2
+weight: 90.39
+weight_unit: lb
+airflow: front-to-rear
+is_full_depth: true
+comments: '[Juniper QFX10002 Data Sheet](https://www.juniper.net/content/dam/www/assets/datasheets/us/en/switches/qfx10002-fixed-ethernet-switches.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: PSU 0
+    position: '0'
+  - name: PSU 1
+    position: '1'
+  - name: PSU 2
+    position: '2'
+  - name: PSU 3
+    position: '3'
+interfaces:
+  - name: em0
+    type: 1000base-t
+    mgmt_only: true
+  - name: em1
+    type: 1000base-x-sfp
+    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: et-0/0/32
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/33
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/34
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/35
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/36
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/37
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/38
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/39
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/40
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/41
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/42
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/43
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/44
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/45
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/46
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/47
+    type: 100gbase-x-qsfp28
+  - 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
+  - name: et-0/0/56
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/57
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/58
+    type: 100gbase-x-qsfp28
+  - name: et-0/0/59
+    type: 100gbase-x-qsfp28
diff --git a/device-types/Juniper/QFX10002-72Q-DC.yaml b/device-types/Juniper/QFX10002-72Q-DC.yaml
new file mode 100644
index 00000000..f0c64aee
--- /dev/null
+++ b/device-types/Juniper/QFX10002-72Q-DC.yaml
@@ -0,0 +1,174 @@
+---
+manufacturer: Juniper
+model: QFX10002-72Q-DC
+slug: juniper-qfx10002-72q-dc
+part_number: QFX10002-72Q-DC
+u_height: 2
+weight: 67.8
+weight_unit: lb
+airflow: front-to-rear
+is_full_depth: true
+comments: '[Juniper QFX10002 Data Sheet](https://www.juniper.net/content/dam/www/assets/datasheets/us/en/switches/qfx10002-fixed-ethernet-switches.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: PSU 0
+    position: '0'
+  - name: PSU 1
+    position: '1'
+  - name: PSU 2
+    position: '2'
+  - name: PSU 3
+    position: '3'
+interfaces:
+  - name: em0
+    type: 1000base-t
+    mgmt_only: true
+  - name: em1
+    type: 1000base-x-sfp
+    mgmt_only: true
+  - name: et-0/0/0
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/1
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/2
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/3
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/4
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/5
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/6
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/7
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/8
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/9
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/10
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/11
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/12
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/13
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/14
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/15
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/16
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/17
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/18
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/19
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/20
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/21
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/22
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/23
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/24
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/25
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/26
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/27
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/28
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/29
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/30
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/31
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/32
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/33
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/34
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/35
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/36
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/37
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/38
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/39
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/40
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/41
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/42
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/43
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/44
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/45
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/46
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/47
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/48
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/49
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/50
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/51
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/52
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/53
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/54
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/55
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/56
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/57
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/58
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/59
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/60
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/61
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/62
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/63
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/64
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/65
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/66
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/67
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/68
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/69
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/70
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/71
+    type: 40gbase-x-qsfpp
diff --git a/device-types/Juniper/QFX10002-72Q.yaml b/device-types/Juniper/QFX10002-72Q.yaml
index 1b2e34ff..ad23c32b 100644
--- a/device-types/Juniper/QFX10002-72Q.yaml
+++ b/device-types/Juniper/QFX10002-72Q.yaml
@@ -2,12 +2,25 @@
 manufacturer: Juniper
 model: QFX10002-72Q
 slug: juniper-qfx10002-72q
+part_number: QFX10002-72Q
 u_height: 2
+weight: 68.6
+weight_unit: lb
+airflow: front-to-rear
 is_full_depth: true
-comments: '[Juniper QFX10002 Data Sheet](https://www.juniper.net/assets/us/en/local/pdf/datasheets/1000531-en.pdf)'
+comments: '[Juniper QFX10002 Data Sheet](https://www.juniper.net/content/dam/www/assets/datasheets/us/en/switches/qfx10002-fixed-ethernet-switches.pdf)'
 console-ports:
   - name: Console
     type: rj-45
+module-bays:
+  - name: PSU 0
+    position: '0'
+  - name: PSU 1
+    position: '1'
+  - name: PSU 2
+    position: '2'
+  - name: PSU 3
+    position: '3'
 interfaces:
   - name: em0
     type: 1000base-t
@@ -159,8 +172,3 @@ interfaces:
     type: 40gbase-x-qsfpp
   - name: et-0/0/71
     type: 40gbase-x-qsfpp
-power-ports:
-  - name: PSU0
-    type: iec-60320-c14
-  - name: PSU1
-    type: iec-60320-c14
diff --git a/module-types/Juniper/JPSU-1600W-AC-AFO.yaml b/module-types/Juniper/JPSU-1600W-AC-AFO.yaml
new file mode 100644
index 00000000..f50871ef
--- /dev/null
+++ b/module-types/Juniper/JPSU-1600W-AC-AFO.yaml
@@ -0,0 +1,11 @@
+---
+manufacturer: Juniper
+model: JPSU-1600W-AC-AFO
+part_number: JPSU-1600W-AC-AFO
+# airflow: front-to-rear
+weight: 2.33
+weight_unit: lb
+power-ports:
+  - name: '{module}'
+    type: iec-60320-c16
+    maximum_draw: 1600
diff --git a/module-types/Juniper/JPSU-1600W-DC-AFO.yaml b/module-types/Juniper/JPSU-1600W-DC-AFO.yaml
new file mode 100644
index 00000000..b7509a03
--- /dev/null
+++ b/module-types/Juniper/JPSU-1600W-DC-AFO.yaml
@@ -0,0 +1,11 @@
+---
+manufacturer: Juniper
+model: JPSU-1600W-DC-AFO
+part_number: JPSU-1600W-DC-AFO
+# airflow: front-to-rear
+weight: 2.40
+weight_unit: lb
+power-ports:
+  - name: '{module}'
+    type: dc-terminal
+    maximum_draw: 1600
-- 
GitLab