Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/zabbix/zabbix.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'ui/include/classes/import/converters/C62ImportConverter.php')
-rw-r--r--ui/include/classes/import/converters/C62ImportConverter.php123
1 files changed, 123 insertions, 0 deletions
diff --git a/ui/include/classes/import/converters/C62ImportConverter.php b/ui/include/classes/import/converters/C62ImportConverter.php
index 9d236322a7d..19bb2ccf11d 100644
--- a/ui/include/classes/import/converters/C62ImportConverter.php
+++ b/ui/include/classes/import/converters/C62ImportConverter.php
@@ -24,6 +24,15 @@
*/
class C62ImportConverter extends CConverter {
+ private const DASHBOARD_WIDGET_TYPE = [
+ CXmlConstantName::DASHBOARD_WIDGET_TYPE_CLOCK => CXmlConstantValue::DASHBOARD_WIDGET_TYPE_CLOCK,
+ CXmlConstantName::DASHBOARD_WIDGET_TYPE_GRAPH_CLASSIC => CXmlConstantValue::DASHBOARD_WIDGET_TYPE_GRAPH_CLASSIC,
+ CXmlConstantName::DASHBOARD_WIDGET_TYPE_GRAPH_PROTOTYPE => CXmlConstantValue::DASHBOARD_WIDGET_TYPE_GRAPH_PROTOTYPE,
+ CXmlConstantName::DASHBOARD_WIDGET_TYPE_ITEM => CXmlConstantValue::DASHBOARD_WIDGET_TYPE_ITEM,
+ CXmlConstantName::DASHBOARD_WIDGET_TYPE_PLAIN_TEXT => CXmlConstantValue::DASHBOARD_WIDGET_TYPE_PLAIN_TEXT,
+ CXmlConstantName::DASHBOARD_WIDGET_TYPE_URL => CXmlConstantValue::DASHBOARD_WIDGET_TYPE_URL
+ ];
+
/**
* Convert import data from 6.2 to 6.4 version.
*
@@ -34,6 +43,120 @@ class C62ImportConverter extends CConverter {
public function convert(array $data): array {
$data['zabbix_export']['version'] = '6.4';
+ if (array_key_exists('hosts', $data['zabbix_export'])) {
+ $data['zabbix_export']['hosts'] = self::convertHosts($data['zabbix_export']['hosts']);
+ }
+
+ if (array_key_exists('templates', $data['zabbix_export'])) {
+ $data['zabbix_export']['templates'] = self::convertTemplates($data['zabbix_export']['templates']);
+ }
+
return $data;
}
+
+ /**
+ * Convert hosts.
+ *
+ * @param array $hosts
+ *
+ * @return array
+ */
+ private static function convertHosts(array $hosts): array {
+ foreach ($hosts as &$host) {
+ if (array_key_exists('discovery_rules', $host)) {
+ $host['discovery_rules'] = self::convertDiscoveryRules($host['discovery_rules']);
+ }
+ }
+ unset($host);
+
+ return $hosts;
+ }
+
+ /**
+ * Convert templates.
+ *
+ * @param array $templates
+ *
+ * @return array
+ */
+ private static function convertTemplates(array $templates): array {
+ foreach ($templates as &$template) {
+ if (array_key_exists('discovery_rules', $template)) {
+ $template['discovery_rules'] = self::convertDiscoveryRules($template['discovery_rules']);
+ }
+
+ if (array_key_exists('dashboards', $template)) {
+ $template['dashboards'] = self::convertDashboards($template['dashboards']);
+ }
+ }
+ unset($template);
+
+ return $templates;
+ }
+
+ /**
+ * Convert discovery rules.
+ *
+ * @param array $discovery_rules
+ *
+ * @return array
+ */
+ private static function convertDiscoveryRules(array $discovery_rules): array {
+ foreach ($discovery_rules as &$discovery_rule) {
+ if (array_key_exists('item_prototypes', $discovery_rule)) {
+ $discovery_rule['item_prototypes'] = self::convertItemPrototypes($discovery_rule['item_prototypes']);
+ }
+ }
+ unset($discovery_rule);
+
+ return $discovery_rules;
+ }
+
+ /**
+ * Convert item prototypes.
+ *
+ * @param array $item_prototypes
+ *
+ * @return array
+ */
+ private static function convertItemPrototypes(array $item_prototypes): array {
+ foreach ($item_prototypes as &$item_prototype) {
+ if (array_key_exists('inventory_link', $item_prototype)) {
+ unset($item_prototype['inventory_link']);
+ }
+ }
+ unset($item_prototype);
+
+ return $item_prototypes;
+ }
+
+ /**
+ * Convert dashboards.
+ *
+ * @param array $dashboards
+ *
+ * @return array
+ */
+ private static function convertDashboards(array $dashboards): array {
+ foreach ($dashboards as &$dashboard) {
+ if (!array_key_exists('pages', $dashboard)) {
+ continue;
+ }
+
+ foreach ($dashboard['pages'] as &$dashboard_page) {
+ if (!array_key_exists('widgets', $dashboard_page)) {
+ continue;
+ }
+
+ foreach ($dashboard_page['widgets'] as &$widget) {
+ $widget['type'] = self::DASHBOARD_WIDGET_TYPE[$widget['type']];
+ }
+ unset($widget);
+ }
+ unset($dashboard_page);
+ }
+ unset($dashboard);
+
+ return $dashboards;
+ }
}