From 5ae646ba8b20277fd0b468d7b0b46a5a31be7017 Mon Sep 17 00:00:00 2001
From: dar72 <dar7272@gmail.com>
Date: Wed, 19 Jul 2023 19:00:30 +0100
Subject: [PATCH] Juniper device and module updates (#1429)

* Create NEMI.yaml

* Create NTU-GE.yaml

* Update NEMI.yaml

* Update NTU-GE.yaml

* Create FSP-150-CM.yaml

* Update FSP-150-CM.yaml

Fix indentations

* Update NEMI.yaml

Fix indentations

* Update NTU-GE.yaml

Fix indentations

* Update FSP-150-CM.yaml

Fix part_number

* Update NEMI.yaml

Fix part_number

* Update NTU-GE.yaml

Fix part_number

* Update FSP-150-CM.yaml

Formatting

* Update FSP-150-CM.yaml

Formatting

* Update NTU-GE.yaml

Formatting

* Update NEMI.yaml

Formatting

* Update FSP-150-CM.yaml

Formatting

* Update FSP-150-CM.yaml

Naming

* Update NEMI.yaml

YAML Fixes

* Update FSP-150-CM.yaml

Slug

* Update FSP-150-CM.yaml

Fix module bay definitions

* Update FSP-150-CM.yaml

Formatting

* Update FSP-150-CM.yaml

Fix module bays

* Update NEMI.yaml

* Update NTU-GE.yaml

* Update FSP-150-CM.yaml

Move PSUs to modules

* Create FSP-150-CM-PSU.yaml

* New modules for MX routers

* Juniper stuff

* Juniper devices and moduleS

* Juniper device and module updates

* Naming fixes

* Whitespace fix

* Restore FSP-150-CM.yaml

---------

Co-authored-by: Daniel W. Anner <daniel.anner@danstechsupport.com>
---
 device-types/Juniper/EX4200-24F.yaml          | 124 ++++++++++
 device-types/Juniper/EX4200-24P.yaml          | 124 ++++++++++
 device-types/Juniper/EX4200-24PX.yaml         | 124 ++++++++++
 device-types/Juniper/EX4200-24T.yaml          |  88 +++++++
 device-types/Juniper/EX4200-48P.yaml          | 220 ++++++++++++++++++
 device-types/Juniper/EX4200-48PX.yaml         | 220 ++++++++++++++++++
 device-types/Juniper/EX4200-48T.yaml          |  44 ++--
 device-types/Juniper/MX10.yaml                |  38 +++
 device-types/Juniper/MX240.yaml               |  28 ++-
 device-types/Juniper/MX40.yaml                |  38 +++
 device-types/Juniper/MX480.yaml               |  34 ++-
 device-types/Juniper/MX5.yaml                 |  38 +++
 device-types/Juniper/MX80.yaml                |   3 +
 .../Juniper/MX960-With-Cable-Management.yaml  |  56 +++++
 device-types/Juniper/MX960.yaml               |  50 +++-
 module-types/Juniper/DPC-R-40GE-SFP-B.yaml    |  93 ++++++++
 module-types/Juniper/DPCE-R-40GE-TX-A.yaml    |  93 ++++++++
 module-types/Juniper/EX-PWR-320-AC.yml        |   8 +
 module-types/Juniper/EX-PWR-600-AC.yml        |   8 +
 module-types/Juniper/EX-PWR-930-AC.yml        |   8 +
 module-types/Juniper/EX-UM-2XFP.yaml          |   9 +
 .../Juniper/MPC3E-2x-MIC-3D-20GE-SFP.yaml     |  85 +++++++
 .../Juniper/MPC3E-MIC-3D-20GE-SFP.yaml        |  45 ++++
 module-types/Juniper/MPC4E-3D-32XGE-SFPP.yaml |  69 ++++++
 module-types/Juniper/MPC7E-MRATE.yaml         |  29 +++
 module-types/Juniper/PWR-MX480-1200-AC.yml    |   8 +
 module-types/Juniper/PWR-MX480-2520-AC.yml    |   8 +
 module-types/Juniper/PWR-MX80-AC-S-B.yml      |  11 +
 module-types/Juniper/RE-S-1300-2048.yaml      |  13 ++
 module-types/Juniper/RE-S-2000-4096.yaml      |  13 ++
 30 files changed, 1698 insertions(+), 31 deletions(-)
 create mode 100644 device-types/Juniper/EX4200-24F.yaml
 create mode 100644 device-types/Juniper/EX4200-24P.yaml
 create mode 100644 device-types/Juniper/EX4200-24PX.yaml
 create mode 100644 device-types/Juniper/EX4200-24T.yaml
 create mode 100644 device-types/Juniper/EX4200-48P.yaml
 create mode 100644 device-types/Juniper/EX4200-48PX.yaml
 create mode 100644 device-types/Juniper/MX10.yaml
 create mode 100644 device-types/Juniper/MX40.yaml
 create mode 100644 device-types/Juniper/MX5.yaml
 create mode 100644 device-types/Juniper/MX960-With-Cable-Management.yaml
 create mode 100644 module-types/Juniper/DPC-R-40GE-SFP-B.yaml
 create mode 100644 module-types/Juniper/DPCE-R-40GE-TX-A.yaml
 create mode 100644 module-types/Juniper/EX-PWR-320-AC.yml
 create mode 100644 module-types/Juniper/EX-PWR-600-AC.yml
 create mode 100644 module-types/Juniper/EX-PWR-930-AC.yml
 create mode 100644 module-types/Juniper/EX-UM-2XFP.yaml
 create mode 100644 module-types/Juniper/MPC3E-2x-MIC-3D-20GE-SFP.yaml
 create mode 100644 module-types/Juniper/MPC3E-MIC-3D-20GE-SFP.yaml
 create mode 100644 module-types/Juniper/MPC4E-3D-32XGE-SFPP.yaml
 create mode 100644 module-types/Juniper/MPC7E-MRATE.yaml
 create mode 100644 module-types/Juniper/PWR-MX480-1200-AC.yml
 create mode 100644 module-types/Juniper/PWR-MX480-2520-AC.yml
 create mode 100644 module-types/Juniper/PWR-MX80-AC-S-B.yml
 create mode 100644 module-types/Juniper/RE-S-1300-2048.yaml
 create mode 100644 module-types/Juniper/RE-S-2000-4096.yaml

diff --git a/device-types/Juniper/EX4200-24F.yaml b/device-types/Juniper/EX4200-24F.yaml
new file mode 100644
index 00000000..ef5c134c
--- /dev/null
+++ b/device-types/Juniper/EX4200-24F.yaml
@@ -0,0 +1,124 @@
+---
+manufacturer: Juniper
+model: EX4200-24F
+slug: juniper-ex4200-24f
+u_height: 1
+is_full_depth: true
+weight: 7.3
+weight_unit: kg
+comments: '[Juniper EX4200 Data Sheet](https://www.juniper.net/assets/us/en/local/pdf/datasheets/1000215-en.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+interfaces:
+  - name: ge-0/0/0
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/1
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/2
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/3
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/4
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/5
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/6
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/7
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/8
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/9
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/10
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/11
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/12
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/13
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/14
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/15
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/16
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/17
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/18
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/19
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/20
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/21
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/22
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/23
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: vcp-0
+    label: Virtual Chassis Port 0
+    type: other
+  - name: vcp-1
+    label: Virtual Chassis Port 1
+    type: other
+module-bays:
+  - name: Power Supply 0
+    label: PSU 0
+    position: PSU0
+  - name: Power Supply 1
+    label: PSU 1
+    position: PSU1
+  - name: Uplink Module
+    position: '1'
diff --git a/device-types/Juniper/EX4200-24P.yaml b/device-types/Juniper/EX4200-24P.yaml
new file mode 100644
index 00000000..364cd345
--- /dev/null
+++ b/device-types/Juniper/EX4200-24P.yaml
@@ -0,0 +1,124 @@
+---
+manufacturer: Juniper
+model: EX4200-24P
+slug: juniper-ex4200-24p
+u_height: 1
+is_full_depth: true
+weight: 7.8
+weight_unit: kg
+comments: '[Juniper EX4200 Data Sheet](https://www.juniper.net/assets/us/en/local/pdf/datasheets/1000215-en.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+interfaces:
+  - 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: vcp-0
+    label: Virtual Chassis Port 0
+    type: other
+  - name: vcp-1
+    label: Virtual Chassis Port 1
+    type: other
+module-bays:
+  - name: Power Supply 0
+    label: PSU 0
+    position: PSU0
+  - name: Power Supply 1
+    label: PSU 1
+    position: PSU1
+  - name: Uplink Module
+    position: '1'
diff --git a/device-types/Juniper/EX4200-24PX.yaml b/device-types/Juniper/EX4200-24PX.yaml
new file mode 100644
index 00000000..25ab616f
--- /dev/null
+++ b/device-types/Juniper/EX4200-24PX.yaml
@@ -0,0 +1,124 @@
+---
+manufacturer: Juniper
+model: EX4200-24PX
+slug: juniper-ex4200-24px
+u_height: 1
+is_full_depth: true
+weight: 8.16
+weight_unit: kg
+comments: '[Juniper EX4200 Data Sheet](https://www.juniper.net/assets/us/en/local/pdf/datasheets/1000215-en.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+interfaces:
+  - name: ge-0/0/0
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/1
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/2
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/3
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/4
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/5
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/6
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/7
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/8
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/9
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/10
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/11
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/12
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/13
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/14
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/15
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/16
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/17
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/18
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/19
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/20
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/21
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/22
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/23
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: vcp-0
+    label: Virtual Chassis Port 0
+    type: other
+  - name: vcp-1
+    label: Virtual Chassis Port 1
+    type: other
+module-bays:
+  - name: Power Supply 0
+    label: PSU 0
+    position: PSU0
+  - name: Power Supply 1
+    label: PSU 1
+    position: PSU1
+  - name: Uplink Module
+    position: '1'
diff --git a/device-types/Juniper/EX4200-24T.yaml b/device-types/Juniper/EX4200-24T.yaml
new file mode 100644
index 00000000..a9a1adfb
--- /dev/null
+++ b/device-types/Juniper/EX4200-24T.yaml
@@ -0,0 +1,88 @@
+---
+manufacturer: Juniper
+model: EX4200-24T
+slug: juniper-ex4200-24t
+u_height: 1
+is_full_depth: true
+weight: 7.5
+weight_unit: kg
+comments: '[Juniper EX4200 Data Sheet](https://www.juniper.net/assets/us/en/local/pdf/datasheets/1000215-en.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+interfaces:
+  - 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
+  - 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
+module-bays:
+  - name: Power Supply 0
+    label: PSU 0
+    position: PSU0
+  - name: Power Supply 1
+    label: PSU 1
+    position: PSU1
+  - name: Uplink Module
+    position: '1'
diff --git a/device-types/Juniper/EX4200-48P.yaml b/device-types/Juniper/EX4200-48P.yaml
new file mode 100644
index 00000000..b24abae7
--- /dev/null
+++ b/device-types/Juniper/EX4200-48P.yaml
@@ -0,0 +1,220 @@
+---
+manufacturer: Juniper
+model: EX4200-48P
+slug: juniper-ex4200-48p
+u_height: 1
+is_full_depth: true
+weight: 8.3
+weight_unit: kg
+comments: '[Juniper EX4200 Data Sheet](https://www.juniper.net/assets/us/en/local/pdf/datasheets/1000215-en.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+interfaces:
+  - 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: vcp-0
+    label: Virtual Chassis Port 0
+    type: other
+  - name: vcp-1
+    label: Virtual Chassis Port 1
+    type: other
+module-bays:
+  - name: Power Supply 0
+    label: PSU 0
+    position: PSU0
+  - name: Power Supply 1
+    label: PSU 1
+    position: PSU1
+  - name: Uplink Module
+    position: '1'
diff --git a/device-types/Juniper/EX4200-48PX.yaml b/device-types/Juniper/EX4200-48PX.yaml
new file mode 100644
index 00000000..00d545ba
--- /dev/null
+++ b/device-types/Juniper/EX4200-48PX.yaml
@@ -0,0 +1,220 @@
+---
+manufacturer: Juniper
+model: EX4200-48PX
+slug: juniper-ex4200-48px
+u_height: 1
+is_full_depth: true
+weight: 8.61
+weight_unit: kg
+comments: '[Juniper EX4200 Data Sheet](https://www.juniper.net/assets/us/en/local/pdf/datasheets/1000215-en.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+interfaces:
+  - name: ge-0/0/0
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/1
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/2
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/3
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/4
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/5
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/6
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/7
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/8
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/9
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/10
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/11
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/12
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/13
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/14
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/15
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/16
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/17
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/18
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/19
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/20
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/21
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/22
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/23
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/24
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/25
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/26
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/27
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/28
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/29
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/30
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/31
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/32
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/33
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/34
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/35
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/36
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/37
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/38
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/39
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/40
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/41
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/42
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/43
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/44
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/45
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/46
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/47
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: vcp-0
+    label: Virtual Chassis Port 0
+    type: other
+  - name: vcp-1
+    label: Virtual Chassis Port 1
+    type: other
+module-bays:
+  - name: Power Supply 0
+    label: PSU 0
+    position: PSU0
+  - name: Power Supply 1
+    label: PSU 1
+    position: PSU1
+  - name: Uplink Module
+    position: '1'
diff --git a/device-types/Juniper/EX4200-48T.yaml b/device-types/Juniper/EX4200-48T.yaml
index 5b40f5b9..1a88d39a 100644
--- a/device-types/Juniper/EX4200-48T.yaml
+++ b/device-types/Juniper/EX4200-48T.yaml
@@ -4,6 +4,8 @@ model: EX4200-48T
 slug: juniper-ex4200-48t
 u_height: 1
 is_full_depth: true
+weight: 7.8
+weight_unit: kg
 comments: '[Juniper EX4200 Data Sheet](https://www.juniper.net/assets/us/en/local/pdf/datasheets/1000215-en.pdf)'
 console-ports:
   - name: Console
@@ -11,22 +13,40 @@ console-ports:
 interfaces:
   - 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
   - name: ge-0/0/10
@@ -105,18 +125,12 @@ interfaces:
     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: et-0/1/2
-    type: 40gbase-x-qsfpp
-  - name: et-0/1/3
-    type: 40gbase-x-qsfpp
-power-ports:
-  - name: PSU0
-    type: iec-60320-c14
-    maximum_draw: 350
-  - name: PSU1
-    type: iec-60320-c14
-    maximum_draw: 350
+module-bays:
+  - name: Power Supply 0
+    label: PSU 0
+    position: PSU0
+  - name: Power Supply 1
+    label: PSU 1
+    position: PSU1
+  - name: Uplink Module
+    position: '1'
diff --git a/device-types/Juniper/MX10.yaml b/device-types/Juniper/MX10.yaml
new file mode 100644
index 00000000..11abbfd9
--- /dev/null
+++ b/device-types/Juniper/MX10.yaml
@@ -0,0 +1,38 @@
+---
+manufacturer: Juniper
+model: MX10
+slug: juniper-mx10
+airflow: front-to-rear
+weight: 13.6
+weight_unit: kg
+is_full_depth: true
+u_height: 2
+interfaces:
+  - name: fxp0
+    type: 1000base-t
+    mgmt_only: true
+  - name: xe-0/0/0
+    type: 10gbase-x-xfp
+  - name: xe-0/0/1
+    type: 10gbase-x-xfp
+  - name: xe-0/0/2
+    type: 10gbase-x-xfp
+  - name: xe-0/0/3
+    type: 10gbase-x-xfp
+power-ports:
+  - name: PEM0
+    type: iec-60320-c14
+    maximum_draw: 500
+    allocated_draw: 365
+  - name: PEM1
+    type: iec-60320-c14
+    maximum_draw: 500
+    allocated_draw: 365
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: MIC0
+    position: '1'
+  - name: MIC1
+    position: '2'
diff --git a/device-types/Juniper/MX240.yaml b/device-types/Juniper/MX240.yaml
index ca165f89..5dda735f 100644
--- a/device-types/Juniper/MX240.yaml
+++ b/device-types/Juniper/MX240.yaml
@@ -2,15 +2,31 @@
 manufacturer: Juniper
 model: MX240
 slug: juniper-mx240
+comments: '[Juniper MX240 Data Sheet](https://www.juniper.net/us/en/products-services/routing/mx-series/mx240/)'
 u_height: 5
 is_full_depth: true
-comments: '[Juniper MX240 Data Sheet](https://www.juniper.net/us/en/products-services/routing/mx-series/mx240/)'
 module-bays:
-  - name: PSU0
+  - name: PEM0
+    label: PSU 0
+    position: PSU0
+  - name: PEM1
+    label: PSU 1
+    position: PSU1
+  - name: PEM2
+    label: PSU 2
+    position: PSU2
+  - name: PEM3
+    label: PSU 3
+    position: PSU3
+  - name: CB0
+    label: Routing Engine 0
+    position: re0
+  - name: CB1
+    label: Routing Engine 1
+    position: re1
+  - name: FPC 0
     position: '0'
-  - name: PSU1
+  - name: FPC 1
     position: '1'
-  - name: PSU2
+  - name: FPC 2
     position: '2'
-  - name: PSU3
-    position: '3'
diff --git a/device-types/Juniper/MX40.yaml b/device-types/Juniper/MX40.yaml
new file mode 100644
index 00000000..d3a9eabb
--- /dev/null
+++ b/device-types/Juniper/MX40.yaml
@@ -0,0 +1,38 @@
+---
+manufacturer: Juniper
+model: MX40
+slug: juniper-mx40
+airflow: front-to-rear
+weight: 13.6
+weight_unit: kg
+is_full_depth: true
+u_height: 2
+interfaces:
+  - name: fxp0
+    type: 1000base-t
+    mgmt_only: true
+  - name: xe-0/0/0
+    type: 10gbase-x-xfp
+  - name: xe-0/0/1
+    type: 10gbase-x-xfp
+  - name: xe-0/0/2
+    type: 10gbase-x-xfp
+  - name: xe-0/0/3
+    type: 10gbase-x-xfp
+power-ports:
+  - name: PEM0
+    type: iec-60320-c14
+    maximum_draw: 500
+    allocated_draw: 365
+  - name: PEM1
+    type: iec-60320-c14
+    maximum_draw: 500
+    allocated_draw: 365
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: MIC0
+    position: '1'
+  - name: MIC1
+    position: '2'
diff --git a/device-types/Juniper/MX480.yaml b/device-types/Juniper/MX480.yaml
index 1a51dd00..0384ecce 100644
--- a/device-types/Juniper/MX480.yaml
+++ b/device-types/Juniper/MX480.yaml
@@ -2,15 +2,39 @@
 manufacturer: Juniper
 model: MX480
 slug: juniper-mx480
+airflow: front-to-rear
+weight: 29.7
+weight_unit: kg
 u_height: 8
 is_full_depth: true
-comments: '[Juniper MX480 Data Sheet](https://www.juniper.net/us/en/products-services/routing/mx-series/mx480/)'
 module-bays:
-  - name: PSU0
+  - name: PEM0
+    label: PSU 0
+    position: PSU0
+  - name: PEM1
+    label: PSU 1
+    position: PSU1
+  - name: PEM2
+    label: PSU 2
+    position: PSU2
+  - name: PEM3
+    label: PSU 3
+    position: PSU3
+  - name: CB0
+    label: Routing Engine 0
+    position: re0
+  - name: CB1
+    label: Routing Engine 1
+    position: re1
+  - name: FPC 0
     position: '0'
-  - name: PSU1
+  - name: FPC 1
     position: '1'
-  - name: PSU2
+  - name: FPC 2
     position: '2'
-  - name: PSU3
+  - name: FPC 3
     position: '3'
+  - name: FPC 4
+    position: '4'
+  - name: FPC 5
+    position: '5'
diff --git a/device-types/Juniper/MX5.yaml b/device-types/Juniper/MX5.yaml
new file mode 100644
index 00000000..8bfd11cf
--- /dev/null
+++ b/device-types/Juniper/MX5.yaml
@@ -0,0 +1,38 @@
+---
+manufacturer: Juniper
+model: MX5
+slug: juniper-mx5
+airflow: front-to-rear
+weight: 13.6
+weight_unit: kg
+is_full_depth: true
+u_height: 2
+interfaces:
+  - name: fxp0
+    type: 1000base-t
+    mgmt_only: true
+  - name: xe-0/0/0
+    type: 10gbase-x-xfp
+  - name: xe-0/0/1
+    type: 10gbase-x-xfp
+  - name: xe-0/0/2
+    type: 10gbase-x-xfp
+  - name: xe-0/0/3
+    type: 10gbase-x-xfp
+power-ports:
+  - name: PEM0
+    type: iec-60320-c14
+    maximum_draw: 500
+    allocated_draw: 365
+  - name: PEM1
+    type: iec-60320-c14
+    maximum_draw: 500
+    allocated_draw: 365
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: MIC0
+    position: '1'
+  - name: MIC1
+    position: '2'
diff --git a/device-types/Juniper/MX80.yaml b/device-types/Juniper/MX80.yaml
index 2f69dd78..d80ccd7a 100644
--- a/device-types/Juniper/MX80.yaml
+++ b/device-types/Juniper/MX80.yaml
@@ -2,6 +2,9 @@
 manufacturer: Juniper
 model: MX80
 slug: juniper-mx80
+airflow: front-to-rear
+weight: 13.6
+weight_unit: kg
 is_full_depth: true
 u_height: 2
 interfaces:
diff --git a/device-types/Juniper/MX960-With-Cable-Management.yaml b/device-types/Juniper/MX960-With-Cable-Management.yaml
new file mode 100644
index 00000000..4be1545c
--- /dev/null
+++ b/device-types/Juniper/MX960-With-Cable-Management.yaml
@@ -0,0 +1,56 @@
+---
+manufacturer: Juniper
+model: MX960 With Cable Management
+slug: juniper-mx960-cm
+airflow: front-to-rear
+weight: 78.93
+weight_unit: kg
+comments: MX960 with extended cable management installed
+u_height: 20
+is_full_depth: true
+module-bays:
+  - name: PEM0
+    label: PSU 0
+    position: PSU0
+  - name: PEM1
+    label: PSU 1
+    position: PSU1
+  - name: PEM2
+    label: PSU 2
+    position: PSU2
+  - name: PEM3
+    label: PSU 3
+    position: PSU3
+  - name: FPC 0
+    position: '0'
+  - name: FPC 1
+    position: '1'
+  - name: FPC 2
+    position: '2'
+  - name: FPC 3
+    position: '3'
+  - name: FPC 4
+    position: '4'
+  - name: FPC 5
+    position: '5'
+  - name: CB0
+    label: Routing Engine 0
+    position: re0
+  - name: CB1
+    label: Routing Engine 1
+    position: re1
+  - name: CB2
+    label: Routing Engine 2
+    position: re2
+  - name: FPC 6
+    position: '6'
+  - name: FPC 7
+    position: '7'
+  - name: FPC 8
+    position: '8'
+  - name: FPC 9
+    position: '9'
+  - name: FPC 10
+    position: '10'
+  - name: FPC 11
+    position: '11'
diff --git a/device-types/Juniper/MX960.yaml b/device-types/Juniper/MX960.yaml
index a455331c..3dc22594 100644
--- a/device-types/Juniper/MX960.yaml
+++ b/device-types/Juniper/MX960.yaml
@@ -2,15 +2,55 @@
 manufacturer: Juniper
 model: MX960
 slug: juniper-mx960
+airflow: front-to-rear
+weight: 68.04
+weight_unit: kg
+comments: '[Juniper MX960 Data Sheet](https://www.juniper.net/us/en/products-services/routing/mx-series/mx960/)'
 u_height: 16
 is_full_depth: true
-comments: '[Juniper MX960 Data Sheet](https://www.juniper.net/us/en/products-services/routing/mx-series/mx960/)'
 module-bays:
-  - name: PSU0
+  - name: PEM0
+    label: PSU 0
+    position: PSU0
+  - name: PEM1
+    label: PSU 1
+    position: PSU1
+  - name: PEM2
+    label: PSU 2
+    position: PSU2
+  - name: PEM3
+    label: PSU 3
+    position: PSU3
+  - name: FPC 0
     position: '0'
-  - name: PSU1
+  - name: FPC 1
     position: '1'
-  - name: PSU2
+  - name: FPC 2
     position: '2'
-  - name: PSU3
+  - name: FPC 3
     position: '3'
+  - name: FPC 4
+    position: '4'
+  - name: FPC 5
+    position: '5'
+  - name: CB0
+    label: Routing Engine 0
+    position: re0
+  - name: CB1
+    label: Routing Engine 1
+    position: re1
+  - name: CB2
+    label: Routing Engine 2
+    position: re2
+  - name: FPC 6
+    position: '6'
+  - name: FPC 7
+    position: '7'
+  - name: FPC 8
+    position: '8'
+  - name: FPC 9
+    position: '9'
+  - name: FPC 10
+    position: '10'
+  - name: FPC 11
+    position: '11'
diff --git a/module-types/Juniper/DPC-R-40GE-SFP-B.yaml b/module-types/Juniper/DPC-R-40GE-SFP-B.yaml
new file mode 100644
index 00000000..bfb2b241
--- /dev/null
+++ b/module-types/Juniper/DPC-R-40GE-SFP-B.yaml
@@ -0,0 +1,93 @@
+---
+manufacturer: Juniper
+model: DPC-R-40GE-SFP-B
+part_number: DPC-R-40GE-SFP-B
+interfaces:
+  - name: ge-{module}/0/0
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/1
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/2
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/3
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/4
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/5
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/6
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/7
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/8
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/9
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/10
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/0
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/1
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/2
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/3
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/4
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/5
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/6
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/7
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/8
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/9
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/10
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/0
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/1
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/2
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/3
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/4
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/5
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/6
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/7
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/8
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/9
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/10
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/0
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/1
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/2
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/3
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/4
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/5
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/6
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/7
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/8
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/9
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/10
+    type: 1000base-x-sfp
diff --git a/module-types/Juniper/DPCE-R-40GE-TX-A.yaml b/module-types/Juniper/DPCE-R-40GE-TX-A.yaml
new file mode 100644
index 00000000..bd4aa19d
--- /dev/null
+++ b/module-types/Juniper/DPCE-R-40GE-TX-A.yaml
@@ -0,0 +1,93 @@
+---
+manufacturer: Juniper
+model: DPCE-R-40GE-TX-A
+part_number: DPCE-R-40GE-TX-A
+interfaces:
+  - name: ge-{module}/0/0
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/1
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/2
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/3
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/4
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/5
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/6
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/7
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/8
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/9
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/10
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/0
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/1
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/2
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/3
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/4
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/5
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/6
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/7
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/8
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/9
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/10
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/0
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/1
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/2
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/3
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/4
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/5
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/6
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/7
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/8
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/9
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/10
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/0
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/1
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/2
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/3
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/4
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/5
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/6
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/7
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/8
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/9
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/10
+    type: 1000base-x-sfp
diff --git a/module-types/Juniper/EX-PWR-320-AC.yml b/module-types/Juniper/EX-PWR-320-AC.yml
new file mode 100644
index 00000000..4252a506
--- /dev/null
+++ b/module-types/Juniper/EX-PWR-320-AC.yml
@@ -0,0 +1,8 @@
+---
+manufacturer: Juniper
+model: EX-PWR-320-AC
+part_number: 740-020957
+power-ports:
+  - name: PSU {module}
+    type: iec-60320-c14
+    maximum_draw: 320
diff --git a/module-types/Juniper/EX-PWR-600-AC.yml b/module-types/Juniper/EX-PWR-600-AC.yml
new file mode 100644
index 00000000..12fae40a
--- /dev/null
+++ b/module-types/Juniper/EX-PWR-600-AC.yml
@@ -0,0 +1,8 @@
+---
+manufacturer: Juniper
+model: EX-PWR-600-AC
+part_number: EX-PWR-600-AC
+power-ports:
+  - name: PSU {module}
+    type: iec-60320-c14
+    maximum_draw: 600
diff --git a/module-types/Juniper/EX-PWR-930-AC.yml b/module-types/Juniper/EX-PWR-930-AC.yml
new file mode 100644
index 00000000..c092db70
--- /dev/null
+++ b/module-types/Juniper/EX-PWR-930-AC.yml
@@ -0,0 +1,8 @@
+---
+manufacturer: Juniper
+model: EX-PWR-930-AC
+part_number: 740-020959
+power-ports:
+  - name: PSU {module}
+    type: iec-60320-c14
+    maximum_draw: 930
diff --git a/module-types/Juniper/EX-UM-2XFP.yaml b/module-types/Juniper/EX-UM-2XFP.yaml
new file mode 100644
index 00000000..eb3529f8
--- /dev/null
+++ b/module-types/Juniper/EX-UM-2XFP.yaml
@@ -0,0 +1,9 @@
+---
+manufacturer: Juniper
+model: EX-UM-2XFP
+part_number: EX-UM-2XFP
+interfaces:
+  - name: et-{module}/0/0
+    type: 10gbase-x-xfp
+  - name: et-{module}/0/1
+    type: 10gbase-x-xfp
diff --git a/module-types/Juniper/MPC3E-2x-MIC-3D-20GE-SFP.yaml b/module-types/Juniper/MPC3E-2x-MIC-3D-20GE-SFP.yaml
new file mode 100644
index 00000000..933945a4
--- /dev/null
+++ b/module-types/Juniper/MPC3E-2x-MIC-3D-20GE-SFP.yaml
@@ -0,0 +1,85 @@
+---
+manufacturer: Juniper
+model: MPC3E with 2x MIC-3D-20GE-SFP
+part_number: MPC3E-2x-MIC-3D-20GE-SFP
+interfaces:
+  - name: ge-{module}/0/0
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/1
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/2
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/3
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/4
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/5
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/6
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/7
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/8
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/9
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/0
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/1
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/2
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/3
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/4
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/5
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/6
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/7
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/8
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/9
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/0
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/1
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/2
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/3
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/4
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/5
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/6
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/7
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/8
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/9
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/0
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/1
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/2
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/3
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/4
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/5
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/6
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/7
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/8
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/9
+    type: 1000base-x-sfp
diff --git a/module-types/Juniper/MPC3E-MIC-3D-20GE-SFP.yaml b/module-types/Juniper/MPC3E-MIC-3D-20GE-SFP.yaml
new file mode 100644
index 00000000..e11de47b
--- /dev/null
+++ b/module-types/Juniper/MPC3E-MIC-3D-20GE-SFP.yaml
@@ -0,0 +1,45 @@
+---
+manufacturer: Juniper
+model: MPC3E with MIC-3D-20GE-SFP
+part_number: MPC3E-MIC-3D-20GE-SFP
+interfaces:
+  - name: ge-{module}/0/0
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/1
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/2
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/3
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/4
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/5
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/6
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/7
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/8
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/9
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/0
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/1
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/2
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/3
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/4
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/5
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/6
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/7
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/8
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/9
+    type: 1000base-x-sfp
diff --git a/module-types/Juniper/MPC4E-3D-32XGE-SFPP.yaml b/module-types/Juniper/MPC4E-3D-32XGE-SFPP.yaml
new file mode 100644
index 00000000..d7fa0849
--- /dev/null
+++ b/module-types/Juniper/MPC4E-3D-32XGE-SFPP.yaml
@@ -0,0 +1,69 @@
+---
+manufacturer: Juniper
+model: MPC4E-3D-32XGE-SFPP
+part_number: 750-037358
+interfaces:
+  - name: xe-{module}/0/0
+    type: 1000base-x-sfp
+  - name: xe-{module}/0/1
+    type: 1000base-x-sfp
+  - name: xe-{module}/0/2
+    type: 1000base-x-sfp
+  - name: xe-{module}/0/3
+    type: 1000base-x-sfp
+  - name: xe-{module}/0/4
+    type: 1000base-x-sfp
+  - name: xe-{module}/0/5
+    type: 1000base-x-sfp
+  - name: xe-{module}/0/6
+    type: 1000base-x-sfp
+  - name: xe-{module}/0/7
+    type: 1000base-x-sfp
+  - name: xe-{module}/1/0
+    type: 1000base-x-sfp
+  - name: xe-{module}/1/1
+    type: 1000base-x-sfp
+  - name: xe-{module}/1/2
+    type: 1000base-x-sfp
+  - name: xe-{module}/1/3
+    type: 1000base-x-sfp
+  - name: xe-{module}/1/4
+    type: 1000base-x-sfp
+  - name: xe-{module}/1/5
+    type: 1000base-x-sfp
+  - name: xe-{module}/1/6
+    type: 1000base-x-sfp
+  - name: xe-{module}/1/7
+    type: 1000base-x-sfp
+  - name: xe-{module}/2/0
+    type: 1000base-x-sfp
+  - name: xe-{module}/2/1
+    type: 1000base-x-sfp
+  - name: xe-{module}/2/2
+    type: 1000base-x-sfp
+  - name: xe-{module}/2/3
+    type: 1000base-x-sfp
+  - name: xe-{module}/2/4
+    type: 1000base-x-sfp
+  - name: xe-{module}/2/5
+    type: 1000base-x-sfp
+  - name: xe-{module}/2/6
+    type: 1000base-x-sfp
+  - name: xe-{module}/2/7
+    type: 1000base-x-sfp
+  - name: xe-{module}/3/0
+    type: 1000base-x-sfp
+  - name: xe-{module}/3/1
+    type: 1000base-x-sfp
+  - name: xe-{module}/3/2
+    type: 1000base-x-sfp
+  - name: xe-{module}/3/3
+    type: 1000base-x-sfp
+  - name: xe-{module}/3/4
+    type: 1000base-x-sfp
+  - name: xe-{module}/3/5
+    type: 1000base-x-sfp
+  - name: xe-{module}/3/6
+    type: 1000base-x-sfp
+  - name: xe-{module}/3/7
+    type: 1000base-x-sfp
diff --git a/module-types/Juniper/MPC7E-MRATE.yaml b/module-types/Juniper/MPC7E-MRATE.yaml
new file mode 100644
index 00000000..f0cf1277
--- /dev/null
+++ b/module-types/Juniper/MPC7E-MRATE.yaml
@@ -0,0 +1,29 @@
+---
+manufacturer: Juniper
+model: MPC7E-MRATE
+part_number: 750-056519
+interfaces:
+  - name: et-{module}/0/0
+    type: 40gbase-x-qsfpp
+  - name: et-{module}/0/1
+    type: 40gbase-x-qsfpp
+  - name: et-{module}/0/2
+    type: 100gbase-x-qsfp28
+  - name: et-{module}/0/3
+    type: 40gbase-x-qsfpp
+  - name: et-{module}/0/4
+    type: 40gbase-x-qsfpp
+  - name: et-{module}/0/5
+    type: 100gbase-x-qsfp28
+  - name: et-{module}/1/0
+    type: 40gbase-x-qsfpp
+  - name: et-{module}/1/1
+    type: 40gbase-x-qsfpp
+  - name: et-{module}/1/2
+    type: 100gbase-x-qsfp28
+  - name: et-{module}/1/3
+    type: 40gbase-x-qsfpp
+  - name: et-{module}/1/4
+    type: 40gbase-x-qsfpp
+  - name: et-{module}/1/5
+    type: 100gbase-x-qsfp28
diff --git a/module-types/Juniper/PWR-MX480-1200-AC.yml b/module-types/Juniper/PWR-MX480-1200-AC.yml
new file mode 100644
index 00000000..8ceca971
--- /dev/null
+++ b/module-types/Juniper/PWR-MX480-1200-AC.yml
@@ -0,0 +1,8 @@
+---
+manufacturer: Juniper
+model: PWR-MX480-1200-AC
+part_number: 740-022697
+power-ports:
+  - name: PSU {module}
+    type: iec-60320-c14
+    maximum_draw: 1590
diff --git a/module-types/Juniper/PWR-MX480-2520-AC.yml b/module-types/Juniper/PWR-MX480-2520-AC.yml
new file mode 100644
index 00000000..005debe8
--- /dev/null
+++ b/module-types/Juniper/PWR-MX480-2520-AC.yml
@@ -0,0 +1,8 @@
+---
+manufacturer: Juniper
+model: PWR-MX480-2520-AC
+part_number: PWR-MX480-2520-AC
+power-ports:
+  - name: PSU {module}
+    type: iec-60320-c14
+    maximum_draw: 2050
diff --git a/module-types/Juniper/PWR-MX80-AC-S-B.yml b/module-types/Juniper/PWR-MX80-AC-S-B.yml
new file mode 100644
index 00000000..74ece17e
--- /dev/null
+++ b/module-types/Juniper/PWR-MX80-AC-S-B.yml
@@ -0,0 +1,11 @@
+---
+manufacturer: Juniper
+model: PWR-MX80-AC-S-B
+part_number: COUPAFAEAB
+comments: PSU for MX5, MX10, MX40, MX80
+weight: 1.18
+weight_unit: kg
+power-ports:
+  - name: PSU {module}
+    type: iec-60320-c14
+    maximum_draw: 500
diff --git a/module-types/Juniper/RE-S-1300-2048.yaml b/module-types/Juniper/RE-S-1300-2048.yaml
new file mode 100644
index 00000000..6e38bad9
--- /dev/null
+++ b/module-types/Juniper/RE-S-1300-2048.yaml
@@ -0,0 +1,13 @@
+---
+manufacturer: Juniper
+model: RE-S-1300-2048
+part_number: RE-S-1300-2048
+console-ports:
+  - name: Console
+    type: rj-45
+  - name: AUX
+    type: rj-45
+interfaces:
+  - name: fxp0
+    type: 1000base-t
+    mgmt_only: true
diff --git a/module-types/Juniper/RE-S-2000-4096.yaml b/module-types/Juniper/RE-S-2000-4096.yaml
new file mode 100644
index 00000000..caa06fe8
--- /dev/null
+++ b/module-types/Juniper/RE-S-2000-4096.yaml
@@ -0,0 +1,13 @@
+---
+manufacturer: Juniper
+model: RE-S-2000-4096
+part_number: RE-S-2000-4096
+console-ports:
+  - name: Console
+    type: rj-45
+  - name: AUX
+    type: rj-45
+interfaces:
+  - name: fxp0
+    type: 1000base-t
+    mgmt_only: true
-- 
GitLab