From 195df8b5131243f22b36529c6fa3805c707f6c98 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Markus=20Viitam=C3=A4ki?=
 <markus.viitamaki@embark-studios.com>
Date: Mon, 31 Jul 2023 16:46:17 +0200
Subject: [PATCH] Juniper EX3400 Family (Update) (#1512)

---
 device-types/Juniper/EX3400-24P.yaml      |  81 ++++++++++---
 device-types/Juniper/EX3400-24T-DC.yaml   |  92 ++++++++++++++
 device-types/Juniper/EX3400-24T.yaml      |  33 ++---
 device-types/Juniper/EX3400-48P.yaml      | 129 +++++++++++++++++---
 device-types/Juniper/EX3400-48T-AFI.yaml  | 140 ++++++++++++++++++++++
 device-types/Juniper/EX3400-48T-DC.yaml   | 140 ++++++++++++++++++++++
 device-types/Juniper/EX3400-48T.yaml      |  33 ++---
 module-types/Juniper/JPSU-600-AC-AFO.yaml |   9 ++
 module-types/Juniper/JPSU-920-AC-AFO.yaml |   9 ++
 9 files changed, 606 insertions(+), 60 deletions(-)
 create mode 100644 device-types/Juniper/EX3400-24T-DC.yaml
 create mode 100644 device-types/Juniper/EX3400-48T-AFI.yaml
 create mode 100644 device-types/Juniper/EX3400-48T-DC.yaml
 create mode 100644 module-types/Juniper/JPSU-600-AC-AFO.yaml
 create mode 100644 module-types/Juniper/JPSU-920-AC-AFO.yaml

diff --git a/device-types/Juniper/EX3400-24P.yaml b/device-types/Juniper/EX3400-24P.yaml
index 66e591e4..d1bcb5de 100644
--- a/device-types/Juniper/EX3400-24P.yaml
+++ b/device-types/Juniper/EX3400-24P.yaml
@@ -1,57 +1,123 @@
 ---
 manufacturer: Juniper
 model: EX3400-24P
+part_number: EX3400-24P
 slug: juniper-ex3400-24p
 u_height: 1
+airflow: front-to-rear
+weight: 10.49
+weight_unit: lb
+comments: '[Juniper EX3400 Hardware Guide](https://www.juniper.net/content/dam/www/assets/datasheets/us/en/switches/ex3400-ethernet-switch-datasheet.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+  - name: Console (USB)
+    type: usb-mini-b
+module-bays:
+  - name: PSU0
+    position: '0'
+  - name: PSU1
+    position: '1'
 interfaces:
+  - name: me0
+    type: 1000base-t
+    mgmt_only: true
   - name: ge-0/0/0
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/1
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/2
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/3
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/4
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/5
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/6
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/7
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/8
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/9
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/10
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/11
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/12
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/13
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/14
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/15
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/16
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/17
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/18
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/19
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/20
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/21
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/22
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/23
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: et-0/1/0
     type: 40gbase-x-qsfpp
   - name: et-0/1/1
@@ -72,18 +138,3 @@ interfaces:
     type: 10gbase-x-sfpp
   - name: xe-0/2/3
     type: 10gbase-x-sfpp
-  - name: me0
-    type: 1000base-t
-    mgmt_only: true
-power-ports:
-  - name: PSU0
-    type: iec-60320-c14
-    maximum_draw: 600
-  - name: PSU1
-    type: iec-60320-c14
-    maximum_draw: 600
-console-ports:
-  - name: Console
-    type: rj-45
-  - name: Console (USB)
-    type: usb-mini-b
diff --git a/device-types/Juniper/EX3400-24T-DC.yaml b/device-types/Juniper/EX3400-24T-DC.yaml
new file mode 100644
index 00000000..88559bfc
--- /dev/null
+++ b/device-types/Juniper/EX3400-24T-DC.yaml
@@ -0,0 +1,92 @@
+---
+manufacturer: Juniper
+model: EX3400-24T-DC
+part_number: EX3400-24T-DC
+slug: juniper-ex3400-24t-dc
+u_height: 1
+airflow: front-to-rear
+weight: 10.49
+weight_unit: lb
+comments: '[Juniper EX3400 Hardware Guide](https://www.juniper.net/content/dam/www/assets/datasheets/us/en/switches/ex3400-ethernet-switch-datasheet.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+  - name: Console (USB)
+    type: usb-mini-b
+module-bays:
+  - name: PSU0
+    position: '0'
+  - name: PSU1
+    position: '1'
+interfaces:
+  - name: me0
+    type: 1000base-t
+    mgmt_only: true
+  - name: ge-0/0/0
+    type: 1000base-t
+  - name: ge-0/0/1
+    type: 1000base-t
+  - name: ge-0/0/2
+    type: 1000base-t
+  - name: ge-0/0/3
+    type: 1000base-t
+  - name: ge-0/0/4
+    type: 1000base-t
+  - name: ge-0/0/5
+    type: 1000base-t
+  - name: ge-0/0/6
+    type: 1000base-t
+  - name: ge-0/0/7
+    type: 1000base-t
+  - name: ge-0/0/8
+    type: 1000base-t
+  - name: ge-0/0/9
+    type: 1000base-t
+  - name: ge-0/0/10
+    type: 1000base-t
+  - name: ge-0/0/11
+    type: 1000base-t
+  - name: ge-0/0/12
+    type: 1000base-t
+  - name: ge-0/0/13
+    type: 1000base-t
+  - name: ge-0/0/14
+    type: 1000base-t
+  - name: ge-0/0/15
+    type: 1000base-t
+  - name: ge-0/0/16
+    type: 1000base-t
+  - name: ge-0/0/17
+    type: 1000base-t
+  - name: ge-0/0/18
+    type: 1000base-t
+  - name: ge-0/0/19
+    type: 1000base-t
+  - name: ge-0/0/20
+    type: 1000base-t
+  - name: ge-0/0/21
+    type: 1000base-t
+  - name: ge-0/0/22
+    type: 1000base-t
+  - name: ge-0/0/23
+    type: 1000base-t
+  - name: et-0/1/0
+    type: 40gbase-x-qsfpp
+  - name: et-0/1/1
+    type: 40gbase-x-qsfpp
+  - name: ge-0/2/0
+    type: 1000base-x-sfp
+  - name: ge-0/2/1
+    type: 1000base-x-sfp
+  - name: ge-0/2/2
+    type: 1000base-x-sfp
+  - name: ge-0/2/3
+    type: 1000base-x-sfp
+  - name: xe-0/2/0
+    type: 10gbase-x-sfpp
+  - name: xe-0/2/1
+    type: 10gbase-x-sfpp
+  - name: xe-0/2/2
+    type: 10gbase-x-sfpp
+  - name: xe-0/2/3
+    type: 10gbase-x-sfpp
diff --git a/device-types/Juniper/EX3400-24T.yaml b/device-types/Juniper/EX3400-24T.yaml
index e123b64a..b8580800 100644
--- a/device-types/Juniper/EX3400-24T.yaml
+++ b/device-types/Juniper/EX3400-24T.yaml
@@ -1,9 +1,27 @@
 ---
 manufacturer: Juniper
 model: EX3400-24T
+part_number: EX3400-24T
 slug: juniper-ex3400-24t
 u_height: 1
+airflow: front-to-rear
+weight: 10.49
+weight_unit: lb
+comments: '[Juniper EX3400 Hardware Guide](https://www.juniper.net/content/dam/www/assets/datasheets/us/en/switches/ex3400-ethernet-switch-datasheet.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+  - name: Console (USB)
+    type: usb-mini-b
+module-bays:
+  - name: PSU0
+    position: '0'
+  - name: PSU1
+    position: '1'
 interfaces:
+  - name: me0
+    type: 1000base-t
+    mgmt_only: true
   - name: ge-0/0/0
     type: 1000base-t
   - name: ge-0/0/1
@@ -72,18 +90,3 @@ interfaces:
     type: 10gbase-x-sfpp
   - name: xe-0/2/3
     type: 10gbase-x-sfpp
-  - name: me0
-    type: 1000base-t
-    mgmt_only: true
-power-ports:
-  - name: PSU0
-    type: iec-60320-c14
-    maximum_draw: 150
-  - name: PSU1
-    type: iec-60320-c14
-    maximum_draw: 150
-console-ports:
-  - name: Console
-    type: rj-45
-  - name: Console (USB)
-    type: usb-mini-b
diff --git a/device-types/Juniper/EX3400-48P.yaml b/device-types/Juniper/EX3400-48P.yaml
index 46aa4332..839e9909 100644
--- a/device-types/Juniper/EX3400-48P.yaml
+++ b/device-types/Juniper/EX3400-48P.yaml
@@ -1,105 +1,219 @@
 ---
 manufacturer: Juniper
 model: EX3400-48P
+part_number: EX3400-48P
 slug: juniper-ex3400-48p
 u_height: 1
+airflow: front-to-rear
+weight: 10.49
+weight_unit: lb
+comments: '[Juniper EX3400 Hardware Guide](https://www.juniper.net/content/dam/www/assets/datasheets/us/en/switches/ex3400-ethernet-switch-datasheet.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+  - name: Console (USB)
+    type: usb-mini-b
+module-bays:
+  - name: PSU0
+    position: '0'
+  - name: PSU1
+    position: '1'
 interfaces:
+  - name: me0
+    type: 1000base-t
+    mgmt_only: true
   - name: ge-0/0/0
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/1
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/2
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/3
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/4
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/5
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/6
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/7
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/8
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/9
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/10
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/11
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/12
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/13
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/14
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/15
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/16
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/17
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/18
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/19
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/20
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/21
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/22
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/23
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/24
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/25
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/26
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/27
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/28
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/29
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/30
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/31
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/32
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/33
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/34
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/35
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/36
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/37
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/38
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/39
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/40
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/41
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/42
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/43
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/44
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/45
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/46
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/47
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: et-0/1/0
     type: 40gbase-x-qsfpp
   - name: et-0/1/1
@@ -120,18 +234,3 @@ interfaces:
     type: 10gbase-x-sfpp
   - name: xe-0/2/3
     type: 10gbase-x-sfpp
-  - name: me0
-    type: 1000base-t
-    mgmt_only: true
-power-ports:
-  - name: PSU0
-    type: iec-60320-c14
-    maximum_draw: 920
-  - name: PSU1
-    type: iec-60320-c14
-    maximum_draw: 920
-console-ports:
-  - name: Console
-    type: rj-45
-  - name: Console (USB)
-    type: usb-mini-b
diff --git a/device-types/Juniper/EX3400-48T-AFI.yaml b/device-types/Juniper/EX3400-48T-AFI.yaml
new file mode 100644
index 00000000..4c49e31d
--- /dev/null
+++ b/device-types/Juniper/EX3400-48T-AFI.yaml
@@ -0,0 +1,140 @@
+---
+manufacturer: Juniper
+model: EX3400-48T-AFI
+part_number: EX3400-48T-AFI
+slug: juniper-ex3400-48t-afi
+u_height: 1
+airflow: rear-to-front
+weight: 10.49
+weight_unit: lb
+comments: '[Juniper EX3400 Hardware Guide](https://www.juniper.net/content/dam/www/assets/datasheets/us/en/switches/ex3400-ethernet-switch-datasheet.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+  - name: Console (USB)
+    type: usb-mini-b
+module-bays:
+  - name: PSU0
+    position: '0'
+  - name: PSU1
+    position: '1'
+interfaces:
+  - name: me0
+    type: 1000base-t
+    mgmt_only: true
+  - name: ge-0/0/0
+    type: 1000base-t
+  - name: ge-0/0/1
+    type: 1000base-t
+  - name: ge-0/0/2
+    type: 1000base-t
+  - name: ge-0/0/3
+    type: 1000base-t
+  - name: ge-0/0/4
+    type: 1000base-t
+  - name: ge-0/0/5
+    type: 1000base-t
+  - name: ge-0/0/6
+    type: 1000base-t
+  - name: ge-0/0/7
+    type: 1000base-t
+  - name: ge-0/0/8
+    type: 1000base-t
+  - name: ge-0/0/9
+    type: 1000base-t
+  - name: ge-0/0/10
+    type: 1000base-t
+  - name: ge-0/0/11
+    type: 1000base-t
+  - name: ge-0/0/12
+    type: 1000base-t
+  - name: ge-0/0/13
+    type: 1000base-t
+  - name: ge-0/0/14
+    type: 1000base-t
+  - name: ge-0/0/15
+    type: 1000base-t
+  - name: ge-0/0/16
+    type: 1000base-t
+  - name: ge-0/0/17
+    type: 1000base-t
+  - name: ge-0/0/18
+    type: 1000base-t
+  - name: ge-0/0/19
+    type: 1000base-t
+  - name: ge-0/0/20
+    type: 1000base-t
+  - name: ge-0/0/21
+    type: 1000base-t
+  - name: ge-0/0/22
+    type: 1000base-t
+  - name: ge-0/0/23
+    type: 1000base-t
+  - name: ge-0/0/24
+    type: 1000base-t
+  - name: ge-0/0/25
+    type: 1000base-t
+  - name: ge-0/0/26
+    type: 1000base-t
+  - name: ge-0/0/27
+    type: 1000base-t
+  - name: ge-0/0/28
+    type: 1000base-t
+  - name: ge-0/0/29
+    type: 1000base-t
+  - name: ge-0/0/30
+    type: 1000base-t
+  - name: ge-0/0/31
+    type: 1000base-t
+  - name: ge-0/0/32
+    type: 1000base-t
+  - name: ge-0/0/33
+    type: 1000base-t
+  - name: ge-0/0/34
+    type: 1000base-t
+  - name: ge-0/0/35
+    type: 1000base-t
+  - name: ge-0/0/36
+    type: 1000base-t
+  - name: ge-0/0/37
+    type: 1000base-t
+  - name: ge-0/0/38
+    type: 1000base-t
+  - name: ge-0/0/39
+    type: 1000base-t
+  - name: ge-0/0/40
+    type: 1000base-t
+  - name: ge-0/0/41
+    type: 1000base-t
+  - name: ge-0/0/42
+    type: 1000base-t
+  - name: ge-0/0/43
+    type: 1000base-t
+  - name: ge-0/0/44
+    type: 1000base-t
+  - name: ge-0/0/45
+    type: 1000base-t
+  - name: ge-0/0/46
+    type: 1000base-t
+  - name: ge-0/0/47
+    type: 1000base-t
+  - name: et-0/1/0
+    type: 40gbase-x-qsfpp
+  - name: et-0/1/1
+    type: 40gbase-x-qsfpp
+  - name: ge-0/2/0
+    type: 1000base-x-sfp
+  - name: ge-0/2/1
+    type: 1000base-x-sfp
+  - name: ge-0/2/2
+    type: 1000base-x-sfp
+  - name: ge-0/2/3
+    type: 1000base-x-sfp
+  - name: xe-0/2/0
+    type: 10gbase-x-sfpp
+  - name: xe-0/2/1
+    type: 10gbase-x-sfpp
+  - name: xe-0/2/2
+    type: 10gbase-x-sfpp
+  - name: xe-0/2/3
+    type: 10gbase-x-sfpp
diff --git a/device-types/Juniper/EX3400-48T-DC.yaml b/device-types/Juniper/EX3400-48T-DC.yaml
new file mode 100644
index 00000000..bb85d724
--- /dev/null
+++ b/device-types/Juniper/EX3400-48T-DC.yaml
@@ -0,0 +1,140 @@
+---
+manufacturer: Juniper
+model: EX3400-48T-DC
+part_number: EX3400-48T-DC
+slug: juniper-ex3400-48t-dc
+u_height: 1
+airflow: front-to-rear
+weight: 10.49
+weight_unit: lb
+comments: '[Juniper EX3400 Hardware Guide](https://www.juniper.net/content/dam/www/assets/datasheets/us/en/switches/ex3400-ethernet-switch-datasheet.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+  - name: Console (USB)
+    type: usb-mini-b
+module-bays:
+  - name: PSU0
+    position: '0'
+  - name: PSU1
+    position: '1'
+interfaces:
+  - name: me0
+    type: 1000base-t
+    mgmt_only: true
+  - name: ge-0/0/0
+    type: 1000base-t
+  - name: ge-0/0/1
+    type: 1000base-t
+  - name: ge-0/0/2
+    type: 1000base-t
+  - name: ge-0/0/3
+    type: 1000base-t
+  - name: ge-0/0/4
+    type: 1000base-t
+  - name: ge-0/0/5
+    type: 1000base-t
+  - name: ge-0/0/6
+    type: 1000base-t
+  - name: ge-0/0/7
+    type: 1000base-t
+  - name: ge-0/0/8
+    type: 1000base-t
+  - name: ge-0/0/9
+    type: 1000base-t
+  - name: ge-0/0/10
+    type: 1000base-t
+  - name: ge-0/0/11
+    type: 1000base-t
+  - name: ge-0/0/12
+    type: 1000base-t
+  - name: ge-0/0/13
+    type: 1000base-t
+  - name: ge-0/0/14
+    type: 1000base-t
+  - name: ge-0/0/15
+    type: 1000base-t
+  - name: ge-0/0/16
+    type: 1000base-t
+  - name: ge-0/0/17
+    type: 1000base-t
+  - name: ge-0/0/18
+    type: 1000base-t
+  - name: ge-0/0/19
+    type: 1000base-t
+  - name: ge-0/0/20
+    type: 1000base-t
+  - name: ge-0/0/21
+    type: 1000base-t
+  - name: ge-0/0/22
+    type: 1000base-t
+  - name: ge-0/0/23
+    type: 1000base-t
+  - name: ge-0/0/24
+    type: 1000base-t
+  - name: ge-0/0/25
+    type: 1000base-t
+  - name: ge-0/0/26
+    type: 1000base-t
+  - name: ge-0/0/27
+    type: 1000base-t
+  - name: ge-0/0/28
+    type: 1000base-t
+  - name: ge-0/0/29
+    type: 1000base-t
+  - name: ge-0/0/30
+    type: 1000base-t
+  - name: ge-0/0/31
+    type: 1000base-t
+  - name: ge-0/0/32
+    type: 1000base-t
+  - name: ge-0/0/33
+    type: 1000base-t
+  - name: ge-0/0/34
+    type: 1000base-t
+  - name: ge-0/0/35
+    type: 1000base-t
+  - name: ge-0/0/36
+    type: 1000base-t
+  - name: ge-0/0/37
+    type: 1000base-t
+  - name: ge-0/0/38
+    type: 1000base-t
+  - name: ge-0/0/39
+    type: 1000base-t
+  - name: ge-0/0/40
+    type: 1000base-t
+  - name: ge-0/0/41
+    type: 1000base-t
+  - name: ge-0/0/42
+    type: 1000base-t
+  - name: ge-0/0/43
+    type: 1000base-t
+  - name: ge-0/0/44
+    type: 1000base-t
+  - name: ge-0/0/45
+    type: 1000base-t
+  - name: ge-0/0/46
+    type: 1000base-t
+  - name: ge-0/0/47
+    type: 1000base-t
+  - name: et-0/1/0
+    type: 40gbase-x-qsfpp
+  - name: et-0/1/1
+    type: 40gbase-x-qsfpp
+  - name: ge-0/2/0
+    type: 1000base-x-sfp
+  - name: ge-0/2/1
+    type: 1000base-x-sfp
+  - name: ge-0/2/2
+    type: 1000base-x-sfp
+  - name: ge-0/2/3
+    type: 1000base-x-sfp
+  - name: xe-0/2/0
+    type: 10gbase-x-sfpp
+  - name: xe-0/2/1
+    type: 10gbase-x-sfpp
+  - name: xe-0/2/2
+    type: 10gbase-x-sfpp
+  - name: xe-0/2/3
+    type: 10gbase-x-sfpp
diff --git a/device-types/Juniper/EX3400-48T.yaml b/device-types/Juniper/EX3400-48T.yaml
index 1da7cf89..11339348 100644
--- a/device-types/Juniper/EX3400-48T.yaml
+++ b/device-types/Juniper/EX3400-48T.yaml
@@ -1,9 +1,27 @@
 ---
 manufacturer: Juniper
 model: EX3400-48T
+part_number: EX3400-48T
 slug: juniper-ex3400-48t
 u_height: 1
+airflow: front-to-rear
+weight: 10.49
+weight_unit: lb
+comments: '[Juniper EX3400 Hardware Guide](https://www.juniper.net/content/dam/www/assets/datasheets/us/en/switches/ex3400-ethernet-switch-datasheet.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+  - name: Console (USB)
+    type: usb-mini-b
+module-bays:
+  - name: PSU0
+    position: '0'
+  - name: PSU1
+    position: '1'
 interfaces:
+  - name: me0
+    type: 1000base-t
+    mgmt_only: true
   - name: ge-0/0/0
     type: 1000base-t
   - name: ge-0/0/1
@@ -120,18 +138,3 @@ interfaces:
     type: 10gbase-x-sfpp
   - name: xe-0/2/3
     type: 10gbase-x-sfpp
-  - name: me0
-    type: 1000base-t
-    mgmt_only: true
-power-ports:
-  - name: PSU0
-    type: iec-60320-c14
-    maximum_draw: 150
-  - name: PSU1
-    type: iec-60320-c14
-    maximum_draw: 150
-console-ports:
-  - name: Console
-    type: rj-45
-  - name: Console (USB)
-    type: usb-mini-b
diff --git a/module-types/Juniper/JPSU-600-AC-AFO.yaml b/module-types/Juniper/JPSU-600-AC-AFO.yaml
new file mode 100644
index 00000000..f16e9b2a
--- /dev/null
+++ b/module-types/Juniper/JPSU-600-AC-AFO.yaml
@@ -0,0 +1,9 @@
+---
+manufacturer: Juniper
+model: JPSU-600-AC-AFO
+comments: |
+  EX Series 600 W AC power supply (front-to-back airflow)
+power-ports:
+  - name: Power Supply {module}
+    type: iec-60320-c14
+    maximum_draw: 600
diff --git a/module-types/Juniper/JPSU-920-AC-AFO.yaml b/module-types/Juniper/JPSU-920-AC-AFO.yaml
new file mode 100644
index 00000000..b4570330
--- /dev/null
+++ b/module-types/Juniper/JPSU-920-AC-AFO.yaml
@@ -0,0 +1,9 @@
+---
+manufacturer: Juniper
+model: JPSU-920-AC-AFO
+comments: |
+  EX Series 920 W AC power supply (front-to-back airflow)
+power-ports:
+  - name: Power Supply {module}
+    type: iec-60320-c14
+    maximum_draw: 920
-- 
GitLab