diff --git a/html/images/logos/seagate.svg b/html/images/logos/seagate.svg
new file mode 100644
index 000000000000..f0dac5677a6a
--- /dev/null
+++ b/html/images/logos/seagate.svg
@@ -0,0 +1 @@
+
diff --git a/html/images/os/seagate.svg b/html/images/os/seagate.svg
new file mode 100644
index 000000000000..a13874725bf8
--- /dev/null
+++ b/html/images/os/seagate.svg
@@ -0,0 +1 @@
+
diff --git a/includes/definitions/discovery/exos.yaml b/includes/definitions/discovery/exos.yaml
new file mode 100644
index 000000000000..45ef0c173d79
--- /dev/null
+++ b/includes/definitions/discovery/exos.yaml
@@ -0,0 +1,56 @@
+mib: FCMGMT-MIB
+modules:
+ os:
+ hardware: connUnitProduct
+ serial: connUnitSn
+ sensors:
+ state:
+ data:
+ -
+ oid: connUnitState
+ value: connUnitState
+ num_oid: '.1.3.6.1.3.94.1.6.1.5.{{ $index }}'
+ descr: 'Connectivity Unit State'
+ index: 'connUnitState.{{ $index }}'
+ state_name: connUnitState
+ states:
+ - { value: 2, generic: 0, graph: 0, descr: Online }
+ - { value: 3, generic: 2, graph: 0, descr: Offline }
+ - { value: 1, generic: 3, graph: 0, descr: none }
+ -
+ oid: connUnitStatus
+ value: connUnitStatus
+ num_oid: '.1.3.6.1.3.94.1.6.1.6.{{ $index }}'
+ descr: 'Connectivity Unit Status'
+ index: 'connUnitStatus.{{ $index }}'
+ state_name: connUnitStatus
+ states:
+ - { value: 1, generic: 3, graph: 0, descr: none }
+ - { value: 2, generic: 3, graph: 0, descr: Unused }
+ - { value: 3, generic: 0, graph: 0, descr: Ok }
+ - { value: 4, generic: 1, graph: 0, descr: Warning }
+ - { value: 5, generic: 2, graph: 0, descr: Failed }
+ -
+ oid: connUnitPrincipal
+ value: connUnitPrincipal
+ num_oid: '.1.3.6.1.3.94.1.6.1.13.{{ $index }}'
+ descr: 'Principal Unit'
+ index: 'connUnitPrincipal.{{ $index }}'
+ state_name: connUnitPrincipal
+ states:
+ - { value: 1, generic: 3, graph: 0, descr: Unknown }
+ - { value: 2, generic: 0, graph: 0, descr: No }
+ - { value: 3, generic: 0, graph: 0, descr: Yes }
+ -
+ oid: connUnitSensorTable
+ value: connUnitSensorStatus
+ num_oid: '.1.3.6.1.3.94.1.8.1.4.{{ $index }}'
+ descr: '{{ $connUnitSensorName }}'
+ index: 'connUnitSensorName.{{ $index }}'
+ state_name: connUnitSensorName
+ states:
+ - { value: 1, generic: 3, graph: 0, descr: Unknown }
+ - { value: 2, generic: 3, graph: 0, descr: Other }
+ - { value: 3, generic: 0, graph: 0, descr: Ok }
+ - { value: 4, generic: 1, graph: 0, descr: Warning }
+ - { value: 5, generic: 2, graph: 0, descr: Failed }
diff --git a/includes/definitions/exos.yaml b/includes/definitions/exos.yaml
new file mode 100644
index 000000000000..38e8628f5113
--- /dev/null
+++ b/includes/definitions/exos.yaml
@@ -0,0 +1,12 @@
+os: exos
+text: Exos
+type: storage
+icon: seagate
+over:
+ - { graph: device_bits, text: 'Device Traffic' }
+ - { graph: device_temperature, text: 'Temperature' }
+ - { graph: device_current, text: 'Current' }
+discovery:
+ -
+ sysObjectID:
+ - .1.3.6.1.4.1.347.2.5730
diff --git a/includes/discovery/sensors/current/exos.inc.php b/includes/discovery/sensors/current/exos.inc.php
new file mode 100644
index 000000000000..ae3d565f3842
--- /dev/null
+++ b/includes/discovery/sensors/current/exos.inc.php
@@ -0,0 +1,12 @@
+ $entry) {
+ if (preg_match('/Current.* ([: 0-9\.]+A)/', $entry['connUnitSensorMessage'], $temp_value)) {
+ $value = str_replace('A', '', $temp_value[1]);
+ discover_sensor($valid['sensor'], 'current', $device, ".1.3.6.1.3.94.1.8.1.6.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.{$entry['connUnitSensorIndex']}", $entry['connUnitSensorIndex'], 'exos', $entry['connUnitSensorName'], 1, '1', null, null, null, null, $value);
+ }
+ }
+}
diff --git a/includes/discovery/sensors/pre-cache/exos.inc.php b/includes/discovery/sensors/pre-cache/exos.inc.php
new file mode 100644
index 000000000000..4e7e54c46a74
--- /dev/null
+++ b/includes/discovery/sensors/pre-cache/exos.inc.php
@@ -0,0 +1,4 @@
+ $entry) {
+ if (preg_match('/ Temp.* ([: 0-9]+ C)/', $entry['connUnitSensorMessage'], $temp_value)) {
+ [$value, $dump] = explode(' ', $temp_value[1]);
+ discover_sensor($valid['sensor'], 'temperature', $device, ".1.3.6.1.3.94.1.8.1.6.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.{$entry['connUnitSensorIndex']}", $entry['connUnitSensorIndex'], 'exos', $entry['connUnitSensorName'], 1, '1', null, null, null, null, $value);
+ }
+ }
+}
diff --git a/includes/discovery/sensors/voltage/exos.inc.php b/includes/discovery/sensors/voltage/exos.inc.php
new file mode 100644
index 000000000000..1fafb1e9f10b
--- /dev/null
+++ b/includes/discovery/sensors/voltage/exos.inc.php
@@ -0,0 +1,12 @@
+ $entry) {
+ if (preg_match('/Voltage.* ([: 0-9\.]+V)/', $entry['connUnitSensorMessage'], $temp_value)) {
+ $value = str_replace('V', '', $temp_value[1]);
+ discover_sensor($valid['sensor'], 'voltage', $device, ".1.3.6.1.3.94.1.8.1.6.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.{$entry['connUnitSensorIndex']}", $entry['connUnitSensorIndex'], 'exos', $entry['connUnitSensorName'], 1, '1', null, null, null, null, $value);
+ }
+ }
+}
diff --git a/includes/polling/sensors/current/exos.inc.php b/includes/polling/sensors/current/exos.inc.php
new file mode 100644
index 000000000000..0af1bdfe2c66
--- /dev/null
+++ b/includes/polling/sensors/current/exos.inc.php
@@ -0,0 +1,4 @@
+