From 9863d595c486ebe18ffc12470e94c8914833b491 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:25:02 +0200
Subject: [PATCH] Juniper EX4550 Family (Update) (#1509)

Co-authored-by: Daniel W. Anner <daniel.anner@danstechsupport.com>
---
 .../{EX4550-32F.yaml => EX4550-32F-AFI.yaml}  | 32 ++++---
 device-types/Juniper/EX4550-32F-AFO.yaml      | 89 +++++++++++++++++++
 device-types/Juniper/EX4550-32F-DC-AFI.yaml   | 89 +++++++++++++++++++
 device-types/Juniper/EX4550-32F-DC-AFO.yaml   | 89 +++++++++++++++++++
 device-types/Juniper/EX4550-32T-AFI.yaml      | 89 +++++++++++++++++++
 device-types/Juniper/EX4550-32T-AFO.yaml      | 89 +++++++++++++++++++
 device-types/Juniper/EX4550-32T-DC-AFI.yaml   | 89 +++++++++++++++++++
 device-types/Juniper/EX4550-32T-DC-AFO.yaml   | 89 +++++++++++++++++++
 module-types/Juniper/EX4550-EM-2QSFP.yaml     |  9 ++
 module-types/Juniper/EX4550-EM-8XSFP.yaml     | 21 +++++
 module-types/Juniper/EX4550-EM-8XT.yaml       | 21 +++++
 11 files changed, 692 insertions(+), 14 deletions(-)
 rename device-types/Juniper/{EX4550-32F.yaml => EX4550-32F-AFI.yaml} (81%)
 create mode 100644 device-types/Juniper/EX4550-32F-AFO.yaml
 create mode 100644 device-types/Juniper/EX4550-32F-DC-AFI.yaml
 create mode 100644 device-types/Juniper/EX4550-32F-DC-AFO.yaml
 create mode 100644 device-types/Juniper/EX4550-32T-AFI.yaml
 create mode 100644 device-types/Juniper/EX4550-32T-AFO.yaml
 create mode 100644 device-types/Juniper/EX4550-32T-DC-AFI.yaml
 create mode 100644 device-types/Juniper/EX4550-32T-DC-AFO.yaml
 create mode 100644 module-types/Juniper/EX4550-EM-2QSFP.yaml
 create mode 100644 module-types/Juniper/EX4550-EM-8XSFP.yaml
 create mode 100644 module-types/Juniper/EX4550-EM-8XT.yaml

diff --git a/device-types/Juniper/EX4550-32F.yaml b/device-types/Juniper/EX4550-32F-AFI.yaml
similarity index 81%
rename from device-types/Juniper/EX4550-32F.yaml
rename to device-types/Juniper/EX4550-32F-AFI.yaml
index 5308ab15..b2c5856b 100644
--- a/device-types/Juniper/EX4550-32F.yaml
+++ b/device-types/Juniper/EX4550-32F-AFI.yaml
@@ -1,10 +1,24 @@
 ---
 manufacturer: Juniper
-model: ex4550-32f
-slug: juniper-ex4550-32f
-is_full_depth: false
-part_number: ex4550-32f
+model: EX4550-32F-AFI
+slug: juniper-ex4550-32f-afi
+part_number: EX4550-32F-AFI
 u_height: 1
+weight: 19.4
+weight_unit: lb
+airflow: rear-to-front
+is_full_depth: false
+comments: '[Juniper EX4550 Data Sheet](https://www.juniper.net/assets/br/pt/local/pdf/datasheets/1000414-en.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: PSU 0
+    position: '0'
+  - name: PSU 1
+    position: '1'
+  - name: PIM 1
+    position: '2'
 interfaces:
   - name: me0
     type: 1000base-t
@@ -73,13 +87,3 @@ interfaces:
     type: 10gbase-x-sfpp
   - name: xe-0/0/31
     type: 10gbase-x-sfpp
-power-ports:
-  - name: PSU0
-    type: iec-60320-c14
-    maximum_draw: 650
-  - name: PSU1
-    type: iec-60320-c14
-    maximum_draw: 650
-console-ports:
-  - name: Console
-    type: rj-45
diff --git a/device-types/Juniper/EX4550-32F-AFO.yaml b/device-types/Juniper/EX4550-32F-AFO.yaml
new file mode 100644
index 00000000..4cf265ff
--- /dev/null
+++ b/device-types/Juniper/EX4550-32F-AFO.yaml
@@ -0,0 +1,89 @@
+---
+manufacturer: Juniper
+model: EX4550-32F-AFO
+slug: juniper-ex4550-32f-afo
+part_number: EX4550-32F-AFO
+u_height: 1
+weight: 19.4
+weight_unit: lb
+airflow: front-to-rear
+is_full_depth: false
+comments: '[Juniper EX4550 Data Sheet](https://www.juniper.net/assets/br/pt/local/pdf/datasheets/1000414-en.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: PSU 0
+    position: '0'
+  - name: PSU 1
+    position: '1'
+  - name: PIM 1
+    position: '2'
+interfaces:
+  - name: me0
+    type: 1000base-t
+    mgmt_only: true
+  - name: xe-0/0/0
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/1
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/2
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/3
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/4
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/5
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/6
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/7
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/8
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/9
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/10
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/11
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/12
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/13
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/14
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/15
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/16
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/17
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/18
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/19
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/20
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/21
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/22
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/23
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/24
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/25
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/26
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/27
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/28
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/29
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/30
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/31
+    type: 10gbase-x-sfpp
diff --git a/device-types/Juniper/EX4550-32F-DC-AFI.yaml b/device-types/Juniper/EX4550-32F-DC-AFI.yaml
new file mode 100644
index 00000000..d134e060
--- /dev/null
+++ b/device-types/Juniper/EX4550-32F-DC-AFI.yaml
@@ -0,0 +1,89 @@
+---
+manufacturer: Juniper
+model: EX4550-32F-DC-AFI
+slug: juniper-ex4550-32f-dc-afi
+part_number: EX4550-32F-DC-AFI
+u_height: 1
+weight: 19.4
+weight_unit: lb
+airflow: rear-to-front
+is_full_depth: false
+comments: '[Juniper EX4550 Data Sheet](https://www.juniper.net/assets/br/pt/local/pdf/datasheets/1000414-en.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: PSU 0
+    position: '0'
+  - name: PSU 1
+    position: '1'
+  - name: PIM 1
+    position: '2'
+interfaces:
+  - name: me0
+    type: 1000base-t
+    mgmt_only: true
+  - name: xe-0/0/0
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/1
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/2
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/3
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/4
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/5
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/6
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/7
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/8
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/9
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/10
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/11
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/12
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/13
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/14
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/15
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/16
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/17
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/18
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/19
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/20
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/21
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/22
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/23
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/24
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/25
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/26
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/27
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/28
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/29
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/30
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/31
+    type: 10gbase-x-sfpp
diff --git a/device-types/Juniper/EX4550-32F-DC-AFO.yaml b/device-types/Juniper/EX4550-32F-DC-AFO.yaml
new file mode 100644
index 00000000..7691279a
--- /dev/null
+++ b/device-types/Juniper/EX4550-32F-DC-AFO.yaml
@@ -0,0 +1,89 @@
+---
+manufacturer: Juniper
+model: EX4550-32F-DC-AFO
+slug: juniper-ex4550-32f-dc-afo
+part_number: EX4550-32F-DC-AFO
+u_height: 1
+weight: 19.4
+weight_unit: lb
+airflow: front-to-rear
+is_full_depth: false
+comments: '[Juniper EX4550 Data Sheet](https://www.juniper.net/assets/br/pt/local/pdf/datasheets/1000414-en.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: PSU 0
+    position: '0'
+  - name: PSU 1
+    position: '1'
+  - name: PIM 1
+    position: '2'
+interfaces:
+  - name: me0
+    type: 1000base-t
+    mgmt_only: true
+  - name: xe-0/0/0
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/1
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/2
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/3
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/4
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/5
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/6
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/7
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/8
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/9
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/10
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/11
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/12
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/13
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/14
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/15
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/16
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/17
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/18
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/19
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/20
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/21
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/22
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/23
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/24
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/25
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/26
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/27
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/28
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/29
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/30
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/31
+    type: 10gbase-x-sfpp
diff --git a/device-types/Juniper/EX4550-32T-AFI.yaml b/device-types/Juniper/EX4550-32T-AFI.yaml
new file mode 100644
index 00000000..2b56e537
--- /dev/null
+++ b/device-types/Juniper/EX4550-32T-AFI.yaml
@@ -0,0 +1,89 @@
+---
+manufacturer: Juniper
+model: EX4550-32T-AFI
+slug: juniper-ex4550-32t-afi
+part_number: EX4550-32T-AFI
+u_height: 1
+weight: 19.4
+weight_unit: lb
+airflow: rear-to-front
+is_full_depth: false
+comments: '[Juniper EX4550 Data Sheet](https://www.juniper.net/assets/br/pt/local/pdf/datasheets/1000414-en.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: PSU 0
+    position: '0'
+  - name: PSU 1
+    position: '1'
+  - name: PIM 1
+    position: '2'
+interfaces:
+  - name: me0
+    type: 1000base-t
+    mgmt_only: true
+  - name: xe-0/0/0
+    type: 10gbase-t
+  - name: xe-0/0/1
+    type: 10gbase-t
+  - name: xe-0/0/2
+    type: 10gbase-t
+  - name: xe-0/0/3
+    type: 10gbase-t
+  - name: xe-0/0/4
+    type: 10gbase-t
+  - name: xe-0/0/5
+    type: 10gbase-t
+  - name: xe-0/0/6
+    type: 10gbase-t
+  - name: xe-0/0/7
+    type: 10gbase-t
+  - name: xe-0/0/8
+    type: 10gbase-t
+  - name: xe-0/0/9
+    type: 10gbase-t
+  - name: xe-0/0/10
+    type: 10gbase-t
+  - name: xe-0/0/11
+    type: 10gbase-t
+  - name: xe-0/0/12
+    type: 10gbase-t
+  - name: xe-0/0/13
+    type: 10gbase-t
+  - name: xe-0/0/14
+    type: 10gbase-t
+  - name: xe-0/0/15
+    type: 10gbase-t
+  - name: xe-0/0/16
+    type: 10gbase-t
+  - name: xe-0/0/17
+    type: 10gbase-t
+  - name: xe-0/0/18
+    type: 10gbase-t
+  - name: xe-0/0/19
+    type: 10gbase-t
+  - name: xe-0/0/20
+    type: 10gbase-t
+  - name: xe-0/0/21
+    type: 10gbase-t
+  - name: xe-0/0/22
+    type: 10gbase-t
+  - name: xe-0/0/23
+    type: 10gbase-t
+  - name: xe-0/0/24
+    type: 10gbase-t
+  - name: xe-0/0/25
+    type: 10gbase-t
+  - name: xe-0/0/26
+    type: 10gbase-t
+  - name: xe-0/0/27
+    type: 10gbase-t
+  - name: xe-0/0/28
+    type: 10gbase-t
+  - name: xe-0/0/29
+    type: 10gbase-t
+  - name: xe-0/0/30
+    type: 10gbase-t
+  - name: xe-0/0/31
+    type: 10gbase-t
diff --git a/device-types/Juniper/EX4550-32T-AFO.yaml b/device-types/Juniper/EX4550-32T-AFO.yaml
new file mode 100644
index 00000000..d40ee9c4
--- /dev/null
+++ b/device-types/Juniper/EX4550-32T-AFO.yaml
@@ -0,0 +1,89 @@
+---
+manufacturer: Juniper
+model: EX4550-32T-AFO
+slug: juniper-ex4550-32t-afo
+part_number: EX4550-32T-AFO
+u_height: 1
+weight: 19.4
+weight_unit: lb
+airflow: front-to-rear
+is_full_depth: false
+comments: '[Juniper EX4550 Data Sheet](https://www.juniper.net/assets/br/pt/local/pdf/datasheets/1000414-en.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: PSU 0
+    position: '0'
+  - name: PSU 1
+    position: '1'
+  - name: PIM 1
+    position: '2'
+interfaces:
+  - name: me0
+    type: 1000base-t
+    mgmt_only: true
+  - name: xe-0/0/0
+    type: 10gbase-t
+  - name: xe-0/0/1
+    type: 10gbase-t
+  - name: xe-0/0/2
+    type: 10gbase-t
+  - name: xe-0/0/3
+    type: 10gbase-t
+  - name: xe-0/0/4
+    type: 10gbase-t
+  - name: xe-0/0/5
+    type: 10gbase-t
+  - name: xe-0/0/6
+    type: 10gbase-t
+  - name: xe-0/0/7
+    type: 10gbase-t
+  - name: xe-0/0/8
+    type: 10gbase-t
+  - name: xe-0/0/9
+    type: 10gbase-t
+  - name: xe-0/0/10
+    type: 10gbase-t
+  - name: xe-0/0/11
+    type: 10gbase-t
+  - name: xe-0/0/12
+    type: 10gbase-t
+  - name: xe-0/0/13
+    type: 10gbase-t
+  - name: xe-0/0/14
+    type: 10gbase-t
+  - name: xe-0/0/15
+    type: 10gbase-t
+  - name: xe-0/0/16
+    type: 10gbase-t
+  - name: xe-0/0/17
+    type: 10gbase-t
+  - name: xe-0/0/18
+    type: 10gbase-t
+  - name: xe-0/0/19
+    type: 10gbase-t
+  - name: xe-0/0/20
+    type: 10gbase-t
+  - name: xe-0/0/21
+    type: 10gbase-t
+  - name: xe-0/0/22
+    type: 10gbase-t
+  - name: xe-0/0/23
+    type: 10gbase-t
+  - name: xe-0/0/24
+    type: 10gbase-t
+  - name: xe-0/0/25
+    type: 10gbase-t
+  - name: xe-0/0/26
+    type: 10gbase-t
+  - name: xe-0/0/27
+    type: 10gbase-t
+  - name: xe-0/0/28
+    type: 10gbase-t
+  - name: xe-0/0/29
+    type: 10gbase-t
+  - name: xe-0/0/30
+    type: 10gbase-t
+  - name: xe-0/0/31
+    type: 10gbase-t
diff --git a/device-types/Juniper/EX4550-32T-DC-AFI.yaml b/device-types/Juniper/EX4550-32T-DC-AFI.yaml
new file mode 100644
index 00000000..0b61aae4
--- /dev/null
+++ b/device-types/Juniper/EX4550-32T-DC-AFI.yaml
@@ -0,0 +1,89 @@
+---
+manufacturer: Juniper
+model: EX4550-32T-DC-AFI
+slug: juniper-ex4550-32t-dc-afi
+part_number: EX4550-32T-DC-AFI
+u_height: 1
+weight: 19.4
+weight_unit: lb
+airflow: rear-to-front
+is_full_depth: false
+comments: '[Juniper EX4550 Data Sheet](https://www.juniper.net/assets/br/pt/local/pdf/datasheets/1000414-en.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: PSU 0
+    position: '0'
+  - name: PSU 1
+    position: '1'
+  - name: PIM 1
+    position: '2'
+interfaces:
+  - name: me0
+    type: 1000base-t
+    mgmt_only: true
+  - name: xe-0/0/0
+    type: 10gbase-t
+  - name: xe-0/0/1
+    type: 10gbase-t
+  - name: xe-0/0/2
+    type: 10gbase-t
+  - name: xe-0/0/3
+    type: 10gbase-t
+  - name: xe-0/0/4
+    type: 10gbase-t
+  - name: xe-0/0/5
+    type: 10gbase-t
+  - name: xe-0/0/6
+    type: 10gbase-t
+  - name: xe-0/0/7
+    type: 10gbase-t
+  - name: xe-0/0/8
+    type: 10gbase-t
+  - name: xe-0/0/9
+    type: 10gbase-t
+  - name: xe-0/0/10
+    type: 10gbase-t
+  - name: xe-0/0/11
+    type: 10gbase-t
+  - name: xe-0/0/12
+    type: 10gbase-t
+  - name: xe-0/0/13
+    type: 10gbase-t
+  - name: xe-0/0/14
+    type: 10gbase-t
+  - name: xe-0/0/15
+    type: 10gbase-t
+  - name: xe-0/0/16
+    type: 10gbase-t
+  - name: xe-0/0/17
+    type: 10gbase-t
+  - name: xe-0/0/18
+    type: 10gbase-t
+  - name: xe-0/0/19
+    type: 10gbase-t
+  - name: xe-0/0/20
+    type: 10gbase-t
+  - name: xe-0/0/21
+    type: 10gbase-t
+  - name: xe-0/0/22
+    type: 10gbase-t
+  - name: xe-0/0/23
+    type: 10gbase-t
+  - name: xe-0/0/24
+    type: 10gbase-t
+  - name: xe-0/0/25
+    type: 10gbase-t
+  - name: xe-0/0/26
+    type: 10gbase-t
+  - name: xe-0/0/27
+    type: 10gbase-t
+  - name: xe-0/0/28
+    type: 10gbase-t
+  - name: xe-0/0/29
+    type: 10gbase-t
+  - name: xe-0/0/30
+    type: 10gbase-t
+  - name: xe-0/0/31
+    type: 10gbase-t
diff --git a/device-types/Juniper/EX4550-32T-DC-AFO.yaml b/device-types/Juniper/EX4550-32T-DC-AFO.yaml
new file mode 100644
index 00000000..15a32b0c
--- /dev/null
+++ b/device-types/Juniper/EX4550-32T-DC-AFO.yaml
@@ -0,0 +1,89 @@
+---
+manufacturer: Juniper
+model: EX4550-32T-DC-AFO
+slug: juniper-ex4550-32t-dc-afo
+part_number: EX4550-32T-DC-AFO
+u_height: 1
+weight: 19.4
+weight_unit: lb
+airflow: front-to-rear
+is_full_depth: false
+comments: '[Juniper EX4550 Data Sheet](https://www.juniper.net/assets/br/pt/local/pdf/datasheets/1000414-en.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: PSU 0
+    position: '0'
+  - name: PSU 1
+    position: '1'
+  - name: PIM 1
+    position: '2'
+interfaces:
+  - name: me0
+    type: 1000base-t
+    mgmt_only: true
+  - name: xe-0/0/0
+    type: 10gbase-t
+  - name: xe-0/0/1
+    type: 10gbase-t
+  - name: xe-0/0/2
+    type: 10gbase-t
+  - name: xe-0/0/3
+    type: 10gbase-t
+  - name: xe-0/0/4
+    type: 10gbase-t
+  - name: xe-0/0/5
+    type: 10gbase-t
+  - name: xe-0/0/6
+    type: 10gbase-t
+  - name: xe-0/0/7
+    type: 10gbase-t
+  - name: xe-0/0/8
+    type: 10gbase-t
+  - name: xe-0/0/9
+    type: 10gbase-t
+  - name: xe-0/0/10
+    type: 10gbase-t
+  - name: xe-0/0/11
+    type: 10gbase-t
+  - name: xe-0/0/12
+    type: 10gbase-t
+  - name: xe-0/0/13
+    type: 10gbase-t
+  - name: xe-0/0/14
+    type: 10gbase-t
+  - name: xe-0/0/15
+    type: 10gbase-t
+  - name: xe-0/0/16
+    type: 10gbase-t
+  - name: xe-0/0/17
+    type: 10gbase-t
+  - name: xe-0/0/18
+    type: 10gbase-t
+  - name: xe-0/0/19
+    type: 10gbase-t
+  - name: xe-0/0/20
+    type: 10gbase-t
+  - name: xe-0/0/21
+    type: 10gbase-t
+  - name: xe-0/0/22
+    type: 10gbase-t
+  - name: xe-0/0/23
+    type: 10gbase-t
+  - name: xe-0/0/24
+    type: 10gbase-t
+  - name: xe-0/0/25
+    type: 10gbase-t
+  - name: xe-0/0/26
+    type: 10gbase-t
+  - name: xe-0/0/27
+    type: 10gbase-t
+  - name: xe-0/0/28
+    type: 10gbase-t
+  - name: xe-0/0/29
+    type: 10gbase-t
+  - name: xe-0/0/30
+    type: 10gbase-t
+  - name: xe-0/0/31
+    type: 10gbase-t
diff --git a/module-types/Juniper/EX4550-EM-2QSFP.yaml b/module-types/Juniper/EX4550-EM-2QSFP.yaml
new file mode 100644
index 00000000..a7a9045e
--- /dev/null
+++ b/module-types/Juniper/EX4550-EM-2QSFP.yaml
@@ -0,0 +1,9 @@
+---
+manufacturer: Juniper
+model: EX4550-EM-2QSFP
+part_number: EX4550-EM-2QSFP
+interfaces:
+  - name: et-0/1/0
+    type: 40gbase-x-qsfpp
+  - name: et-0/1/1
+    type: 40gbase-x-qsfpp
diff --git a/module-types/Juniper/EX4550-EM-8XSFP.yaml b/module-types/Juniper/EX4550-EM-8XSFP.yaml
new file mode 100644
index 00000000..274b7a5f
--- /dev/null
+++ b/module-types/Juniper/EX4550-EM-8XSFP.yaml
@@ -0,0 +1,21 @@
+---
+manufacturer: Juniper
+model: EX4550-EM-8XSFP
+part_number: EX4550-EM-8XSFP
+interfaces:
+  - name: xe-0/1/0
+    type: 10gbase-x-sfpp
+  - name: xe-0/1/1
+    type: 10gbase-x-sfpp
+  - name: xe-0/1/2
+    type: 10gbase-x-sfpp
+  - name: xe-0/1/3
+    type: 10gbase-x-sfpp
+  - name: xe-0/1/4
+    type: 10gbase-x-sfpp
+  - name: xe-0/1/5
+    type: 10gbase-x-sfpp
+  - name: xe-0/1/6
+    type: 10gbase-x-sfpp
+  - name: xe-0/1/7
+    type: 10gbase-x-sfpp
diff --git a/module-types/Juniper/EX4550-EM-8XT.yaml b/module-types/Juniper/EX4550-EM-8XT.yaml
new file mode 100644
index 00000000..c1a6aa92
--- /dev/null
+++ b/module-types/Juniper/EX4550-EM-8XT.yaml
@@ -0,0 +1,21 @@
+---
+manufacturer: Juniper
+model: EX4550-EM-8XT
+part_number: EX4550-EM-8XT
+interfaces:
+  - name: xe-0/1/0
+    type: 10gbase-t
+  - name: xe-0/1/1
+    type: 10gbase-t
+  - name: xe-0/1/2
+    type: 10gbase-t
+  - name: xe-0/1/3
+    type: 10gbase-t
+  - name: xe-0/1/4
+    type: 10gbase-t
+  - name: xe-0/1/5
+    type: 10gbase-t
+  - name: xe-0/1/6
+    type: 10gbase-t
+  - name: xe-0/1/7
+    type: 10gbase-t
-- 
GitLab