diff options
Diffstat (limited to 'ui/include/classes/import/converters/C62ImportConverter.php')
-rw-r--r-- | ui/include/classes/import/converters/C62ImportConverter.php | 123 |
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; + } } |