]> granicus.if.org Git - icinga2/commitdiff
Config Conversion: Add proper check_command detection in templates.
authorMichael Friedrich <michael.friedrich@netways.de>
Mon, 16 Sep 2013 12:05:41 +0000 (14:05 +0200)
committerMichael Friedrich <michael.friedrich@netways.de>
Mon, 16 Sep 2013 12:05:41 +0000 (14:05 +0200)
tools/configconvert/Icinga2/Convert.pm

index 7654a20214a282cd4ae7de623a22bc83946d6057..69408a53b098645e743f420b4d1c6352d7f962ec 100644 (file)
@@ -1051,19 +1051,30 @@ sub convert_checkcommand {
     my $cfg_obj_1x = shift;
     my $commands_1x = shift;
     my $obj_1x = shift; #host or service
+    my $service_hostname = shift;
     my $global_macros_1x = shift;
 
     my $command_1x;
     my $command_2x = {};
+    my $check_command;
     #say Dumper($commands_1x);
     #say Dumper($obj_1x);
 
-    # ignore objects without check_command (may defined in template!)
-    return if (!defined($obj_1x->{'check_command'}));
+    # objects without check_command may have it defined in template!
+    if (!defined($obj_1x->{'check_command'})) {
+        # service
+        if (defined($obj_1x->{'__I2CONVERT_SERVICEDESCRIPTION'})) {
+            $check_command = obj_1x_get_service_attr($cfg_obj_1x, $obj_1x, $service_hostname, 'check_command');
+        } else {
+            $check_command = obj_1x_get_host_attr($cfg_obj_1x, $obj_1x, $service_hostname, 'check_command');
+        }
+    } else {
+        $check_command = $obj_1x->{'check_command'};
+    }
 
     #debug("check_command: $obj_1x->{'check_command'}" );
     # split by ! and take only the check command
-    my ($real_command_name_1x, @command_args_1x) = split /!/, $obj_1x->{'check_command'};
+    my ($real_command_name_1x, @command_args_1x) = split /!/, $check_command;
 
     # ignore objects with empty check_command attribute
     #return if (!defined($real_command_name_1x));
@@ -1333,7 +1344,7 @@ sub convert_2x {
             ##########################################
             # map the service check_command to 2.x
             ##########################################
-            my ($service_check_command_2x, @command_args_1x) = Icinga2::Convert::convert_checkcommand($cfg_obj_1x, @$cfg_obj_1x{'command'}, $obj_1x_service, $global_macros_1x);
+            my ($service_check_command_2x, @command_args_1x) = Icinga2::Convert::convert_checkcommand($cfg_obj_1x, @$cfg_obj_1x{'command'}, $obj_1x_service, $service_host_name, $global_macros_1x);
 
             #say Dumper($service_check_command_2x);
 
@@ -1560,7 +1571,7 @@ sub convert_2x {
         #   and link that service
         ####################################################
 
-        my ($host_check_command_2x, @command_args_1x) = Icinga2::Convert::convert_checkcommand($cfg_obj_1x, @$cfg_obj_1x{'command'}, $obj_1x_host, $global_macros_1x);
+        my ($host_check_command_2x, @command_args_1x) = Icinga2::Convert::convert_checkcommand($cfg_obj_1x, @$cfg_obj_1x{'command'}, $obj_1x_host, $obj_1x_host->{'__I2CONVERT_HOSTNAME'}, $global_macros_1x);
         #say Dumper($host_check_command_2x);
 
         if(defined($host_check_command_2x->{'check_command_name_1x'})) {
@@ -2686,8 +2697,8 @@ sub convert_2x {
                 ######################################
                 # LINK HOST COMMAND WITH SERVICE CHECK
                 ######################################
-                my ($service_check_command_2x, @service_command_args_1x) = Icinga2::Convert::convert_checkcommand($cfg_obj_1x, @$cfg_obj_1x{'command'}, $obj_2x_service, $global_macros_1x);
-                my ($host_check_command_2x, @host_command_args_1x) = Icinga2::Convert::convert_checkcommand($cfg_obj_1x, @$cfg_obj_1x{'command'}, $obj_2x_host, $global_macros_1x);
+                my ($service_check_command_2x, @service_command_args_1x) = Icinga2::Convert::convert_checkcommand($cfg_obj_1x, @$cfg_obj_1x{'command'}, $obj_2x_service, $obj_2x_service_host_name, $global_macros_1x);
+                my ($host_check_command_2x, @host_command_args_1x) = Icinga2::Convert::convert_checkcommand($cfg_obj_1x, @$cfg_obj_1x{'command'}, $obj_2x_host, $obj_2x_service_host_name, $global_macros_1x);
                 #say Dumper($host_check_command_2x);
 
                 # check if this service check is a possible match for __I2CONVERT_HOST_CHECK?